android工作室游戏开发

时间:2017-03-02 06:26:56

标签: java android android-studio

我正在制作游戏。在游戏中,下面列出了一个名为movement()的方法,可以向下移动一个圆圈。一旦圆圈tbc的y值大于yc的y值,我希望游戏运行gamelost()方法。所以基本上一旦tbc从手机屏幕的顶部落到yc之后,游戏就会运行gamelost()方法。

我尝试在move()之后将if语句放在main方法中;甚至在运动()方法中,对于这两个游戏都没有说游戏结束......相反,圆圈刚好从屏幕顶部下方到底部消失。我做错什么了吗。有人可以帮帮我吗?

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
        onCreateNew();
    play.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            onPlayClick();
            getColor();
            movement();
        }
    });




protected void movement(){

    final int delay = delay();

    h.postDelayed(new Runnable() {
        public void run() {
            tgc.setY(tgc.getY() + 8);
            tbc.setY(tbc.getY() + 8);
            trc.setY(trc.getY() + 8);
            tyc.setY(tyc.getY() + 8);

            h.postDelayed(this, delay);
        }
    },delay);

    if (tbc.getY() > yc.getY()){
        gameLost();
    } }
    }

1 个答案:

答案 0 :(得分:1)

欢迎使用异步编程。

PostDelayed正在启动异步线程。因此,检查gameLost的代码应该在新的Runnable

protected void movement(){

    final int delay = delay();

    h.postDelayed(new Runnable() {
        public void run() {
            tgc.setY(tgc.getY() + 8);
            tbc.setY(tbc.getY() + 8);
            trc.setY(trc.getY() + 8);
            tyc.setY(tyc.getY() + 8);

            if (tbc.getY() > yc.getY()){
                 gameLost();
            }
            h.postDelayed(this, delay);
        }
    },delay);

    }
    }