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