2012-04-07 7 views
-1

私はキャラクタースプライトから前方に発射されるミサイルを作成するためにonTouchEventを作成しようとしています。 私はonDrawメソッドでAndroid Missileスプライト

 if (missdraw = true){ 
      canvas.drawBitmap(missile,missilex,missileY,null); 
      missilex = missilex + 14; 
      missdraw = false; 
     } 

を使用してこの作業を持っているが、問題はそれだけで一度に一つ作成されますです。 これに対処するクラスを作成しようとしましたが、これはエラーを引き起こし、起動しようとするとクラッシュします。ここ は私がクラスに使用するものです:私は任意の助けをいただければ幸いです

public Batcher(List<Batcher> temps, ScreenActivity newView, float x, 
     float y, Bitmap missile){ 

    this.x = 1; 
    this.y = 2; 
    this.missile = missile; 

} 

public void onDraw(Canvas canvas) { 
    // TODO Auto-generated method stub 
    canvas.drawBitmap(missile, x,y, null); 

} 

これはクラスである

 for (Batcher missile : missiles){ 
      missile.onDraw(canvas); 
     } 

(これは私のgameviewでondrawである)だけでなく、あなたができれば単にコードの代わりにどのように動作するのかを説明し、プログラミングにはまったく新しいものです。なぜなら、人々のコードをコピーするのではなく、何をやっているのか、なぜそうしているのかを理解する必要があるからです。

乾杯。

答えて

1

あなたのコンセプトは、実際にはかなり良いです。あなたが投稿したコードサンプルについて私が理解していないことがいくつかありますが、私が何をやっているのかを教えてくれるでしょう。私が間違っているかどうか教えてください:)

あなたが必要とするあなたのゲームクラス(とあなたが持っているように見える)ミサイルのリスト:あなたのonTouch()

LinkedList<Batcher> missiles; 

、しかし、ミサイルが作成される -

missiles.add(new Batcher(missilex, missiley, missile)); 

あなたは今、ミサイルのコレクションを持っています。オブジェクトはコレクションの一部であることを決して知る必要がないので、私はあなたのバッターのコンストラクタにリストを含めなかったことに注意してください。知る必要があるのは、それを描く方法と場所です。私はすべてのミサイルが頻繁に画面に追加されたり画面から削除されたりすることを想定しているため、一度にいくつかの画面しか表示されないのに対し、私はLinkedListを使用しました。特定のミサイル。コレクション内の特定のアイテムにアクセスする必要があり、コレクションがそれほど変更されていない場合は、代わりにArrayListを使用します。 onDrawへの - あなたはミサイルが、罰金である、自分自身を描画し、それを持っていますが、それが描かれるべき場所、私はそれを伝えるビューがミサイルで、描画をやらせることを好むよう -

for (Batcher missile : missiles){ 
    missile.setX(missile.getX() + 14); // to make it move 
    if (missile.getX() > canvas.gedWidth()) { //check if it's left the screen 
    missiles.remove(missile); // Remove it 
    } 
    else { //perform drawing 
    canvas.drawBitmap(missile.getBitmap(), missile.getX(), missile.getY(), null); 
    } 
} 

をうまくいけば、それはよあなたのためにそれをしてください、あなたが私にもっと説明したいと思うものがあれば私に知らせてください!

+0

ありがとうございました。私は今、うまく動作しています(リスト配列が複数のミサイルを作っています)。問題は、画面上に複数のミサイルがある場合、取り除こうとするとクラッシュします。申し訳ありませんが、遅れて返信しても、uniの仕事でうんざりしているので、これを保留にしてください。 – Phil

関連する問題