我想创建一个Android游戏。每当有人触摸显示器时,玩家应该上升,如果他释放,则玩家应该跌倒。
在许多教程的帮助下,我让它发挥作用,但现在我想要制作它的动画而且我被卡住了。这意味着玩家的图像应该每半秒更换一次。另外,当玩家上升时应该创建动画旋转。
但是(谷歌搜索后几小时)我找不到任何有用的答案来解决我的问题。 Android Developers网站讨论了如何创建ImageView和XML文件。但那就是我被困住的地方:我没有ImageView,我的播放器(我使用的是PNG文件)只是由onDraw()方法创建的:
public void onDraw(Canvas canvas) {
for (Sprite s : sprites) {
canvas.drawBitmap(s.getGraphic(), s.getLocation().x,
s.getLocation().y, null);
}
}
现在我想问一下我应该怎么做动画和动画旋转。我应该从ImageView开始,还是可以以某种方式将onDraw方法“转换”为ImageView?或者是否有其他方法可以在没有ImageView的情况下进行动画和动画旋转?
其次,如果我必须创建ImageView,我不明白如何让玩家“动态”,即:当有人触摸显示器时改变位置。
提前致谢:)
编辑:
好的,我在drawable文件夹中创建了我的animation.xml文件:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false" android:id="@+id/splashAnimation">
<item android:drawable="@drawable/ship" android:duration="200" />
<item android:drawable="@drawable/ship_2" android:duration="200" />
</animation-list>
在我的主文件中我添加了:
ImageView img = (ImageView) findViewById(R.id.splashAnimation);
img.setBackgroundResource(R.drawable.animation);
ship_anim= (AnimationDrawable) img.getBackground();
ship_anim.start();
但是,现在我收到错误消息:NullPointerException
问题出在哪里?
答案 0 :(得分:0)
如果您有描述动画的drawable,您可以像这样在drawable文件夹中创建xml,而不是将其作为imageView
添加到布局
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/img1" android:duration="100" />
<item android:drawable="@drawable/img2" android:duration="100" />
<item android:drawable="@drawable/img3" android:duration="100" />
<item android:drawable="@drawable/mimg4" android:duration="100" />
<item android:drawable="@drawable/img5" android:duration="100" />
</animation-list>
它的代码如下所示:
myAnimation = (AnimationDrawable) findViewById(R.id.animation);
只添加事件处理程序而不是
if (!isPlaying)
{
playDrawableAnimation();
isPlaying = true;
} else
{
faceAnimation.stop();
isPlaying = false;
}