[AIR] インストール時に一緒にいれたswfへのパスを開発環境でも共通で使えるようにする!

2010/03/18

こんにちは。きんくまです。

今日、嫁と下の子が無事に退院しまして、家に帰ってきました。
やっぱり、新生児は「軽い!」。
いつも、上の子(3歳児)を抱っこしたりしてるのですが、なんせ16kgですからね。
そりゃ、ずっと抱っこしてたら疲れます。
出生届も役所に出したし、とりあえずはひと安心です。

————————————–
※2010/3/28 追記
下のfile.canonicalize();をやった場合に、ApplicationUpdaterUIを使い、アップデートを
行うと、アップデートが終わった直後の起動時にうまくいかないことが判明。
直後の回を手動で終了して、アプリを再起動するとまたうまく取得が可能。
ちゃんと調査ずみではないのですが、file.canonicalize();をやらなくてもうまくいく様子。
————————————–

さて、今回はAIRでの小ネタ。

■やりたいこと
・AIRアプリと一緒に、本体とは別のswfをインストールしたい。
・さらに、そのswfをAIR本体swfから読み込んで使いたい。
・その際にパスが問題なるけどどうするのか。
・さらに、開発環境と本番環境のパスが違ってくるのをどうするのか。

って感じです。

ファイル構成

こんな感じです。

├─air.fla(AIR本体)
├─air1.swf
├─air1-app.xml
├─contents(フォルダ)
   ├─contents1.swf(読み込みたい+インストールしたいファイル)

一緒にインストールする設定

ここではcontentsフォルダ全体をインストールする設定にしました

air_import_fig1

Fileクラスのcanonicalizeを使えばOK

アプリケーションの実行しているパスは

File.applicationDirectory

で取得できます。

それで、そのままそれを使ってloaderのURLに突っ込むとうまくいきません。
それで途方にくれてASDocをながめていたんですが、そしたらよさげな関数みっけ。
canonicalizeっていうやつでこいつを実行してあげると、うまく解決してくれました。
やったー。

これを使えば、本番でも開発でも両方共通のソースコードでやることができます。
参考のソースです。

package  
{
	import flash.display.Loader;
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.filesystem.File;
	import flash.net.URLRequest;
	/**
	 * ...
	 * @author KinkumaDesign
	 */
	public class AIRLoadTest extends MovieClip
	{
		private var _loader:Loader;
		
		public function AIRLoadTest() 
		{
			loadStart();
		}
		
		private function loadStart():void
		{
			_loader = new Loader();
			_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteHD);
			_loader.load(new URLRequest(getFileURL()));
		}
		
		private function loadCompleteHD(e:Event):void 
		{
			_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadCompleteHD);
			addChild(_loader);
			trace('load');
		}
		
		private function getFileURL():String
		{
			var file:File = File.applicationDirectory.resolvePath("contents/contents1.swf"); //コンテンツへのパス
			//file.canonicalize(); //これが重要!!!!!!←重要だと思ったけど違うっぽい。上の追記コメントを参照のこと
			return file.url;
		}
		
	}

}

自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る