나는 내가 만든 스크롤바 클래스를 사용하여 프레임별로 프레임을 스크롤 할 수 있도록 내 플래시 타임 라인에 포함 된 영화를 가지고 있습니다. 그러나 영화의 크기가 약 10MB이기 때문에 HTML5 또는 플래시 형식의 프리 로더가 있어야 영화가로드 될 때까지 포스터 이미지 나 다른 것을 표시 할 수 있습니다. 프리 로더를 사용하여 무비 클립을 동적으로로드했지만 무비 클립이 타임 라인에 포함 된 경우 어떻게해야합니까? 나는 모든 자산이로드 될 때까지이 작업이 실행되지 않는다고 생각했기 때문에 $ (window) .ready 함수를 사용하여 창에 포스터 이미지를 숨기려고 시도했지만 플래시에서는 작동하지 않는다고 생각하여 저도 플래시 안에서해야만 할 것 같아요.플래시 as3 & html5 - 타임 라인에 영화 클립이 포함 된 프리 로더
0
A
답변
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();
}
, 타임 라인 앞으로 이동하지 않습니다
다음은 기본 타임 라인에, 내 코드입니다.
아, 문제가 발견되었습니다. 코드가 첫 번째 프레임에 배치 된 경우에만 작동합니다. 첫 번째 프레임에는 간단한 "로드 중"텍스트 필드가 있고 두 번째 프레임에는 프리 로더가 있습니다. 이렇게하는 이유는 프리 로더 막대와 애셋이로드되기 전에 사용자가 완전히 빈 화면을 보지 못했지만 작동하지 않는다는 것입니다. – Qasim