2009-06-03 5 views
0

(swf에서) 미니 게임을로드하기위한 프레임 워크를 구축 중이며 문제가 발생했습니다.여러 이벤트를 actionscript 3의 단일 eventHandler에 대기시키는 방법은 무엇입니까?

나는 현재 자식 minigame이 부모 프레임 워크에 보내는 이벤트를 수신하는 수신기가 있습니다. 그러나 자식이 두 메시지 (이벤트)를 너무 가깝게 보내는 경우 첫 번째 이벤트가 무시되어 일부 메시지가 상위 프레임 워크에 전혀 도달하지 않는 것으로 보입니다.

나는 eventscript 이벤트를 어떻게 든 큐에 넣을 수 있기 때문에 이벤트는 FIFO 단위로 처리된다고 읽었습니다. 어떻게해야합니까? 문서가이 문제에 대해 꽤 부족한 것 같아서, 나는 혼란 스럽다.

감사합니다.

+1

는 흠 ...이 정말 이상하다 ... AVM2는 당신이 이벤트를 전달하면 실행을 계속하기 전에, 모든 핸들러 함수가 호출 ... 단일 스레드입니다 ... 당신은 범위를 좁힐과를 게시 할 수있는 문제를 재현 할 수있는 최소 설정? greetz back2dos – back2dos

+0

예, 분명히 여기에 뭔가가있는 것 같습니다. 아마도 이벤트 발송 코드를 게시하고 구조를 조금 설명하십시오. 그들은 같은 장소에서 같은 방식으로 파견됩니까? –

+0

추가 조사에서 AVM2가 단일 스레드이므로 다른 메시지를 보낼 기회가 생기기 전에 자식 swf를 죽인 이벤트를 보냈습니다. 그래서 문제가 해결되었습니다! 당신의 도움을 주셔서 감사합니다. – futureelite7

답변

2

다음과 같은 질문이있는 코드를 게시해야합니다. 다른 것들도 옳습니다. 여러분이 어딘가에서 실수를 한 것처럼 들리지만, 이런 종류의 문제가 코드를 수반 할 때 도움이되는 것이 훨씬 쉽습니다.

는이 같은 꽉 루프에서 이벤트를 파견하더라도 말했다 :

addEventListener("foo", handleFoo, false, 0); 

for (var i:int = 0; i < 100; i++) 
{ 
    dispatchEvent(new FlexEvent("foo")); 
} 

private function handleFoo(event:Event):void 
{ 
    trace("hello"); 
} 

이 ... 당신이 그 루프의 반복만큼 "hellos"를 볼 것; 그것은 그것보다 훨씬 더 가까이에 있지 않습니다. 이벤트 을 우선 처리 할 수 ​​있습니다. - 예를 들어,이 리스너는 먼저 호출되므로 (위의 "0"),이 다른 리스너는 두 번째로 호출됩니다 ("1"), 등등 - addEventListener 함수의 priority 인수를 사용하여 (다시, 위 참조),하지만 그것에 관한 것입니다. 큐를 직접 작성하지 않는 한 이벤트 전달 대기열은 내장되어 있지 않습니다.

관련 문제