我对编码很新,我想知道是否可以在数组中放置一个对象列表以进行冲突。
而不是写...如果是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;
}
答案 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))
...