我试图做一个
android游戏.
我有一个扩展活动并处理所有用户输入的游戏类.然后我有一个taskView类来扩展视图,并绘制屏幕上的级别.
当用户点击门时,我想添加一些动画.
会发生什么事情:游戏调用door.open.改变状态,所以view.onDraw函数会把门打开一半.游戏调用view.invalidate,它应该重画屏幕.然后游戏睡了半秒钟.然后再打电话给door.open.第二次调用这个函数会改变状态,所以view.onDraw函数把门完全打开.然后游戏调用view.invalidate再次.
问题是,当它获取到view.invalidate时,它不会重绘屏幕.如果我在线上设置了一个断点并运行调试器,然后单击其中的步骤就不会进入我的view.onDraw函数.它甚至不能显示我正在执行的代码.
我所拥有的是
门课:
public boolean open()
{
if (doorState == DoorState.Closed)
{
doorState = DoorState.Opening;
return true;
}
else if (doorState == DoorState.Opening)
{
doorState = doorState.Open;
return true;
}
else
{
return false;
}
}
游戏类:
if (tile instanceof DoorTile)
{
DoorTile doorTile = (DoorTile) tile;
Door door = doorTile.getDoor();
if (door.isClosed())
{
door.open();
selectedEntity.openDoor();
view.invalidate(); // This line does not work
try
{
Thread.sleep(500);
}
catch (InterruptedException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
door.open();
// Handled touch event so break switch statement
break;
}
}