
今回のサンプル1
今回のサンプル2
サンプルの全ファイル
画面をタップするとタップした位置にキャラクターを追加する方法を解説。
普通に書くとこんなプログラムになります。しかし、 enchant.js の現在のバージョンではタイミングによっては一瞬、(0, 0)の位置に表示される様です。
(今回のサンプル1)
enchant();
window.onload = function() {
var game = new Game(320, 320);
game.preload('bg.png', 'bear.gif');
game.onload = function() {
var bg = new Sprite(320, 320);
bg.image = game.assets['bg.png'];
bg.addEventListener('touchstart', function(e) {
var bear = new Sprite(20, 30);
bear.image = game.assets['bear.gif'];
bear.x = e.localX - bear.width/2.0;
bear.y = e.localY - bear.height/2.0;
game.rootScene.addChild(bear);
});
game.rootScene.addChild(bg);
};
game.start();
};(追記 2011/04/23)
修正されました。最新のバージョンでは「サンプル1」の記述方法でOKです。
キャラクターの追加時に一瞬、(0, 0)の位置に表示される不具合が修正 - 強火で進め
http://d.hatena.ne.jp/nakamura001/20110423/1303523292
(追記ここまで)
その為、フラグ firstHidden を準備し、初期状態では visible を false にして非表示にし、最初の enterframe のイベントの時に表示する様にしてみました。こちらの方法であれば綺麗にキャラクターが追加されました。
(今回のサンプル2)
enchant();
window.onload = function() {
var game = new Game(320, 320);
game.preload('bg.png', 'bear.gif');
game.onload = function() {
var bg = new Sprite(320, 320);
bg.image = game.assets['bg.png'];
bg.addEventListener('touchstart', function(e) {
var bear = new Sprite(20, 30);
bear.image = game.assets['bear.gif'];
bear.x = e.localX - bear.width/2.0;
bear.y = e.localY - bear.height/2.0;
bear.image = game.assets['bear.gif'];
bear.visible = false;
bear.firstHidden = true;
bear.addEventListener('enterframe', function(e) {
if (this.firstHidden) this.visible = true;
});
game.rootScene.addChild(bear);
});
game.rootScene.addChild(bg);
};
game.start();
};
関連情報
nakamura001 @ ウィキ - トップページ/JavaScriptゲーム/ライブラリ/enchant.js/サンプル
http://www32.atwiki.jp/nakamura001/pages/149.html