都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

AIR で画面を表示してみた

 AIR 初心者ということで、まずは画面の表示から検証してみたいと思います。AIR アプリケーションで作成してみたいと思います。最初の細々とした設定は飛ばして、ソースを記述するところから説明します。(画面を貼るのが...) 

 ボタンを配置して、イベントハンドラを設定します。

f:id:koogucc11:20130922143402j:plain

 ボタンのイベントに対して、下記のソースを記述します。NativeWindow クラスを使用して実現することが可能です。

<fx:Script>
	<![CDATA[
		protected function button1_clickHandler(event:MouseEvent):void
		{
			import flash.display.NativeWindow;
			import flash.display.NativeWindowInitOptions;
			
			// ウィンドウの初期化用の設定
			var window_options:NativeWindowInitOptions = new NativeWindowInitOptions();		
			// ウィンドウを作成
			var window:NativeWindow = new NativeWindow(window_options);
			window.visible=true;
		}
	]]>
</fx:Script>

 実行結果は下記の通りです。

f:id:koogucc11:20130922144058j:plain

 次に、NativeWindow で生成した画面上にコントロールを配置する方法ですが、少し面倒に感じてしまいました。( AIR ではこれが普通なのでしょうか?)方法は下記の通りです。(他にもっと賢いやり方があるのでしょうか?)

 新規の MXML アプリケーションを作成します。作成したアプリケーションの画面を下記のように変更します。

f:id:koogucc11:20130922144834j:plain

f:id:koogucc11:20130922144922j:plain

 以下のソースを記述することで、生成した NativeWindow に指定した SWF の内容がロードされます。

<fx:Script>
	<![CDATA[
		protected function button1_clickHandler(event:MouseEvent):void
		{
			import flash.display.NativeWindow;
			import flash.display.NativeWindowInitOptions;
			
			// ウィンドウの初期化用の設定
			var window_options:NativeWindowInitOptions = new NativeWindowInitOptions();
			
			// ウィンドウを作成
			var window:NativeWindow = new NativeWindow(window_options);
			//ローダーを生成
			var loader:Loader = new Loader();
			//ComponetTest.swfを指定
			var url:URLRequest = new URLRequest('ComponentTest.swf');
			//ローダーにSWFファイルをロード
			loader.load(url,null);
			//NativeWindow の stage に対して、SWF ファイルをロード
			window.stage.addChild(loader);
			
			window.visible=true;
		}
	]]>
</fx:Script>

 実行結果は下記の通りです。(あら、大きさが無茶苦茶ですね。)

f:id:koogucc11:20130922151027j:plain

 うーん、結構手間がかかりますね。何か他にいい方法がないのでしょうか? (教えて AIR のすごい人!)