我阅读了很多关于调度事件的内容,但仍无法使其正常工作。我有一个类,并希望事件对其他使用此类的类可见。主类:Flash AS3 - 类
import special.proxy.ProxyStream;
public class testproxy extends Sprite
{
var textspace:TextField=new TextField();
var proxydata:*;
public function testproxy()
{
textspace.autoSize="left";
textspace.text="ready";
addChild(textspace);
try
{
proxydata=new ProxyStream();
addChild(proxydata);
proxydata.load(proxyurl_string, fileurl_string);
proxydata.addEventListener("COMPLETE", complete);
proxydata.addEventListener(Event.COMPLETE, complete);
}
catch(e:*){textspace.text=String(e);}
setTimeout(checkProgress, 2000);
}
function checkProgress(){textspace.text=proxydata.progressstate;}
function complete(){textspace.text="loaded";}
}
类主类调度事件:
import flash.events.*;
public class ProxyStream extends Sprite {
public var progressstate:String="0";
//[Event(name="complete", type="flash.events.Event")]
[Event(name="complete", type="flash.events.Event.COMPLETE")]
private function complete(e:Event):void {
progressstate="1";
dispatchEvent(e);
dispatchEvent(new Event("COMPLETE", true, true));
//dispatchEvent(new Event(Event.COMPLETE, true, true));
//dispatchEvent(new DataEvent("COMPLETE", false, false, e.target.data));
}
}
正如我们所看到的,代理的数据添加到显示列表中。是的,功能完全触发,因为当我在2秒后检查progressstate时,它的值为1.我尝试了许多不同的调度事件方式。我仍然无法在我的主课堂中获得此类课程。如果可能的话,我也希望能够使用此事件发送数据,而无需创建其他自己的事件类。谢谢你的帮助。
试装 – www0z0k 2012-03-08 09:32:41
不知道这是否是问题,但你完全处理程序在testproxy类不正确的参数设置(它应该是'完整的(事件前添加监听器:事件)应在'事实上会导致编译器错误。)。如果您发布ProxyStream类的其余部分,也可能会有所帮助。 – 2012-03-08 09:33:59
尝试将dispatchEvent中的“COMPLETE”更改为小写。 flash.events.Event.COMPLETE ==“complete”(小写) – Eduardo 2012-03-08 09:34:43