如果在runnable函数中不起作用

时间:2014-04-22 07:58:34

标签: android andengine runnable

我将展示得分。 isCollides是一个检查碰撞的函数。

if(isCollides(prize, splash))

在其他功能中运行良好但在运行功能不起作用。

  private Runnable Scoring =new Runnable() {

   @Override
   public void run() {
        // TODO Auto-generated method stub
        try {

        if(isCollides(prize, splash))
        {
            score++;
            p.setText(":"+score);

        }               

    }
    catch (Exception e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

     mHandler.postDelayed(mStartVamp, 3000);

}
      };


              public boolean isCollides(Sprite Sprite1 ,Sprite Sprite2) throws Exception
                {
            float diffX = Math.abs( (Sprite1.getX() +  Sprite1.getWidth()/2 )- 
                         (Sprite2.getX() + Sprite2.getWidth()/2 ));
            float diffY = Math.abs( (Sprite1.getY() +  Sprite1.getHeight()/2 )- 
                         (Sprite2.getY() + Sprite2.getHeight()/2 ));

            if(diffX < (Sprite1.getWidth()/2 + Sprite2.getWidth()/3) 
                       && diffY < (Sprite1.getHeight()/2 + Sprite2.getHeight()/3))
            {

               return true;
            }
            else{
              return false;
            }

        }

1 个答案:

答案 0 :(得分:0)

您对AndEngine实体所做的任何更改都需要在AndEngine UpdateThread上进行 - 因此您对p.setText()的调用应该包含在runOnUpdateThread()调用中 - 请参阅此主题以了解如何 - {{3} }