2012-01-11 15 views
0

私はこの問題を扱う良い方法を探していましたが、私が使っている言葉だけかもしれませんが、私が望む答えは見つけられません。私は何をやっているのか説明し、そこに誰かがこれを行う方法を説明できるようになることを願っています。限り.FLAは、それが正常に動作としてimages.xmlファイルは同じディレクトリに配置されるようURLReqeustsはファイルをWebサーバーに移動するときにファイルをロードできないのはなぜですか?

 var request:URLRequest = new URLRequest("images.xml"); 
     var loader:URLLoader = new URLLoader(); 
     loader.addEventListener(Event.COMPLETE, handleResult); 
     loader.addEventListener(IOErrorEvent.IO_ERROR, handleIOError); 
     loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleSecurityError); 

     loader.load(request); 

:私のマシン上のフラッシュプロジェクトを開発するとき

私のようなものを使用することができます。しかし、一度私は.swf、.xmlと私のイメージをウェブに移動すると、すべてが流出します。 .swfはもはや.xmlファイルを見つけることができず、私はその理由を知っています。 FlashBugを使用して、コンソールでエラーを読み取ることができます。

IOError: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. URL: http://www.mydomain.com/images.xml"] 

私のWebサーバに.swfを移動すると、URLRequestが自分のドメインをリクエストに追加するときに問題があります。ファイルは私のマシン上の同じディレクトリに置かれているだけなので、 "images.xml"と言うだけの問題は発生しませんでしたが、今度は "http://www.mydomain"に変更する必要があります.com/flash/myproject/images.xml "を参照してください。

強制的に.swfに必要なファイルがあるディレクトリを探し続けるようにする方法があるかどうかを知りたいのですが。私は、AS3コードを書き直さなくてもファイルを移動することはできないので、直感的ではないと思います。

私はこれを行うことができます知っている私はプロジェクトがそれを行うのを見た、私はちょうど彼らがそれをやった方法を知って欲しいと思う。

答えて

5

私はちょうどそれが必要なファイルのためにあるディレクトリに 外観に継続する.swfファイルを強制する方法があるかどうかを知りたいです。

はい、ありますが、オブジェクトタグと埋め込みタグのbase属性を使用できます。

デフォルトでは、ActionScriptの相対パスは、swfファイルに関係なく、Flashを含むページに対して解決されますが、base属性では、相対パスを解決するために使用される別のディレクトリパスを指定できます。

したがって、上記のあなたの例のパスのために、それはこのようなものになるだろう:

<param name="base" value="/flash/myproject/"> 

<embed base="/flash/myproject/" src="... 

それとも、swfファイルを埋め込むためにSwfObjectを使用する場合は、属性のパラメータを介してベースを指定することができます。

http://code.google.com/p/swfobject/wiki/documentation

編集

この上のフォロー、答えは持っているものの、すでに受け入れられていますが、HTMLの代わりにActionScriptでそれを処理するために最初にどこを探していたのか、また将来の読者のためにコメントしているからです:

何か理由がある場合や、 base属性をHTMLに追加する代わりに、ActionScriptの代わりにloaderInfo.urlを使用してswfのURLを取得し、そのディレクトリ部分を選択し、swfの横にあるファイルをロードするためのパスとして使用します。これは、コードのコメントを含め、私のプロジェクトからコピーされます。

// URL to the directory (folder) the main swf file is loaded from. 
// Can be used to load other files realtive to the swf (instead of realtive to the page, which is default). 
// So swfDir will normaly be like "http://www.site.com/upload/somefolder/" 
var swfDir:String = loaderInfo.url.substring(0, loaderInfo.url.lastIndexOf("/")+1); 

以降では、たとえばXMLファイルをロードしたい、あなたはどうなる:

var request:URLRequest = new URLRequest(swfDir + "images.xml"); 
+0

まあ理由を説明しているI自分でそれを見つけられませんでした...私はそれを埋め込むために使用したHTMLではなくAS3でそれを行うことを目指していました。ありがとうございました。 – Cleanshooter

+0

基本属性により、サイトのローカルビルドと本番サーバーとの間の転送に問題が発生していました。あなたの2番目のオプションは、私が答えを再度あなたに感謝を使用して終了したものでした:) – Cleanshooter

関連する問題