design and usage
JavaScriptらしい書き方で
表示オブジェクトツリーに登録、描画
var player = new Sprite(32, 48);
player.image = game.assets['player.png'];
var enemy = new Sprite(32, 32);
enemy.image = game.assets['enemy.png'];
// 描画ルートオブジェクト
var scene = game.currentScene;
scene.addChild(player);
scene.addChild(enemy);
addEventListenerを使った非同期処理
var man = new Sprite(32, 32);
// 毎フレームごとの処理
man.addEventListener('enterframe', function() {
...
});
// タッチされたときの処理
man.addEventListener('touchstart', function(e) {
var x = e.localX;
var y = e.localY;
...
});
(like ActionScript)
<script type="text/javascript" src="enchant.js"></script>
<script type="text/javascript" src="game.js"></script>
game.js
// クラスのエクスポート
enchant();
window.onload = function() {
var game = new Game(320, 320); // ゲームのスクリーンサイズ
game.start();
};
game.js
window.onload = function() {
var game = new Game(320, 320);
game.preload('bear.gif'); // 画像をあらかじめ読み込んでおく
game.onload = function() { // 画像読み込み終了時に呼ばれる
var bear = new Sprite(20, 30);
bear.image = game.assets['bear.gif'];
};
game.start();
};
bear.gif

game.js
window.onload = function() {
var game = new Game(320, 320);
game.preload('bear.gif');
game.onload = function() {
var bear = new Sprite(20, 30);
bear.image = game.assets['bear.gif'];
bear.addEventListener('enterframe', function() {
this.x += 3; // 毎フレームごとに3ピクセル移動
});
game.rootScene.addChild(bear); // 表示オブジェクトツリーに追加
};
game.start();
};
game.js
var bear = new Sprite(20, 30);
bear.image = game.assets['bear.gif']; // assetsにはSurfaceが入っている
game.js
var label = new Label();
label.text = 'label';
game.js
var map = new Map(16. 16); // タイルサイズ
map.image = game.assets['map1.gif'];
map.loadData([
[0, ...],
[0, ...],
[0, ...]
..
]);
map1.gif

Game, NodeがEventTargetを継承しており、これらのメソッドを持つ
イベントタイプの例1
イベントタイプの例2
ある特定の入力を左ボタン入力として設定できる
イベントタイプの例2
キーの入力と左ボタンとして設定 (キーボード環境下)
game.keybind(keyCode, 'left');
Entityを左ボタンとして設定 (タッチ環境下)
entity.buttonMode = 'left';
イベントタイプの例2
設定された形に関わらずGame, Sceneは必ずこのイベントを受け取る
なお、デフォルトでArrow Keyはleft, right, up, downにバインド
ライブラリのクラスを継承したクラスを定義したいときにも使える
var Ball = Class.create(Sprite, {
initialize: function() {
// スーパークラスのコンストラクタを適用
Sprite.apply(this, arguments);
...
}
});
// or..
var Ball = Class.create(Sprite);
Ball.prototype.initialize = function() {
...
};