【发布时间】:2015-04-29 17:07:07
【问题描述】:
我是 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 坐标处于所需位置并且事件被调度时运行。
【问题讨论】:
-
只是 AS3 编码的一个提示。让实例名以小写字母开头,类名以大写字母开头。这是标准做法,有助于提高可读性(和代码高亮)
-
您确定您的
if(Buyer_mc.y == 377.25)条件得到满足吗?在 if 语句之前和之后放置一个跟踪语句以查看。除非涉及其他一些代码,否则我不确定它怎么会是true- 你开始你的gameTimer但永远不要用它做任何事情或听计时器滴答声。似乎您希望 if 条件位于计时器滴答处理程序中 -
非常感谢我发现错误只是 if(Buyer_mc.y == 377.25) 不经常见面。 :)
标签: actionscript-3 events event-handling custom-events