2010-05-20 2 views
2

일련의 AS2 동영상을로드하는 래퍼 SWF가 있습니다. 각 AS2 동영상은 일련의 .png 파일을로드합니다. 내가 onLoadInit를 사용하여 PNG 파일의로드를 수신하고 내 UI를 업데이트 AS2의 내부AS3 swf 래퍼에로드 된 AS2 swf에 외부 png로드

AS3_wrapper.swf 
|-> AS2_1.swf 
     |-> image_1.png 
     |-> image_2.png 
|-> AS2_2.swf 
     |-> image_1.png 
     |-> image_2.png 

.

이것은 첫 번째 AS2 swf에서 정상적으로 작동합니다. 하지만 두 번째 AS2 swf를로드 할 때 onLoadInit은 png에 대해 트리거되지 않습니다. 내 생각 엔 이미지가 캐시에 있거나 그와 비슷한 것입니다. 요청의 끝에 임의의 문자열을 넣어 캐시를 피하려고했지만 작동하지 않는 것 같습니다.

AS2의 코드는 다음과 같이 대략 같습니다

나는 한 번에 하나의 이미지를로드 할 수 있는지 만들고있어
var flagLoader:MovieClipLoader = new MovieClipLoader(); 
var listener:Object = new Object(); 
listener.onLoadInit = Delegate.create(this, handleImageLoad); 
flagLoader.addListener(listener); 
var row:MovieClip = frame1["row" + (numLoaded + 1)]; 
flagLoader.loadClip(predictionData[numLoaded].flag + "?r="+Math.random(), row.flag); 

는 (I는 한 번에 두 개 이상의 일을로드 일화를 읽은 수 MovieClipLoader을 혼동). 첫 번째 as2 파일의 경우 모두 잘 작동합니다. 두 번째 as2 파일을로드 할 때 handleImageLoad이 호출되지 않습니다.

업데이트 : 내가 처음 AS2 영화 (두 번째 AS2 영화가 이미지를로드하는 데 실패 후) 첫 AS2 영화 다시 좋은 이미지를로드 다시로드하면 더욱 곤혹이다.

업데이트 2 : MovieClipLoader 사용에서 폴링 (유용하게 제안 됨)으로 변경하려고 시도한 후에 관련성이 높은 몇 가지 증거를 발견했습니다.

나는 최상위 레벨에서 첫 번째 AS2 파일 및 추적로드

_root를 출력 클립. 로드 될 때 두 번째 AS2 파일은 동일한 _root을 추적합니다. 이것은 내가 그들이 이름에 충돌하고 있는지 확인하도록 이끌었다. 둘 다 frame이라는 아이가 있습니다. 첫 번째 것은 내가 추적 할 때 예상대로 _root.frame으로 나옵니다. 두 번째 AS2 파일은 _level0.instance3.instance118.instance111.frame을 추적합니다. 나는 이것이 문제와 관련이 있다고 생각한다. 플래시는 두의 _root를 유지하고있다

는 같은 파일하지만 (같은 이름을 가진 아이들이 나중에로드 파일) 자녀의 위치를 ​​변경한다. 따라서 onLoad가 잘못된 클립으로 이동하거나로드에 대한 이벤트가 발생합니다. AS3에서

답변

0

실행 AS2는 당신이이 장전 인식하기 전에로드 된 SWF를 몇 번 폴링 할 필요가 .... 대기 시간 문제를 소개하는 것.

비슷한 상황입니다 ... AS3 셸이 많은 외부 swf, 종속성 등으로 크고 복잡한 AS2 응용 프로그램을로드하는 중입니다. Watcl는 loadClip 호출 이후에 간격을두고 바이트를 비교하는 것이 었습니다 바이트 합계로로드 ... 그때 그들이 서로 같았지만 4를 넘었을 때 나는 결코 발사하지 않을 onLoadInit 함수를 안전하게 발사 할 수 있었다.

