0

したがって、次のコードを含むこの Player.as クラス ファイルがあります。

private function PressAKey(event:KeyboardEvent):void
 {
   getDistance();
   if(event.keyCode == 32 && placedBomb == false && bombNumber == 0)//space
 {
   xKey = true;
   placeBomb();
   placedBomb = true;
}
}

これを次の placeBomb() 関数と組み合わせて使用​​します。

private function placeBomb():void{

 MainClass.container.addChildAt(bomb,0);
 bomb.x = this.x;
 bomb.y = this.y+20;
 bombNumber ++;
}

問題は、インタラクションの構築を開始できるように、プレイヤーと爆弾の間の距離を計算しようとする次の関数から発生します。

private function getDistance():void{
 distance = Math.sqrt( ( this.x - MainClass.container.bomb.x ) * ( this.x - MainClass.container.bomb.x ) + ( this.y - MainClass.container.bomb.y ) * ( this.y - MainClass.container.bomb.y ) );
 trace(distance);
}

これを試すと、次のエラーが表示されます。

TypeError: Error #1010: A term is undefined and has no properties.
at Player/getDistance()
at Player/PressAKey()

私が何を見逃しているか分かりますか?これは間違いなくスコーピングの問題ですが、クラス全体が爆弾を認識できるようにするには、何を含める必要がありますか?

4

1 に答える 1

1

bombは のプロパティではありませんMainClass.containerbomb一人っ子です。

次のコードを参照してください。

private function getDistance():void
{
   var bomb:DisplayObject = MainClass.container.getChildAt(0);

   distance = Math.sqrt( ( this.x - bomb.x ) * ( this.x - bomb.x ) + ( this.y - bomb.y ) * ( this.y - bomb.y ) );
   trace(distance);
}

すべての子を参照する方法。

for(var i:int = 0; i<parentObject.numChildren; i++)
{ 
   var object:DisplayObject = parentObject.getChildAt(i);
   /*
   p.s: if a child object type is MovieClip. must be typecasting.
   var object:MovieClip = parentObject.getChildAt(i) as MovieClip;
   */
}
于 2012-08-15T16:23:29.933 に答える