我正在使用canvas.drawBitmap(Bitmap,src,dst,null)来制作动画。我正在使用1个平铺图像进行动画制作,每个平铺图像包含100多个用于制作动画的图像。我已经把onCLickListner放到了动画上。如何对onClick上的动画做出即时响应?
我根据以下链接使用了动画逻辑。 http://warriormill.com/2009/10/adroid-game-development-part-1-gameloop-sprites/
@Override
public void draw(Canvas canvas) {
try
{
FrameInfo frameinfo= animations.get(currentAnimation).sequence.get(currentFrame);
Rect rclip = frameinfo.rect;
Rect dest = new Rect(this.getXpos(), getYpos(), getXpos() + (rclip.right - rclip.left),
getYpos() + (rclip.bottom - rclip.top));
if(cf!=null)
{
//color filter code here
}
canvas.drawBitmap(tileSheet, rclip, dest, null);
update(); //after drawing update the frame counter
}
catch (Exception e)
{
Log.e("ERROR", "ERROR IN SPRITE TILE CODE:"+e.toString()+e.getStackTrace().toString());
}
}
答案 0 :(得分:1)
资源加载需要很长时间(它们在APK 中被压缩),以至于您必须预加载这些资源,而不是及时加载它们。
draw()
方法是进行任何即时资源处理的最后一个方法。
您还应该在后台执行此操作,以避免ANR问题。 AsyncTask
实施效果很好!
您还需要非常小心匹配DPI,否则drawBitmap()
会缩放您的位图,这会显着降低您的帧速率。
如果您具备该技能,请使用带有2D纹理映射的OpenGL。