2012-04-19 6 views
0

私は非常にコーディングに新しいですし、私は衝突のための配列のオブジェクトのリストを置くことができるかどうかを知りたいと思っていました。オブジェクトのリストを配列などに置くことはできますか? AS3

書き込みの場合は... player.hitTestObject(wall1)then wall 2 then wall 3?

私はので、私はちょうどplayer.hitTestObject(everywall)の場合

感謝を言うことができる1列または何か他のものでそれらすべてを置くことができます。私のコードはこのように見え、私は約30の壁を持っています。

誰かが例文を投稿した場合、私は非常に感謝します。

function keydown(event:KeyboardEvent) :void { 

switch(event.keyCode){ 

    case Keyboard.LEFT : 

    hero.x -= 10; 

    if(hero.hitTestObject(w1) || hero.hitTestObject(w2) || hero.hitTestObject(w3) || hero.hitTestObject(w4)){ 
    hero.x +=10;} 
    break; 

    case Keyboard.RIGHT: 
    hero.x +=10; 
    if(hero.hitTestObject(w1) || hero.hitTestObject(w2) || hero.hitTestObject(w3) || hero.hitTestObject(w4)){ 
    hero.x -=10;} 
    break; 

    case Keyboard.UP: 
    hero.y -=10; 
    if(hero.hitTestObject(w1) || hero.hitTestObject(w2) || hero.hitTestObject(w3) || hero.hitTestObject(w4)){ 
    hero.y +=10;} 

    break; 

    case Keyboard.DOWN: 
    hero.y += 10; 
    if(hero.hitTestObject(w1) || hero.hitTestObject(w2) || hero.hitTestObject(w3) || hero.hitTestObject(w4)){ 
    hero.y -=10;} 
    break; 

    default : 
    break; 
} 

答えて

4

Actionscript Docsに示すように、hitTestObject()パラメータではなく、リストの任意の種類としてDisplayObjectをとります。

必要に応じて、この種の機能を自分で実装することができます。

function myHitTest(obj:DisplayObject, arr:Array):Boolean { 
    for (var i:int = 0; i < arr.length; ++i) { 
    //for (var item:DisplayObject in arr) { 
     var item:DisplayObject = arr[i] 
     if (obj.hitTestObject(item)) { 
      return true; 
     } 
    } 

    return false; 
} 

そして、あなたはそれを使用することができます...

if(myHitTest(hero,[w1,w2,w3])) 
    ... 

または

+0

は、あなたが(VAR項目:DisplayObjectです:ARR)のために書くことができる知らなかった

var everywall:Array = [w1,w2,w3]; ... if(myHitTest(hero,everywall)) ... 
のループのスタイルAS –

+0

@BarisUsakliできます。かなり制限的なので、構文を少し修正しなければなりませんでした。 –

+0

ああ、私は今あなたの編集を参照してください(var obj:配列内のオブジェクト)は私が使用しているものですが、私はそこを使用するforループがないと思います:AS3で、コンパイルすることができませんでした。 –

関連する問題