2012-12-02 3 views
0

나는 내가 만든 스크롤바 클래스를 사용하여 프레임별로 프레임을 스크롤 할 수 있도록 내 플래시 타임 라인에 포함 된 영화를 가지고 있습니다. 그러나 영화의 크기가 약 10MB이기 때문에 HTML5 또는 플래시 형식의 프리 로더가 있어야 영화가로드 될 때까지 포스터 이미지 나 다른 것을 표시 할 수 있습니다. 프리 로더를 사용하여 무비 클립을 동적으로로드했지만 무비 클립이 타임 라인에 포함 된 경우 어떻게해야합니까? 나는 모든 자산이로드 될 때까지이 작업이 실행되지 않는다고 생각했기 때문에 $ (window) .ready 함수를 사용하여 창에 포스터 이미지를 숨기려고 시도했지만 플래시에서는 작동하지 않는다고 생각하여 저도 플래시 안에서해야만 할 것 같아요.플래시 as3 & html5 - 타임 라인에 영화 클립이 포함 된 프리 로더

답변

0

메인 무비 클립 (기본 타임 라인)에서 첫 번째 빈 프레임을 추가해야합니다 (가볍고 빠르게로드해야 함). 그럼 멈춰야 해. MovieClip. 중지 된 후에는 loaderInfo.bytesLoaded/loaderInfo.bytesLoaded 특성을 계속 확인하고로드 프로세스의 백분율을 표시 할 수 있습니다.

이 조각은 도움이 될 수 있습니다 (당신은, 또는 메인 클래스의 생성자 메서드에 타임 라인의 첫 번째 프레임에 코드를 삽입 할 수 있습니다) :

//create a text field to show the progress 
var progress_txt:TextField = new TextField(); 
//stop the timeline, will play when fully loaded 
stop(); 
//position text field on the centre of the stage 
progress_txt.x = stage.stageWidth/2; 
progress_txt.y = stage.stageHeight/2; 
addChild(progress_txt); 

//add all the necessary listeners 
loaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress); 
loaderInfo.addEventListener(Event.COMPLETE, onComplete); 


function onProgress(e:ProgressEvent):void 
{ 
    //update text field with the current progress 
    progress_txt.text = String(Math.floor((e.bytesLoaded/e.bytesTotal)*100)); 
} 

function onComplete(e:Event):void 
{ 
    trace("Fully loaded, starting the movie."); 
    //removing unnecessary listeners 
    loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onProgress); 
    loaderInfo.removeEventListener(Event.COMPLETE, onComplete); 
    //go to the second frame. 
    //You can also add nextFrame or just play() 
    //if you have more than one frame to show (full animation) 
    gotoAndStop(2); 
} 
0

나는이 나를 위해 작동하지 않는 이유를 모르겠어요 .. 추적 문조차 발사되지

stop(); 

var percent:Number; //used to show loader progress 

loaderInfo.addEventListener(Event.COMPLETE, onGameLoaded); 
loaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoaderProgress); 
trace(loaderInfo.bytesLoaded, loaderInfo.bytesTotal); 

function onLoaderProgress(event: ProgressEvent): void { 
    trace("Progress called"); 
    percent = (event.bytesLoaded/event.bytesTotal); 
    preloader.bar.scaleX = percent; 
    preloader.percentageTxt.text = String(Math.round(percent * 100)) + "%"; 
} 

//Event-handler for when this main controller is completely loaded 
function onGameLoaded(event: Event): void { 
    loaderInfo.removeEventListener(Event.COMPLETE, onGameLoaded); 
    loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onLoaderProgress); 
    trace("Game completely loaded"); 
    play(); 
} 

, 타임 라인 앞으로 이동하지 않습니다

다음은 기본 타임 라인에, 내 코드입니다.

+0

아, 문제가 발견되었습니다. 코드가 첫 번째 프레임에 배치 된 경우에만 작동합니다. 첫 번째 프레임에는 간단한 "로드 중"텍스트 필드가 있고 두 번째 프레임에는 프리 로더가 있습니다. 이렇게하는 이유는 프리 로더 막대와 애셋이로드되기 전에 사용자가 완전히 빈 화면을 보지 못했지만 작동하지 않는다는 것입니다. – Qasim