Android 2D游戏动画

Android 2D游戏动画,android,xml,Android,Xml,我想为Android 2D游戏应用程序(如GTA 1或2)创建一条移动道路。对于此任务,我想排列多张图片。我在main.xml文件中有一张道路的图片,我想多次使用它。但以下代码不起作用: public void onResume(){ super.onResume(); ImageView道路1=(ImageView)findViewById(R.id.road); ImageView道路2=(ImageView)findViewById(R.id.road); TranslateAnimati

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

public void onResume(){
super.onResume();
ImageView道路1=(ImageView)findViewById(R.id.road);
ImageView道路2=(ImageView)findViewById(R.id.road);
TranslateAnimation动画=新的TranslateAnimation(0.0f,-200.0f,0.0f,0.0f);
动画。设定持续时间(5000);
动画.setRepeatCount(0);
动画。设置重复模式(1);
animation.setFillAfter(true);
道路1.startAnimation(动画);
road2.setX(road1.getX()+500);
道路2.startAnimation(动画);
}
其理念是两条道路应同时移动,
road2
road1
相同,但向右移动了500像素。我想使用同一条道路的许多不同实例来创建地图。我希望在main.xml文件中只使用一种道路

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

我还尝试了画布、绘图和位图。但它们没有动画方法


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

您的代码不起作用,因为您的问题处理错误

我将抛开是否应该尝试使用基本
视图实现2D游戏的问题(简短回答:可能不是),并尝试解决代码的问题

现在,您正在代码中创建两个引用:
road1
road2
,但这两个引用引用的是在XML布局中定义的相同的
ImageView
,id为“
road
”。因此,基本上,对同一个对象有两个引用

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

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

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

ImageView road1 = (ImageView) findViewById(R.id.road1);
ImageView road2 = (ImageView) findViewById(R.id.road2);
此更正假定您的XML布局文件中有2个
图像视图
——一个名为“
road1
”,另一个名为“
road2


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

有没有理由避免使用游戏引擎?有一些2d引擎使得基于瓷砖的游戏更容易制作。没有理由。我将尝试2d引擎统一。