Android 2D游戏动画

时间:2015-06-21 13:23:11

标签: android xml

我想为Android 2D游戏应用程序(如GTA 1或2)创建一条移动之路。对于这项任务,我想排列多张图片。我在main.xml文件中有一张道路图片,想要多次使用它。但是下面的代码不起作用:

public void onResume(){
    super.onResume();
    ImageView road1 = (ImageView) findViewById(R.id.road);
    ImageView road2 = (ImageView) findViewById(R.id.road);

    TranslateAnimation animation = new TranslateAnimation(0.0f, -200.0f, 0.0f, 0.0f);
    animation.setDuration(5000);
    animation.setRepeatCount(0);
    animation.setRepeatMode(1);
    animation.setFillAfter(true);  

    road1.startAnimation(animation);
    road2.setX(road1.getX() + 500);
    road2.startAnimation(animation);
}

这个想法是两条道路应该同时移动,road2road1相同,但向右移动500像素。我想使用相同道路的许多不同实例来创建地图。我想在main.xml文件中只有一种道路。

上面代码的问题是,屏幕上只显示第二条道路。原因可能是ImageView road1road2使用相同的xml id引用。

我也尝试过Canvas,Drawables和Bitmaps。但他们没有动画方法。

如何设置道路地图的动画?我应该在main.xml中插入每个道路部分吗?我怎样才能多次使用同一张图片?

1 个答案:

答案 0 :(得分:0)

您的代码无效,因为您的问题出错了。

我会抛开你是否应该尝试使用基本Views(简短回答:可能不是)来实现2D游戏的问题,并尝试解决你的代码出了什么问题。

目前,您在代码中创建了2个引用:road1& road2,但这两个引用都引用了XML布局中定义的ImageView,标识为“road”。所以基本上,你有两个对同一个对象的引用。

road1设置动画时,实际上是road的动画,然后当您为road2设置动画时,您再次为road设置动画。如果要创建2个单独的“road”视图,则需要在布局文件中通过创建2 ImageViews并为其提供不同的ID来定义它们。

您指出您不希望这样做,因为您希望它们具有相同的背景图像。为此,您需要在XML布局中创建2 ImageViews,但要让它们使用与drawablesrc相同的background

以下是一个示例,说明您需要进行的更正:

ImageView road1 = (ImageView) findViewById(R.id.road1);
ImageView road2 = (ImageView) findViewById(R.id.road2);

此更正假设您的XML布局文件中有2个ImageViews - 一个名为“road1”,另一个名为“road2

同样,如果你的目标是创建一个2D游戏,我会建议一起反对这种方法,也许会看一些像Unity这样的游戏引擎,或者至少使用OpenGL实现你的视觉逻辑。