LoginSignup
4
5

More than 5 years have passed since last update.

enchant.jsでオブジェクトを動かす

Last updated at Posted at 2014-02-06

enchant.jsのお勉強2日目。
デフォルトのくまが憎くなったので、勝手にネスに変更。

サンプル

やったこと

  • イベントの設定
  • タッチイベントの設定
  • キーボードイベントの設定
  • シーンからのオブジェクト追加・削除
  • オブジェクトの移動
  • スプライトアニメーションの設定
  • テキストの表示
  • 経過時間数の取得

シーンの概念

大元は rootScene
Scene を作ってそこにオブジェクトを置いていく。
Scene を切りかえて中身をまるっと変えることもできる。

イベントの設定

SpriteやLabelに特定のイベントリスナを登録していく。
リスナの登録方法は2つ。

  • [on+イベント名]プロパティに関数を代入する
  • addEventListenerを使って登録する
main.js
//[on+イベント名]プロパティに関数を代入する場合
object.onenterframe = function(){
  //処理
};

//addEventListenerを使って登録するする場合
object.addEventListener('enterframe', function() {
  //処理1
});
object.addEventListener('enterframe', function() {
  //処理2
});

※enterframe:フレームに入ったときに・毎フレームごと

addEventListenerは第1引数にイベント名、第2引数に関数を登録する。
addEventListenerの場合、1つのイベントに対して複数のリスナ登録ができる。

タッチイベントの設定

main.js
core.rootScene.on('touchstart', function(e){
  object.x = e.x;
  object.y = e.y;
});

タッチした位置をe.x e.yでとれる。
タッチはスマホ画面でのタッチだけでなく、PCでマウスクリックにも対応してる。

キーボードイベントの設定

main.js
object.addEventListener('enterframe', function() {
  if(core.input.left) this.x -= 5;
  if(core.input.right) this.x += 5;
});

シーンからのオブジェクト追加・削除

main.js
core.rootScene.removeChild(object);
core.rootScene.addChild(object);

オブジェクトの移動

main.js
object.x -= 5;             //移動
object.rotate(20);         //回転
object.scale(1.01, 1.01);  //拡大

スプライトアニメーションの設定

main.js
core.fps = 8;
var object = new Sprite(32, 32);
object.frame = 2;                 //3番目のスプライト画像を表示
object.frame = this.age % 3;      // 0,1,2番目のどれか
object.frame = this.age % 4 + 1;  // 1,2,3番目のどれか

※this.age:スプライトを書きだして何フレーム動いたか

テキストの表示

文字を表示するにはLabelクラスを使う。
表示する文字はLabel生成時に指定するか、textプロパティで指定する。

main.js
var label = new Label();
label.x = 280;
label.y = 5;
label.color = 'red';
label.font = '14px "Arial"';
label.text = '0';

core.rootScene.addChild(label);

経過時間数の取得

main.js
label.on('enterframe', function(){
 label.text = (core.frame / core.fps).toFixed(2); //小数点2ケタまで表示
});

※core.frame:現在のフレーム数取得

参考サイト

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5