3

canvasengine を使用して HTML5 ゲームをプログラミングしています。これまでのところ動作するタイル マップを実装しましたが、静的です。

今、私はプレイヤーが動き回れるようにしたいと考えています。だから私は考えました:「OK、キャンバスエンジンのskewコマンドを使用します」。これは機能します:

canvas.Scene.new ({
name: "tutorial",
materials: {
    images: {
        dg_edging232: "/maps/tilesets/dg_edging232.gif"
    }
},
ready: function(stage) {

    this.el = this.createElement();
    var tiled = canvas.Tiled.new ();
    tiled.load(this, this.el, "/maps/tutorial.json");
    tiled.ready(function() {
        var tile_w = this.getTileWidth(),
                tile_h = this.getTileHeight(),
                layer_object = this.getLayerObject();
        stage.append(this.el);
    });



},
render: function(stage) {
    canvas.Input.keyDown(Input.Left);
    canvas.Input.keyDown(Input.Right);
    canvas.Input.keyDown(Input.Up);
    canvas.Input.keyDown(Input.Down);


    stage.refresh();
}
});

今、私はこのようなことをしたいと思います:

canvas.Input.keyDown(Input.left,this.el.x--);

しかし、上記の構文で動作させることはできません。

4

1 に答える 1

0

このライブラリで作業したことはありませんkeyDownが、render にある呼び出しをに移動しready、render でキーが押されているかどうかをテストし、それに応じてスプライトを移動することをお勧めします。

ready: function () {
  // ... your ready code

  // It's not clear from the docs, but it appears like you need to call
  // keyDown for each input to register it, even if you're passing no callbacks.
  // However, I'm guessing here.  This may not be necessary.
  canvas.Input.keyDown(Input.Left);
  // ... and so on for each direction
},

render: function () {
  // every frame test if the key is down, and update the sprite accordingly
  if (canvas.Input.isPressed(Input.Left)) this.el.x--;
  // ... and so on for each direction

  stage.refresh();
}
于 2013-05-06T16:16:14.850 に答える