相关疑难解决方法(0)

为什么view.invalidate不能立即重绘我的安卓游戏中的屏幕

我正在尝试制作一款安卓游戏.

我有一个扩展活动并处理所有用户输入的游戏类.然后我有一个missionView类,它扩展了视图,并在屏幕上绘制了关卡.

当用户点击门时我想添加一些动画.

会发生什么:游戏打电话给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;
   }
}
Run Code Online (Sandbox Code Playgroud)

游戏类:

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(); …
Run Code Online (Sandbox Code Playgroud)

android

14
推荐指数
2
解决办法
4万
查看次数

标签 统计

android ×1