質問

Flash アクション スクリプト 3 では、テキストを読み込む必要がある場合、次のクラスを使用します。 URLLoader, 、そして、画像(または.swf)をロードする必要がある場合は、「ローダー」と呼ばれるクラスを使用します。私の知る限り、.bmpをロードする URLLoader .xml をローダーにロードするのと同じくらい役に立たず、計算されません。

ロードされる外部アセットのキューを処理するクラスを作成しています。しかし、ファイル拡張子をチェックアウトするためにターゲット URL を分割する以外に、各 URL に URLLoader またはローダー。いずれにせよ、.php URL が画像またはドキュメントを返す可能性があることは想像できます。したがって、使用するローダー クラスの適切なタイプを決定するためにファイル名を当てにする方法はありません。

URL ごとにジョブに適したクラスを確実に検出する方法について何かアイデアはありますか?

役に立ちましたか?

解決

そうですね、最も難しい問題は、ターゲットの種類を特定することです...

  1. URL を確認するのは非常に簡単ですが、常に機能するとは限りません...PHPなどから画像を提供する人もいます...
  2. ブラウザのように行うこともできます...ロードを開始して、それが何であるかを見てください...ここでもまた、複数の可能性があります...
    1. データをバイナリデータとしてロードします...完了したら、開始シーケンスを見てください...PNGですか(89 50 4E 47 0D 0A 1A 0A)?GIF (47 49 46 38 39 61)?JPEG (FF E0)?SWF ("FWS" (面白いですよね?))?それ以外はテキストまたはテキストベースである必要があります...画像の場合は、画像を LoaderLoader::loadBytes ...SWF には注意してください...そのようなグラフィカル SWF のみをロードする必要があります...それ以外の場合は、正しいエンコーディングを使用して String に変換します (理想的には、テキスト データは utf8 で提供されます)。XML、JSON、または URL エンコードされた変数であるかどうかは、すでに推測できるかもしれません...(クラスを使用して) 解析してみてください XML, com.adobe.serialization.JSON, flash.net.URLVariables) ...すべてが失敗した場合、それはおそらく単なるテキストです (表面的に確認してみることもできます...それについて意見が必要な場合は、コメントを残してください)...
    2. をする HTTP あなた自身...ソケットを開いてソースをロードします...さらに MIME タイプも取得します...頼れるものは何もありませんが、役に立ちます...ある HTTP での実装 AS3 ...データを入手したら
  3. 型を手動で渡します...純粋でシンプルな...そしてあなたは他の誰にも依存しません...

Loader と URLLoader の間には重要な違いもあります...ローダーはドメイン間でデータをロードでき、コンテンツをサンドボックス化して内容を調べることができないようにします。URLLoader はドメインからのみロードでき、クロスドメイン ポリシー ファイルを使用してこれを明示的に許可するドメインからのみロードできます。

また、単なる外部グラフィック アセットではなく、実際にインターフェイスしたい SWF をロードする場合は、LoaderContext などを制御する必要があるため、これを使用しないでください。...

それで、ええ...どの道を選んでも、幸運を祈ります...;)

挨拶します

バックツードス

他のヒント

バルクローダー URL に基づいていくつかの推測をします。ソースを覗いて、どのように行うかを確認してみてはいかがでしょうか。

個人的に、私はあなたがそれが画像やXMLである場合は、オブジェクトをロードしたい正確にどのように指定します。私はいくつかのキューローダーを記載しておりますので、私はあなたがそれは、負荷の優先度、およびタイプをロードした場合だけで、URL文字列が、ロードするURL、のようなものを持つオブジェクトのセットを追跡いけないことを示唆しています。ここではいくつかのpsudoコードです。

class QueueObject{
  var URLtoLoad:String;
  private var hasLoaded:Boolean = false;
  var isDataObject:Boolean = false;
  var queuePriority:Number = 3; // 
}

さて、あなたのコードで、あなたのキューに何かを追加したい。

単に行く

var loadObject:QueueObject = new QueueObject();
loadObject.URLtoLoad = "http://theurl.com/somedata.xml";
loadObject. isDataObject= true;

//ここでキューを管理するであろう、あなたが書かれている素晴らしいローダークラスにこれを押してください。私はロードするオブジェクト、現在のスコープの例を参照する、この、あなたはこのオブジェクトがロードされたときに呼び出したい関数の名前を送信します。

MyStaticLodingClass.addQueueObject(loadObject, this, myFunctionThatYouWillCallWhenDone); 

上記のそのクラスは今、あなたは自分のタイプが何であるかを、ロードし、そのURLのためにあなたにアイテムを与えるために優先順位で並べ替えることができます配列を持っている必要があります。こうすることができます。

これは役立つかいない可能性があります。

他には賢明なあなたは、例えばBMPをロードし、このオブジェクトのルックアップに基づいて正しいローダーを使用しようとしているオブジェクトの種類を把握するために何かを作ります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top