AS3でローディングを実装
Flashコンテンツでローディングの実装は重要です。
特に容量の大きいコンテンツの場合、全てのコンテンツがロードされていない状態でFlashが再生されてしまうと、再生がカクカクしたり、途切れたりと、見苦しいものになってしまいます。
それらを防止するために、全てのコンテンツのロードが完了してからFlashを再生するしくみが必要なわけです。
通常では、タイムラインを用いて、初めのフレームのところでローディングのアクションを構築して、ActionScriptでローディング完了を判定して、次のメインのフレームへジャンプするという処理のようです。
プログラマ出身なので、タイムラインの操作はあまり得意ではありません。どうせActionScriptを記述するのならば、全部ActionScriptで完結させたいものです。
処理のステップとしては、
1.ローディングムービーを再生し、ローディング状態を監視するイベントを登録する
2.ローディングが完了したら、監視イベントとローディングムービーを排除し、通常コンテンツを呼び出す
3.通常コンテンツを再生
となります。
動作未確認、かつ、だいぶ省いてますが、、、ActionScript3でサンプルコードを書いてみました。
function Main() { /* ローディングのムービークリップなどを追加 */ // ローディング監視開始 addEventListener(Event.ENTER_FRAME, loadCheck); } function loadCheck(e:Event):void { // ローディングの進捗状態を取得 var percent:int = Math.ceil(loaderInfo.bytesLoaded / loaderInfo.bytesTotal * 100); // ローディング完了 if(percent >= 100) { // ローディングの監視終了 removeEventListener(Event.ENTER_FRAME, loadCheck); /* ローディングのムービークリップなどを排除 */ // メイン処理を開始 startMainContents(); } } function startMainContents():void { /* メインとなる処理 */ }
このブログのトップページのFlashでも同じような処理を組み込んでいます。ただ、それほど容量がないので、ローディングムービーを見ることはほとんどありませんが。。。今後、容量が大きくなったときのために。
少し凝った作りにして、ローディングの状態(0~100%)の数値を使ってローディングムービーをコントロールするとかっこいいのですが。暇なときにチャレンジしてみます。
コメントする