2016-07-09 11 views
0

これは何度も尋ねられていますが、何度か読んだ後でも私は問題を解決できません。 私が持っているもの: プリローダー プレローダーの後に起こるゲーム 実際にはどうなるのですか: プレローダーの前にすべてのコンポーネントがロードされます。プリローダーの前にすべてのコンポーネントがロードされます。私は、 "フレーム1のクラスを"フレーム2に変更しましたが、無駄にしました。 私は外部プリローダーを使用したくないです。ここでFlash AS3プリローダーは100%まで表示されません

は私のコードです:

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); 
} 

} 

そして、ここで、このです:私は間違って何をやっている

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

+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. 第二フレーム(もし実際たいショー)のようなコード:
    stop();
  4. あなたは地元のシミュレーションのではっきりと進行状況を確認することはできませんall.Maybeだこと速度が速すぎる。シャットダウン「Ctrl + Enter」を2回押して、「Simulate Download」を試すことができます。
0

私は、クラスエクスポートフレームの混乱を避けるため、通常は2番目のSWFを使用してプリロードします。それは完全に動作します。大きなSWFがロードされたら、ローダームービー内のすべてのメモリをクリアするだけで済みます。 このようにして、超シンプルなプリローダーを保つことができます。いくつかのプロジェクトでは、ゲームサーバー接続待ち時間に同じプリローダーを使用しました。それは汎用性があり、主なアプリケーションロジックを煩わせることはありません。