이벤트를 파견하는 것에 대해 많이 읽었지만 여전히 작동하지 않습니다. 클래스가 있고이 클래스를 사용하는 다른 클래스에서 이벤트를 볼 수있게하려고합니다. Main 클래스 : 메인 클래스에 대한 이벤트를 전달플래시 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));
}
}
, 프록시 데이터 목록을 표시하려면 추가됩니다. 그리고 네, function complete firing입니다. 왜냐하면 2 초 후에 progressstate를 확인하면 값이 1이되기 때문입니다. 이벤트를 파견하는 여러 가지 방법을 시도했습니다. 나는 아직도 나의 메인 클래스에서이 클래스 이벤트를 얻을 수 없다. 또한 가능한 경우 추가 이벤트 클래스를 만들지 않고이 이벤트로 데이터를 보낼 수 있기를 원합니다. 어떤 도움을 주셔서 감사합니다.
로드하기 전에 수신기를 추가하십시오. – www0z0k
문제가 아닌지 testproxy 클래스의 complete-handler에 올바른 매개 변수가 설정되어 있지 않습니다 ('complete (event : Event)'여야 함). 사실 컴파일러 오류가 발생합니다.). ProxyStream 클래스의 나머지 부분을 게시하는 경우에도 유용 할 수 있습니다. –
dispatchEvent의 "COMPLETE"를 소문자로 변경하십시오. flash.events.Event.COMPLETE == "완료"(소문자) – Eduardo