Atlas.jsブログ

Webブラウザで動作する、教育用JavaScriptゲームエンジン、Atlas.jsに関する知識共有ブログです。

findChildを使ってみよう


Atlas.jsである条件にマッチするaddChildされたオブジェクトを、簡単に取得するメソッドを紹介します。
タイトルにもありますが、getChildgetChildrenです。
例えば下のコードを見てください。

sprite.touchStart = function(e){
    var target = this.parent.getChild({name:"hero"});
    if(target.intersect(e.x,e.y)){
        target.remove();
    }
}

上の処理は画面がクリックされた時に、nameというプロパティに"hero"が設定されたオブジェクトを取得し、そのオブジェクトが、マウスの一と一致していたときに、そのオブジェクトを削除するという処理です。
敵と味方で当たり判定を変えたいときなんかに重宝しそうですね。
この機能を有効活用したゲームがAtlas Editorに投稿されています。

Acchord_alt04さんのゲーム
壁をジャンプして乗り越えていくゲームです。
このゲームに以下のように処理が書かれています

var Wall = Atlas.createClass(Atlas.Shape.Box, {
  initialize: function(col, width, height) {
    this.inherit(col, width, height);
    this.setPosition(frame.width, frame.height - kGroundHeight - height);
  },
  enterFrame: function() {
    this.x -= 8;
    var sprite = this.parent.getChild({name: 'player'});
    if (sprite && this.hitTest(sprite)) {
      sprite.remove();
    }
    if (this.x < 0) {
      this.remove();
    }
  }
});

これは、壁クラスをつくって、enterFrameで主人公(ボール)との当たり判定を行って、当たっていれば、主人公を消すという作業をしています。

 var sprite = this.parent.getChild({name: 'player'});
    if (sprite && this.hitTest(sprite)) {
      sprite.remove();
    }
    if (this.x < 0) {
      this.remove();
    }

ここですね。ちなみにthis.parentというところが重要で
ここはaddChildした親オブジェクトへの参照となっています。
その親が子供の中から、条件を満たす子供を探すメソッドとしてgetChild
getChildrenをもっています。
使い方は簡単で条件の複数指定も出来ます。

例)this.getChild({kind:"person",gender:"male"});
是非試してみてください


blog comments powered by Disqus

エントリーリスト

カテゴリーリスト

Facebook

Twitter

おすすめの本