1

私はしばらくの間、アプリを次のクラス「GameOver.class」に移動させようとしています。誰かが私が間違っていることを指摘できますか?私のログによると、OnAnimationEndメソッドはヒットしていません。クラスGameOverは、メインクラスとして使用すると機能します。

public class Rocky extends Activity implements AnimationListener {

TextView m_dog, m_spoon, m_ice_cream, m_car, m_giraffe ;
ImageView rocky_pic, dog, spoon,ice_cream, car, giraffe;
Animation animationFadeOut, animationFadeIn,viewObjFades;
int count = 0;
MediaPlayer mp;
private static final String TAG = "MyActivity";
AlertDialog.Builder builder;
AlertDialog alertDialog;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.rocky);

    rocky_pic = (ImageView)findViewById(R.id.rocky_pic);


    Animation animationFadeIn = AnimationUtils.loadAnimation(this, R.anim.fadein);
    rocky_pic.startAnimation(animationFadeIn);

    m_car=(TextView) findViewById(R.id.m_car);
    m_dog=(TextView) findViewById(R.id.m_dog);
    m_spoon=(TextView) findViewById(R.id.m_spoon);
    m_ice_cream=(TextView) findViewById(R.id.m_ice_cream);
    m_giraffe=(TextView) findViewById(R.id.m_giraffe);

    dog = (ImageView) findViewById(R.id.dog);
    spoon = (ImageView) findViewById(R.id.spoon);
    ice_cream = (ImageView) findViewById(R.id.ice_cream);
    car = (ImageView) findViewById(R.id.car);
    giraffe  = (ImageView) findViewById(R.id.giraffe);

    mp = MediaPlayer.create(Rocky.this, R.raw.ding); 
    dog.setAlpha(0);
    spoon.setAlpha(0);
    ice_cream.setAlpha(0);
    car.setAlpha(0);
    giraffe.setAlpha(0);

}



@Override
public void onStart() {
    super.onStart();

    LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
    View layout = inflater.inflate(R.layout.custom_dialog,
                                   (ViewGroup) findViewById(R.id.layout_root));

    TextView text = (TextView) layout.findViewById(R.id.text);

    text.setText("Text.text.text");

    builder = new AlertDialog.Builder(this);
    builder.setView(layout);
    alertDialog = builder.create();
    alertDialog.show();

    text.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            alertDialog.dismiss();

        }
    });



    alertDialog.setCanceledOnTouchOutside(true);


    ice_cream.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v)
        {
            ice_cream.setAlpha(200);  
            count ++;
            mp.start();     
            ice_cream.setClickable(false);
            if (count==5){

                fadeout();
            }
        }
    });


    dog.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v)
        {
            dog.setAlpha(200);  
            count ++;
            mp.start();     
            dog.setClickable(false);
            if (count==5){

                fadeout();
            }
        }
    });


    giraffe.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v)
        {
            giraffe.setAlpha(200);  
            count ++;
            mp.start();     
            giraffe.setClickable(false);
            if (count==5){

                fadeout();
            }
        }
    });

    spoon.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v)
        {
            spoon.setAlpha(200);
            count ++;
            mp.start();
            spoon.setClickable(false);
            if (count==5){

                fadeout();
            }
        }
    });     

    car.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v)
        {
            car.setAlpha(200);
            count ++;
            mp.start(); 
            car.setClickable(false);
            if (count==5){

                fadeout();
            }
        }
    });


}



public void fadeout(){


    animationFadeOut = AnimationUtils.loadAnimation(this, R.anim.fadeout);
    animationFadeOut.setAnimationListener(this);

    viewObjFades= AnimationUtils.loadAnimation(this, R.anim.trns4view_fadeout);



    car.startAnimation(viewObjFades);
    giraffe.setAnimation(viewObjFades);
    spoon.setAnimation(viewObjFades);
    dog.setAnimation(viewObjFades);
    ice_cream.setAnimation(viewObjFades);


    rocky_pic.startAnimation(animationFadeOut);

    car.setVisibility(View.GONE);
    giraffe.setVisibility(View.GONE);
    spoon.setVisibility(View.GONE);
    dog.setVisibility(View.GONE);
    ice_cream.setVisibility(View.GONE);
    rocky_pic.setVisibility(View.GONE);

}


@Override
public void onAnimationEnd(Animation animation) {
    mp.release();
    Log.v(TAG, "player released");

    Intent end = new Intent(this, GameOver.class);
    Log.v(TAG, "end object created");
    end.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    Log.v(TAG, "no anim");
    end.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    Log.v(TAG, "sing t");
    this.startActivity(end);    
    Log.v(TAG, "begin game over");
}




@Override
public void onAnimationRepeat(Animation animation) {

}

@Override
public void onAnimationStart(Animation animation) {

}


@Override
public boolean onCreateOptionsMenu(Menu menu){
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.rcky_menu, menu);
    return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu){


    if(!dog.isClickable()){
        menu.removeItem(R.id.m_dog);
    }
    if(!spoon.isClickable()){
        menu.removeItem(R.id.m_spoon);  
    }

    if(!ice_cream.isClickable()){
        menu.removeItem(R.id.m_ice_cream);
    }

    if(!car.isClickable()){
        menu.removeItem(R.id.m_car);
    }

    if(!giraffe.isClickable()){
        menu.removeItem(R.id.m_giraffe);
    }

    return true;
}
@Override
public void onBackPressed(){

}

}

4

2 に答える 2

0

「next()」というメソッド呼び出しを書き、「fadeout()」を取り出しました。現在は機能していますが、理由はわかりません。誰か説明してくれませんか?

public void next(){
    mp.release();
    Intent done = new Intent(this, GameOver.class);
    done.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    done.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    this.startActivity(done);
}
于 2012-06-29T02:02:09.000 に答える
0

アニメーションを開始するとすぐに、rocky_pic の可視性を Gone に設定しています。フェードアウト アニメーションなので、アニメーションが終了しても消えるように、単純にアニメーションを fill_after に設定するべきではありませんか? 消えたように設定すると、アニメーションが完全に停止する可能性があるため、アニメーションが効果的にキャンセルされるため、 onAnimationEnd が呼び出されないため、可視性を変更してビューを効果的に無効にします。

于 2012-06-29T02:16:45.203 に答える