2016-07-09 16 views
0

이 질문을 여러 번 받았지만 일부 독서 후에도 문제를 해결할 수 없다는 것을 알고 있습니다. 내가 가지고있는 것 : 프리 로더 프리 로더 이후에 일어날 게임 실제로 일어나는 일 : 프리 로더 전에 모든 구성 요소가로드되어 프리 로더가 쓸데없는 하하가됩니다. "프레임 1의 클래스 내보내기"를 "프레임 2"로 변경했지만 사용할 수 없습니다. 외부 프리 로더를 사용하지 않는 것을 선호합니다. 내가 잘못플래시 AS3 프리 로더가 100 %까지 표시되지 않음

https://pp.vk.me/c630919/v630919494/37371/sgdJTWian6Q.jpg

를하고있는 중이 야 무엇 :

여기 내 코드입니다 :

stop(); 

this.addEventListener(Event.ENTER_FRAME, loading); 

function loading(e:Event):void{ 

    var total:Number = this.stage.loaderInfo.bytesTotal; 
    var loaded:Number = this.stage.loaderInfo.bytesLoaded; 

    preloader.scaleX = loaded/total; 

if (total == loaded){ 
    nextFrame(); 
    this.removeEventListener(Event.ENTER_FRAME, loading); 
} 

} 

그리고 여기입니까?

+1

코드에 중단 점을 설정하고 디버거를 실행하는 방법을 알고 있습니까? 당신이 그것을 할 수 있다면 아마 당신 스스로 그것을 해결할 것입니다. 나는 항상 출력 창으로 값을 추적한다. –

+0

@NealDavis 글쎄, 나는 일반적으로 게으른 경우 JS에서''1 ''을 추적한다. 수업 중에 이것을 실행하고 있습니까? – Hydro

+0

프리 로더가 프레임 1에만 있는지 확인하십시오. 그리고 라이브러리에서 프레임 1로 자산을 내보내지 않도록하십시오. Flash는 무언가를하기 전에 항상 첫 프레임을로드합니다. 따라서 무언가가 아직 남아 있습니다. – Philarmon

답변

0

this.root.loaderInfo를 사용하여 리스너를 추가해야합니다 (이 방법은이 조건에서 작동하지만 더 좋을 수는 없으므로).

  1. , 그냥 기본값을 유지 "1 => 2 프레임으로 내보내기 클래스"를 변경할 필요가 없습니다;
  2. 첫 번째 프레임 코드는 다음과 같이 할 수있다 :
    import flash.events.ProgressEvent; this.root.loaderInfo.addEventListener(ProgressEvent.PROGRESS,loaderProgressHandler); function loaderProgressHandler(evt:ProgressEvent):void { preloader.scaleX = evt.bytesLoaded /evt.bytesTotal; }이 같은
  3. 두 번째 프레임 (당신이 실제로 싶어 쇼) 코드 : 당신이 진행 명확하기 때문에 볼 수없는 all.Maybe있어
    stop();
  4. 지역의 시뮬레이션 속도가 너무 빠릅니다. 종료 "Ctrl + Enter"를 두 번 눌러 "시뮬레이션 다운로드"를 시도 할 수 있습니다.
0

클래스 내보내기 프레임이 엉망이되는 것을 피하기 위해 일반적으로 두 번째 SWF를 사용하여 미리로드합니다. 그것은 완벽하게 작동합니다. 큰 SWF가로드되면 로더 동영상의 모든 메모리를 지우는 것만으로 충분합니다. 이렇게하면 슈퍼 단순화 된 프리 로더를 유지할 수 있습니다. 일부 프로젝트에서는 게임 서버 연결 대기 시간에 동일한 프리 로더를 사용했습니다. 그것은 다용도이며 주요 애플 리케이션 로직을 괴롭히지 않습니다.