试图创造碰撞

时间:2016-09-23 18:33:48

标签: actionscript-3 flash adobe

var i:int = 0;
stage.focus=stage;
var Walls:Array = [Wall,Wall1];

addEventListener(Event.ENTER_FRAME,HitDetection);
function HitDetection(event:Event):void{
stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);
function myKeyDown(e:KeyboardEvent):void
{ 
    {
       if (e.keyCode == Keyboard.LEFT)
    {
     if (KeemStar1.hitTestObject(Walls[i])) {
trace("1")
    KeemStar1.x -=-0.1;
        }
        else
        {
            KeemStar1.x -=0.1;
        }
    }
    if (e.keyCode == Keyboard.RIGHT)
    {
      {
         if (KeemStar1.hitTestObject(Walls[i])) {
             KeemStar1.x -=-0.1;
trace ("n")
        }
        else
        {
            KeemStar1.x +=0.1;
        }
      }
   }
}
}
} 

它只与第一个墙碰撞,而不是与阵列中的每个墙碰撞。我已经尝试了所有的东西,但我无法弄明白我对actionscrip3有点新意,所以我不知道该怎么做。谢谢!!

1 个答案:

答案 0 :(得分:2)

您没有根据需要循环遍历数组。看起来应该更像这样:

for (var i: int = 0; i < Walls.length; i++){
    // code for collision detection against Walls[i]
}

该代码将循环遍历该数组中的所有项目,并检查每个项目的冲突。

此外,您的if陈述完全错误。应该是:

if (condition){
    // code
}

condition替换为您想要的任何内容(例如KeemStar1.hitTestObject(Walls[i])),并将//code替换为条件为真时会发生的情况。

你应该学会缩进适当数量并摆脱所有疯狂的白色空间。它几乎不可能阅读。我必须通过并纠正你的缩进和空白过剩只是为了意识到你的括号错了。