我閱讀了很多關於調度事件的內容,但仍無法使其正常工作。我有一個類,並希望事件對其他使用此類的類可見。主類: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