我想为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);
}
这个想法是两条道路应该同时移动,road2
与road1
相同,但向右移动500像素。我想使用相同道路的许多不同实例来创建地图。我想在main.xml文件中只有一种道路。
上面代码的问题是,屏幕上只显示第二条道路。原因可能是ImageView road1
和road2
使用相同的xml id引用。
我也尝试过Canvas,Drawables和Bitmaps。但他们没有动画方法。
如何设置道路地图的动画?我应该在main.xml中插入每个道路部分吗?我怎样才能多次使用同一张图片?
答案 0 :(得分:0)
您的代码无效,因为您的问题出错了。
我会抛开你是否应该尝试使用基本Views
(简短回答:可能不是)来实现2D游戏的问题,并尝试解决你的代码出了什么问题。
目前,您在代码中创建了2个引用:road1
& road2
,但这两个引用都引用了XML布局中定义的ImageView
,标识为“road
”。所以基本上,你有两个对同一个对象的引用。
为road1
设置动画时,实际上是road
的动画,然后当您为road2
设置动画时,您再次为road
设置动画。如果要创建2个单独的“road
”视图,则需要在布局文件中通过创建2 ImageViews
并为其提供不同的ID来定义它们。
您指出您不希望这样做,因为您希望它们具有相同的背景图像。为此,您需要在XML布局中创建2 ImageViews
,但要让它们使用与drawable
或src
相同的background
。
以下是一个示例,说明您需要进行的更正:
ImageView road1 = (ImageView) findViewById(R.id.road1);
ImageView road2 = (ImageView) findViewById(R.id.road2);
此更正假设您的XML布局文件中有2个ImageViews
- 一个名为“road1
”,另一个名为“road2
”
同样,如果你的目标是创建一个2D游戏,我会建议一起反对这种方法,也许会看一些像Unity这样的游戏引擎,或者至少使用OpenGL实现你的视觉逻辑。