有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 安卓 studio游戏开发

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

我尝试在movement()之后将if语句放在main方法中;即使在movement()方法中,因为这两个游戏都没有说游戏结束。。。相反,圆圈只是从屏幕顶部下降到底部,然后消失。我做错什么了吗。有人能帮我吗

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) 个答案

  1. # 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);
    
        }
        }