0

外部ファイルなしで単一の SWF を作成する必要があるため、[埋め込み] アセットを持つ Flash プロジェクトに内部プリローダーを追加しようとしています。[embed] はアセットをフレーム 1 に配置するため、プリローダーで問題が発生することはわかっています。これらの投稿で推奨されている解決策を試しました。ここでは、ドキュメント クラスをプリローダー クラスに設定します。

バイト配列が埋め込まれた SWF のプリローダー

AS3 でプリローダーを作成する方法

動作させることはできますが、ステージに関連するコード行をコメントアウトした場合にのみ、「エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません」というメッセージが表示されます。これらの行は不可欠ですが、ステージでこれらのエラーを修正する方法を知っている人はいますか?

4

1 に答える 1

0

あなたは自分のコードや fla を投稿していないので、私にできることは、自分にとって何がうまくいくかを共有することだけです。

まず、Embed は使用しません。代わりに、swc を使用してください。Embed は、アセット全体を実際にそこに入れる限り、信頼できない可能性があることがわかりました (少なくとも、私のワークフローである Flash Builder + Flash Pro でパブリッシュする場合)。

アセットを swc に配置したら、次の手順を試してください。

  1. エクスポート フレームをフレーム 10 (または 1 以外の任意のフレーム - フレーム 10 が好きです。「プリローダー」というラベルを読み取ることができるからです)
  2. 実際のコンテンツをフレーム 11 に配置します。これはさまざまな方法で構成できます。インターフェイスにプログラムするので、フレーム 11 にあるものにインスタンス名を付けてから、セッターを使用して、私の「最初のもの」がステージに配置されたことを確認します。私のメイン ドキュメント クラスは、クラスの完全な実装ではなく、インターフェイスの定義だけを知っているので、これを回避できます。そのため、メイン ドキュメント クラスが機能するためにクラスをロードする必要はありません。あなたはおそらくタイムラインを実際には使用しておらず、おそらくインターフェイスにプログラムしていないので、フレーム 11 にあるシンボルの基本クラスを、実行しようとしているもののメイン ロジックに設定するだけでしょう。
  3. プリローダー グラフィックスをフレーム 1 に配置します。なぜステージ参照がそれほど重要なのかわかりません。個人的には、プリローダーでロジックを使用していません。代わりに、フレーム 1 ~ 10 (および "Loading..." という単語) にまたがるスピナーを使用します。クラスがロードされている間、スピナーは回転するだけです。埋め込みフレームは、一時的な「停止」として機能し、タイムラインをそれらまで保持します。クラスがロードされました. クラスがロードされると, タイムラインはあなたが呼び出しplay()たように動作します. したがって, それは本当に簡単です. もっと複雑にする必要がある場合は, プリローダーグラフィックスの1つにインスタンス名を付けて設定してください.そのためのゲッター/セッターのペアを作成し、セッターを使用して、ステージにアクセスするロジックをトリガーします. その時点で有効なステージがあることがほぼ保証されます.

警告: タイムライムを使用した場合、まだロードされていないフレームにジャンプしようとすると、奇妙な結果が得られます。メイン タイムラインの最後であり、メイン タイムラインは、goToAndPlay()またはを呼び出す前にアセットで重くなっていますgoToAndStop()

さらに役立つかもしれないいくつかの参照:

于 2013-02-08T04:37:45.980 に答える