-
2008-01-25
as 3.0 事件 声明 - [as 3.0]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://wxsr.blogbus.com/logs/14458227.html
as3.0为我们带来了一个强大的事件机制,这是我们的一个福音;但相当一部分人对于这个实用的机制可能还只处于了解阶段;
下面我结合下 自定义的loadVar类 为大家介绍下怎么使用这个强大的事件机制为自己写的类声明一个事件吧~
例子是个简单的小说阅读器
在loadVar类中我声明了两个事件:COMPLETE事件跟IOERROR事件
看了脚本相信大家也发现了~我的这两个事件都是基于URLLoader对应的两个事件触发后通过dispatchEvent将事件调度到事件流中的那样的话我们就可以间接获取URLLoader的事件返回的值了;
由于不能上传附件的原因请大新建一个fla文件
在场景中放一个名为txt的动态文本事例;两个分别为btn1跟btn2的mc元件
并将loadVar类以loadVar.as为文件名拷贝到org/net目录下
package org.net{
import flash.events.*;
import flash.net.*;public class LoadVar extends EventDispatcher {
//COMPLETE事件
public static const COMPLETE:String = "loadVarComplete";
//IOERROR事件public static const IOERROR:String = "loadVarIoError";
private var __sender:URLRequest;
private var __loader:URLLoader;
public var result;public function LoadVar() {
}
public function load(link) {
__sender = new URLRequest(link);
__sender.method = URLRequestMethod.POST;
__loader = new URLLoader();
__loader.dataFormat = URLLoaderDataFormat.TEXT;
__loader.load(__sender);
__loader.addEventListener("ioError" ,ioErrFunc);
__loader.addEventListener(Event.COMPLETE,completeFunc);
}
private function completeFunc(re:Event) {
result=re.target.data;
dispatchEvent(new Event(LoadVar.COMPLETE));
}private function ioErrFunc(err:Event) {
result=err.target.data;
dispatchEvent(new Event(LoadVar.IOERROR));
}}
}//fla文件
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
System.useCodePage = true;
var page=[0,0,0];
txt.text="code by wxsr \n http://wxsr.blogbus.com/\n";import org.net.LoadVar;
var load_:LoadVar=new LoadVar();
var num=0;
btn1.addEventListener(MouseEvent.CLICK,goFunc);
btn2.addEventListener(MouseEvent.CLICK,goFunc2);
//注册事件load_.addEventListener(LoadVar.COMPLETE, resultFunc);
load_.addEventListener(LoadVar.IOERROR, resultFunc);
load_.load("http://www.1stbook.net/sfw/nk/wai/000.html");
function setFormat() {
var format:TextFormat = new TextFormat();
format.color = 0x333333;
format.size = 15;
txt.defaultTextFormat = format;
}function setpage(num) {
var tmp_arr=String(num).split("");
for (var i=0; i<page.length; i++) {
if (i>tmp_arr.length-1) {
break;
} else {
page[page.length-1-i]=tmp_arr[i]
;
}
}
var str=page.join("");
return str;
}function goFunc(event:MouseEvent) {
num-=1;
if (num<=0) {
num=0;
}
setFormat();
txt.appendText("\n loading.............");
load_.addEventListener(LoadVar.COMPLETE, resultFunc);
load_.addEventListener(LoadVar.IOERROR, resultFunc);
trace(num,"http://www.1stbook.net/sfw/nk/wai/"+setpage(num)+".html");
load_.load("http://www.1stbook.net/sfw/nk/wai/"+setpage(num)+".html");}
function goFunc2(event:MouseEvent) {
num++;
if (num>=40) {
num=40;
}
setFormat();
txt.text=("\n loading.............");
load_.addEventListener(LoadVar.COMPLETE, resultFunc);
load_.addEventListener(LoadVar.IOERROR, resultFunc);
trace(num,"http://www.1stbook.net/sfw/nk/wai/"+setpage(num)+".html");
load_.load("http://www.1stbook.net/sfw/nk/wai/"+setpage(num)+".html");}
function resultFunc(result:Event) {
if (result.target.result==undefined) {
txt.text="没有该章节!";
} else {txt.text=("\n"+result.target.result);
}
}随机文章:
as3.0 titleTips 2008-02-042.0 fms A星寻路 2008-02-04as3.0键盘事件优化与扩展 2008-07-09swf通信代理类,多个3.0与2.0swf之间的通信,共享对象在不同版本的swf间共享 2008-03-01mp3播放器 2008-01-09
收藏到:Del.icio.us





