آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

بررسی برخورد دو ImageView متحرک و انیمیشن دار

mohsen  9 سال پیش  9 سال پیش
0 0

با سلام و خسته نباشید خدمت دوستان.بنده در حال انجام یک پروژه بازی ساده هستم.که در این بازی یک هواپیما که از جنس ImageView هست در پایین صفحه قرار دارد و با کلیک شدن دو دکمه هواپیما با   TranslateAnimation  به سمت چپ و راست میرود.و از بالای صفحه موشک هایی که از جنس ImageView هستند یکی یکی با انیمیشن TranslateAnimation به صفحه اضافه شده و از پایین صفحه خارج و پاک میشوند.میخاستم ببینم چطور باید برخورد هر موشک با هواپیما رو بررسی کنم؟یا اگر دوستان canvas رو برای این کار ترجیح بدن لطفا کامل راهنمایی کنند که چطور باید بنویسم؟کد زیر کلاسهای بازی هستند

 class Airplane {
    Anim anim=new Anim();
    public void setCurrentLocationX(float loc){
        currentLocationX=loc;
    }
    public float getLocationX(){
        return currentLocationX;
    }
    
    public void rightMove(ImageView image){
        float to_location;
        float from_location=currentLocationX;
        if(currentLocationX+30>Game.screen_width/2-50){
            to_location=Game.screen_width/2-50;
        }else{
            to_location=currentLocationX+30;
        }
        setCurrentLocationX(to_location);
        image.startAnimation(anim.translation(from_location, to_location,0,0,40));
    }
    
    public void leftMove(ImageView image){
        float to_location;
        float from_location=currentLocationX;
        if(currentLocationX-30<-(Game.screen_width/2-50)){
            to_location=-(Game.screen_width/2-50);
        }else{
            to_location=currentLocationX-30;
        }
        setCurrentLocationX(to_location);
        image.startAnimation(anim.translation(from_location, to_location,0,0,40));
    }
      
        
    private float currentLocationX=0.0f;
}





class Missile {
    Anim anim=new Anim();
    Airplane airplane=new Airplane();
    public void shootingMissile(final LinearLayout missile_layout,final Context context){
            final Handler handler = new Handler();
            Runnable runnable = new Runnable() {
                public void run() {
                    missile_layout.addView(makeMissile(context),0);
                    if(missile_layout.getChildCount()>4){
                        missile_layout.removeViewAt(2);
                    }
                 if (!stop_missile_shooting) {
                  handler.postDelayed(this, 2000);
                 }
                }
               };

               handler.post(runnable);
    }
    
    public  ImageView makeMissile(Context context){
        int Xrandom;
        ImageView image = new ImageView(context);
        image.setImageResource(R.drawable.missile);
        Xrandom=(int) (Math.random()*(Game.screen_width-80));
        Xrandom-=((Game.screen_width-Game.screen_width/2-40));
        image.startAnimation(anim.translation(Xrandom, Xrandom, -(Game.screen_height/2)-200, (Game.screen_height/2)+200,12000));
        
        return image;
    }
    
    public boolean stop_missile_shooting=false;
    
    
}




class Anim{
    public TranslateAnimation translation(float from_locX,float to_locX,float from_locY,float to_locY,long duration){
        TranslateAnimation animation = new TranslateAnimation(from_locX, to_locX,from_locY, to_locY);          
        animation.setDuration( duration);   
        animation.setFillAfter(true);
        return animation;
    }
    
    
}
+1 0
پیشنهاد میکنم کلا ادامه پروژه رو انجام ندید ، و از این استفاده کنید : لینک (9 سال پیش)
0 0
در مورد انیمیشن ها شاید جالب باشه این رو بدونیم که View ها در انیمیشن واقعا حرکت نمیکنند و سرجاشون ثابت هستند و اون انیمیشن ها فقط در ظاهر یک افکت خالی هستند شما میتونید ویدئو رو انیمیشن کنید از بالای صفحه به سمت پایین و دقیقا زمانی که View جای خودش نیست با کلیک کردن روی مکانی که بوده میبینیدکه واقعا داره کلیک میشه (9 سال پیش)
0 0
سلام. به نظر من بهتره از محدوده مکانی اجسام یا همون position اجسام استفاده کنید و چک کنید اگ هر دو در یک محدوده خاص بودن به هم برخورد کردند ... (9 سال پیش)
+1 0
برای حرکت موشک ها از set x و set y استفاده کنید البته با استفاده از ترد توی هر حرکتی که موشکها انجام میدن همون لحظه چک کنید ببینید اگه x و y هواپیما و موشک برابر بود .... کار سختی نیست یکم باید خلاقیت به خرج بدید و فرمول بنویسید اکه از کنوس استفاده کنید که بهتره (9 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .