キャラクターの追加方法
今回のサンプル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