2016-11-29 7 views
0

、これは作業する必要がありますが、そうではありません。使用して配列し、hitTest - 私の友人が私に言ったものから、AS3

var P2hb:Array = new Array(P2char1, P2char2, P2char3); 
var P2life:Number = 0; 

addEventListener(Event.ENTER_FRAME, framecheck) 
function framecheck(event:Event):void 
{ 
if (P2hb.hitTestObject(P1attack)) { P2life-=2; } 
} 

これは一般的なコードですが、私のものと同じです。基本的には、P2hbで すべての要素は、ステージ上のムービークリップです。 私はP1attackは、配列内のオブジェクトのいずれかに当たった場合、P2lifeは、個々のオブジェクトに対してhitTestObject()を入力することなく、2によって低下します、と言いたいです。
私はそれが動作するように見えることはできません。誰かが私が間違っていることを教えてもらえますか?
ありがとうございます。

+0

'P2hb'が 'Array'あ​​ります'hitTestObject()'メソッドはありません!おそらくあなたは 'if'文の条件のために' P2hb [0] .hitTestObject(P1attack) 'のようなものを意味しました! – someOne

+0

...そして、あなたは何をしたいですか? – someOne

+0

[0]を3つのオブジェクトすべてに等しくするにはどうすればよいですか?私はP1attackは、配列内のオブジェクトのいずれかをヒットした場合、その後P2lifeが、これは同じフレーム内のすべてのムービークリップをチェックする個々のオブジェクト – Koden

答えて

1

単に、アレイ内の個々の「ムービークリップ」をループ(例えば、forループを使用)して、他の物体との衝突をチェック:

function framecheck(event:Event):void 
{ 
    for each (var enemy in P2hb) { 
     if (enemy.hitTestObject(P1attack)) { 
      P2life-=2; 
      trace("hit occurred! P2life: "+P2life); 
     } 
    } 
} 
+0

ためhitTestObject入力することなく、2によって落下することを言いたい – Koden

+0

ですべてのクリップをチェックしたいと思い、私は、コードを試してみました、あなたは() '関数' framecheckを登録したので、それが唯一の 'ENTER_FRAME'ハンドラとして配列 – Koden

+0

@Kodenで2番目の項目にトリガ「プレイヘッドが」_eachのFRAME_ :) – someOne

関連する問題