그래서 당신은 당신이 FP5와 FP6 일 다시거야 ..의 MovieClipLoader가 AS2에 준 모든 초기화 진행 및 오류 이벤트를 잃을하지만 안정적으로 작동하는 것처럼 보인다. 다른 사람들의 경험에 대해 듣고 싶고이 문제를 해결할 더 좋은 방법이 있다면.

+0

시도해보고 작동하면 여기에 다시보고 해 드리겠습니다. 사실이라면 정말 짜증나지만 가능한 해결 방법이 있다는 것에 감사드립니다. –

+0

당신의 솔루션이 저에게 맞지 않을까 걱정됩니다. 하지만 그것은 더 많은 정보를 추적하는 데 도움이되었습니다. 어쩌면 다시 내 설명을보고 더 많은 정보를 제공 할 수 있습니다. –

0

제임스,

당신은 바로, 나 또한 _root 판독 _level0.instance3.instance118 대 당신이 설명 추적 스택,이 AVM2 AVM1 내용에 어떻게 관련되어 있어야 것으로 나타났습니다있어 영화가 그것을 처리합니다.

폴링하지 않습니다 항상 작업을하지만 당신은 당신이 loadClip() 방법을 발사 후에는 무슨 일이 일어나고 있는지 볼 수 있습니다. 바이트가로드되었는지으로 정의되지 않았습니다.? 또는 swf가로드되었지만 swf의 기본 타임 라인에 선언 된 변수와 같은 속성에 액세스 할 수 없습니다. 나는이 문제에 깊이 관여했으며 본질적으로이 문제를 해결하기 위해 두 가지 또는 세 가지 방법이 있다는 것을 알게되었습니다. 폴링 AS2 컨테이너는 실패하는 것을 볼 수있는 첫 번째 단계는

당신은 당신의 .pngs이의 MovieClipLoader 의 loadMovie를 사용하는 대신 에로드받을 수 ....입니까?

FP10.1에서 예제를 실행 해 보았습니까? 이상하게도 이러한 문제가 많이 사라집니다!

AS2 응용 프로그램의 복잡성에 따라 해결하기가 힘든 문제 일 수 있습니다.

당신이 체크 아웃 : http://fladdict.net/blog-en/2007/06/avm2loader-class.html

덕분에, 제프

+0

Geoff에 대한 의견을 주셔서 감사합니다. MovieClipLoader 대신 loadMovie를 시도한 결과가 같습니다. bytesLoaded 속성을 폴링하면 4 또는 이상한 것을 반환합니다. 저는 최신 10.1 플레이어를 사용하고 있습니다. 그물에 대한 다른 보고서가 하나 또는 두 개 있지만 아무도 나를 위해 작동 할 수있는 해결 방법이 없습니다. 대부분은 as2 swf를 어떤 방식 으로든 변경하는 것과 관련되어 있습니다. –

1

을 한 번 모든 3~4년 내가

나는 온 ... 나는 마침내 나를 깰 것이라고 생각 문제가 건너 이 포스트에서 AVM1 동영상을 AVM2 동영상 파일에 성공적으로로드 했는데도 AVM1 파일이 예상대로 실행되지 않는 이유를 알아 내려고했습니다.

AS2 - AS3 파일간에 통신 할 수 없다는 초기의 큰 문제를 해결하면서 AVM1 영화가 항상 재생을 시작한 직후에 중단 된 것처럼 보였습니다.

내게있어 MovieClipLoader loadClip() 메서드는 어느 진행 상황이나 완료 이벤트도 발생시키지 않아 결과적으로 내 파일 재생이 완전히 멈추게되었습니다. 둘 다 제안했습니다.

loadClip 호출 이후에 간격을두고 실행 한 바이트 수를 총 바이트 수와 비교하는 제안 사항.

감사합니다. 감사합니다. 감사합니다. 감사합니다. 감사합니다. : D

관련 문제