2012-03-14 102 views
0

我买了android系统上surfaceview绘制动画以下问题:绘制位图动画不起作用

我使用一个线程来进行的onDraw() - 方法被调用regulary,我用这个:

c.drawBitmap(pic, partOfTheImage, destination, null); 

来绘制我想绘制的spritesheet的一部分。 现在的问题是,即使我改变“partOfTheImage”,唯一绘制的是先画的东西。它不改变,没有动画。

这里是在线程代码:

  try { 
       c = getGw().getHolder().lockCanvas(); 
       synchronized (getGw().getHolder()) { 
        getGw().onDraw(c); 

       } 
     } finally { 
       if (c != null) { 
        getGw().getHolder().unlockCanvasAndPost(c); 
       } 
     } 

有谁知道为什么我的心不是位图更新?

回答

0

你确定它实际上是绘图吗? getGw()做了什么?我不认为只是调用onDraw()将工作。相反,你应该在视图上调用invalidate()。无效将导致视图在将来的某个时刻重新绘制。 Android有一套丰富的动画工具。你看过他们吗?

+0

是的,它被称为,我已经测试它与logcat ...但它看起来像“drawBitmap()”只被调用一次...而我想用代码处理动画,我已经红了一些这部分的教程,但他们的代码不会为我工作:? – Trunksome 2012-03-14 14:23:25

+0

只是因为onDraw()被调用并不意味着它实际上被放在屏幕上,这就是为什么我建议调用invalidate。这就像期待一个活动被创建并通过调用onCreate()来正常工作。不打算这样叫。如果drawBitmap()只被调用一次,这是我最好的猜测。 – Samuel 2012-03-14 14:27:44

+0

好吧,现在的问题是我的GameThread不允许调用invalidate,因为它不是创建surfaceview的线程。我这样做就像这样:http://www.droidnova.com/2d-sprite-animation-in-android,471.html - 我没有得到它;自2009年以来做了什么改变? – Trunksome 2012-03-14 14:55:58