0

現在、HTML5 Canvas Spaceship Game を作成しています。しかし、大きな問題があります。宇宙船のクラスを作成しましたが、矢印キーで移動したいと考えています。でもなぜか動かない。

Chrome Inspector にはエラーは表示されませんが、宇宙船はまだ動きません。

完全にはわかりませんが、クラスのオブジェクトに問題がある可能性はありますか?

私の Git でプロジェクト データを見つけることができます: https://github.com/nemoxdelight/First_Game/

また、私の下手な英語で申し訳ありません。私は助けが必要なドイツ人です ;)

また、ここに問題があると思われる部分があります:(main.js内)

function o_move_paddle(p_event) {
    if(p_event.keyCode == KEY_RIGHT) {
        held1.rechtsTaste = true;
        p_event.preventDefault();
    }
    if(p_event.keyCode == KEY_LEFT) {
        held1.linksTaste = true;
        p_event.preventDefault();
    }
    if(p_event.keyCode == KEY_UP) {
        held1.hochTaste = true;
        p_event.preventDefault();
    }
    if(p_event.keyCode == KEY_DOWN) {
        held1.runterTaste = true;
        p_event.preventDefault();
    }
}

そして、私のヒーロークラスが作成され、オブジェクトを移動するheld.jsで:

Held.prototype.tasteCheck = function() {
    if(this.hochTaste) {
        this.held_y -= this.speed;
    }
    if(this.rechtsTaste) {
        this.held_x += this.speed;
    }
    if(this.linksTaste) {
        this.held_x -= this.speed;
    }
    if(this.runterTaste) {
        this.held_y += this.speed;
    }
};
4

1 に答える 1

1

あなたの問題は、ゲームのメインループ内でヒーローを (再) 作成することです。したがって、ゲームがループに入るたびに、開始座標で新しいヒーローが作成されます。そのため、動かないように見えます。

これがあなたの問題に対する迅速で汚い解決策です。main.js内で「ループ」関数を変更して、これです

function loop(){
  clearCanvas();
  level();
  if(!held1)
    held1 = new Held();
  held1.draw();
  feinde_zeichnen();
  // snd.play();
}

ループが開始される前に、別の場所でヒーローを作成する必要があります。これにより、ヒーローが常に何らかのオブジェクトであることを確認できます。

編集:

忘れる前に: 「o_stop_paddle」関数で保持されている rechtsTaste、linksTaste、hochTaste、および runterTaste 変数をリセットする必要があります。そうしないと、キーを放すと移動し続け、すべての方向を押すと移動が停止します。すべての方向に移動しようとしますが、これはまったく移動しないことに相当します。

于 2012-07-15T13:47:51.890 に答える