0

私はコーディングが初めてで、衝突のためにオブジェクトのリストを配列に入れることができるかどうか知りたいと思っていました。

書く代わりに... if player.hitTestObject(wall1) then wall 2 then wall 3?

それらをすべて 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

1 に答える 1

4

Actionscript Docsに示されているように、任意の種類のリストではなく、パラメーターとして ahitTestObject()を取ります。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]))
    ...

また

var everywall:Array = [w1,w2,w3];
...
if(myHitTest(hero,everywall))
    ...
于 2012-04-19T20:01:43.457 に答える