0

アンドロイドゲームを作りたいです。誰かがディスプレイに触れるたびにプレイヤーは上昇し、離すとプレイヤーは落下します。

多くのチュートリアルの助けを借りて、私はそれを機能させましたが、今はアニメーション化したくて行き詰まっています. つまり、プレーヤーの画像は 0.5 秒ごとに変更する必要があります。さらに、プレーヤーが上がるときにアニメーション化されたローテーションを作成する必要があります。

ただし、(何時間もグーグルで調べた後)問題に対する役立つ答えが見つかりませんでした。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

問題はどこだ?

4

1 に答える 1

0

アニメーションを説明するドローアブルがある場合、これをimageViewレイアウトに追加するよりも、いつでもこのようにドローアブル フォルダーに xml を作成できます。

    <?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;

}
于 2013-02-14T18:17:32.753 に答える