Тест на попадание As3 с программно добавленными мувиклипами (без имен экземпляров)

У меня есть основной класс, в котором у меня есть возможность добавить стену на сцену.

Раньше я объявлял это как

public var wall_cubular_1:Wall_cubular_1 = new Wall_cubular_1();

а потом добавил вот так

addChild(wall_cubular_1);

А затем в классе персонажей (которые должны бить стены) у меня было следующее

wallHit = this.hitTestObject(_root.wall_cubular_1)

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

Поэтому я изменил основной класс, удалив общедоступный var стены, и вместо этого настроил его следующим образом.

var wall_cubular_1:Wall_cubular_1 = new Wall_cubular_1();
addChild(wall_cubular_1);

в функции, которая добавляет стены.

Теперь персонажи не могут проверить стены, так как это не публично. Поэтому я попытался изменить хиттест на это

wallHit = this.hitTestObject(stage.wall_cubular_1)

Но это не работает!

Я совершенно потерян. Как это исправить?

Спасибо


person user3123633    schedule 01.03.2014    source источник


Ответы (1)


В вашем character классе вы можете Dispatch Event сказать wallHit вот так,

dispatchEvent(new Event("wallHit"));

В вашем основном классе,

(Я предполагаю, что вы создаете экземпляр класса character в классе Main). (Кроме того, вам нужно будет создать экземпляр wallHit в классе Main).

characterClassInstance.addEventListener("wallHit", onWallHit);

private function onWallHit(e:Event):void
{
     //Here you can add your collision detection logic
     wallHit = this.hitTestObject(_root.wall_cubular_1);
}
person Rajneesh Gaikwad    schedule 02.03.2014