Я новичок в as3, и недавно я видел создание пользовательских событий в as3 в учебнике, и я хотел включить в свою игру. Когда я сделал учебник, все это выглядело хорошо для этого проекта. Но, похоже, он не работает с новым проектом.Пользовательский прослушиватель событий не работает
Вот мой код:
package
{
\t import flash.display.MovieClip;
\t import flash.utils.Timer;
\t import flash.events.TimerEvent;
\t public class FashionFrenzy extends MovieClip
\t {
\t \t
\t \t public var Buyer_mc:Buyer;
\t \t public var Buyers:Array;
\t \t public var gameTimer:Timer;
\t \t public function FashionFrenzy()
\t \t {
\t \t \t
\t \t \t GameTimeController();
\t \t \t GenerateBuyers();
\t \t \t addEventListener(ReachMallDoorEvent.CHECK, OnReachMallDoor);
\t \t }
\t \t
\t \t public function GameTimeController()
\t \t {
\t \t \t gameTimer = new Timer(25);
\t \t \t gameTimer.start();
\t \t }
\t \t public function GenerateBuyers()
\t \t {
\t \t \t Buyers = new Array ;
\t \t \t Buyer_mc = new Buyer(533.2,0) ;
\t \t \t addChild(Buyer_mc);
\t \t \t gameTimer.addEventListener(TimerEvent.TIMER, BuyerEnter);
\t \t \t
\t \t \t
\t \t \t if(Buyer_mc.y==377.25)
\t \t \t {
\t \t \t \t dispatchEvent(new ReachMallDoorEvent(ReachMallDoorEvent.CHECK));
\t \t \t }
\t \t \t \t \t
\t \t \t
\t \t \t
\t \t }
\t \t
\t \t public function BuyerEnter(event:TimerEvent)
\t \t {
\t \t \t Buyer_mc.Enter();
\t \t }
\t \t
\t \t public function OnReachMallDoor(event:ReachMallDoorEvent)
\t \t {
\t \t \t
\t \t \t trace("my timer starts now");
\t \t }
\t \t
\t \t
\t }
}
Здесь OnReachMallDoor кажется, никогда не работать, потому что есть что-то не так. Я не могу видеть вывод, в котором говорится: «Мой таймер начинается сейчас». Но в коде нет ошибок, и вывод также не показывает ошибок во время выполнения. Где я ошибся? Я хочу, чтобы функция OnReachMallDoor запускалась, когда координата y находится в желаемой позиции, и событие отправляется.
Просто подсказка для кодирования AS3. Имена экземпляров начинаются с строчной буквы, а имена классов начинаются с прописных букв. Это стандартная практика и помогает читать (и выделять код) – BadFeelingAboutThis
Вы уверены, что ваше условие 'if (Buyer_mc.y == 377.25)' встречается? Положите оператор trace непосредственно перед и после этого, если инструкция для просмотра. Если не используется какой-то другой код, я не уверен, как он может быть «правдой» - вы начинаете свой «gameTimer», но ничего не делаете с ним или не слышите тики таймера. Похоже, вы хотите, чтобы если условие было в обработчике таймера – BadFeelingAboutThis
Спасибо большое, я понял, что ошибка была только в том случае, если (Buyer_mc.y == 377.25) часто не встречался. :) – Mana