2015-04-21 3 views
1

Я пытался найти более простой способ закодировать это для простой RPG, над которой я работал, она отлично работает, если элемент, который не может пройти, добавляется отдельно. Когда я пытался работать с массивами, он сбрасывал кучу злых ошибок. Конечно, я новичок в AS3, но я попытался найти решение этого, не повезло.AS3 Обнаружение столкновений массивов

if(heroMC.hitTestObject(block1)) { 
    hitObj = true; 
    heroMC.x = gX; 
    heroMC.y = gY; 
} else if(heroMC.hitTestObject(bridgeBlock2)) { 
    hitObj = true; 
    heroMC.x = gX; 
    heroMC.y = gY; 
} if(heroMC.hitTestObject(bridgeBlock3)) { 
    hitObj = true; 
    heroMC.x = gX; 
    heroMC.y = gY; 
} else { 
    hitObj = false; 
    gX = heroMC.x; 
    gY = heroMC.y; 
} 

Затем я добавляю каждую индивидуальную запись в мой список. Если heroMC пересекает объект, он меняет значение hitObj на true. Если ничего не происходит, hitObj вернется как false. Какие решения я мог бы использовать, чтобы сделать это проще и чище.

Спасибо заранее, ребята.

ответ

1

Вставьте ваши блоки MovieClips в массив

var blocksArray: Arry = new Array(block1, bridgeBlock2, bridgeBlock3); 

Добавить Введите кадр обработчик события для уловом изменения

this.addEventListener(Event.ENTER_FRAME, onEnterFramehandler); 

function onEnterFramehandler(e: Event): void { 
     //initially set it to false 
     hitObj = false; 
     for (var i: uint = 0; i < blocksArray.length; i++) { 
      //If hit the object set it to true; 
      if (heroMC.hitTestobject(blocksArray[i])) { 
       hitObj = true; 
       //set the position of the heroMc if true 
       heroMC.x = gX; 
       heroMC.y = gY; 
       break; 
      } 
     } 
     //get the position of the heroMc if false   
     gX = heroMC.x; 
     gY = heroMC.y; 
    } 
+0

Спасибо за помощь мне Бенни! – Naythan

Смежные вопросы