我可以在数组或类似的东西中放置一个对象列表吗? AS3

时间:2012-04-19 19:55:17

标签: actionscript-3 flash actionscript

我对编码很新,我想知道是否可以在数组中放置一个对象列表以进行冲突。

而不是写...如果是player.hitTestObject(wall1)那么墙2然后是墙3?

我可以将它们全部放在一个数组或其他内容中,所以我可以说如果是player.hitTestObject(everywall)

感谢。我的代码看起来像这样,我有大约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;
}

1 个答案:

答案 0 :(得分: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]))
    ...

var everywall:Array = [w1,w2,w3];
...
if(myHitTest(hero,everywall))
    ...