Understanding AS3 custom events
2009-10-21 00:00:00 来源:WEB开发网Every AS3 programmer uses event listeners to allow objects to become active and listen for specific instructions, such as a mouse click or the beginning of a new frame.
Now it’s time to see how can you create new events, but before entering into this script, let me say it’s not a “do it or die” feature.
You can always perform some if... then... else and achieve the same result, but from a PROgrammer point of view, a code with listeners is more readable than a complex list of conditions to check for events.
In this script, we are counting the time passed like in Understanding AS3 Timer Class, but we want to create a custom event to be triggered every 5 seconds.
Obviously in this case it’s quite pointless to create a custom event, but I am showing you the way you can do it.
This is the script:
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.text.TextField;
public class dispatch extends Sprite {
var dispatcher:time_dispatcher = new time_dispatcher();
var time_count:Timer=new Timer(1000);
var interval_timer:TextField = new TextField();
public function dispatch() {
interval_timer.x=5;
interval_timer.y=5;
addChild(interval_timer);
time_count.addEventListener(TimerEvent.TIMER,show_time);
dispatcher.addEventListener(time_dispatcher.ON_DIV_BY_FIVE, on_event_triggered);
time_count.start();
}
private function on_event_triggered(event:Event):void {
interval_timer.text="TRIGGERED";
}
function show_time(event:TimerEvent) {
interval_timer.text=event.target.currentCount;
dispatcher.check_division(event.target.currentCount);
}
}
}
import flash.events.EventDispatcher;
import flash.events.Event;
class time_dispatcher extends EventDispatcher {
public static var ON_DIV_BY_FIVE:String="can be divided";
public function check_division(num):void {
if (num%5==0) {
dispatchEvent(new Event(time_dispatcher.ON_DIV_BY_FIVE));
}
}
}
Line 8: Creating a new dispatcher, aggregating an instance of time_dispatcher class. I included the class in the same file to make the tutorial easier to understand, but you can obviously have your new class in another .as file as usual.
Line 16: This is where add the listener… as you can see it’s the same syntax you are used… except AS3 doesn’t have any ON_DIV_BY_FIVE listener.
The remaining lines are quite the same you’ve seen a thousand times, excluded line 24 where you can for check_division function that will trigger the event if the number of elapsed seconds can be divided by 5.
Line 35: This is how we fire, or dispatch, an event.
As I said, you can always use your if... then statement but in my opinion a code with listeners such as ON_LEVEL_COMPLETED is more readable than something like if(collected_items==total_items && time_left>0){...
This is the result of the script:
本文示例源代码或素材下载
Tags:Understanding AS custom
编辑录入:爽爽 [复制链接] [打 印]- ››asp.net页面弄成伪静态页面
- ››Asp.net 中将汉字转换成拼音的方法
- ››ASP.NET及JS中的cookie基本用法
- ››ASP.NET获取MS SQL Server安装实例
- ››asp.net实现调用百度pai 在线翻译英文转中文
- ››ASP.NET页面选项进行提示判断
- ››Asp.net定时执行程序
- ››ASP.NET中利用DataList实现图片无缝滚动
- ››ASP.NET验证控件RequiredFieldValidator
- ››ASP.NET中使用System.Net.Mail发邮件
- ››ASP.NET中获取用户控件中控件的ID
- ››ASP.NET中FileBytes写成文件并存档
更多精彩
赞助商链接