外部SWFを表示する
GW前から、すっかりサボってしまいました。1週間ぶりの更新。
GWはETC割引に乗っかって、車で出かけてましたが、
大渋滞にはまったりで大変な目に(たぶん、誰でも予想できた事なんでしょうが)。
まぁ、これは別のお話なので、別のエントリーにするかも(しないかも)。
さて、今回はAIRで作ったアプリから、別のSWFを表示する例を。
これは、Java側で生成したSWFを、AIR側で表示するために必要な処理。
前のエントリーでAIRBootについてちょっとだけ触れたけど、必要な処理のヒント(というか全て)はそこのページに書いてある。
手順は、
- NativeWindowを作る
- Loaderを作って、1.で作ったNativeWindowに追加する
- ターゲットのSWFを、2.で作ったLoaderでロードする
これだけだったりする。
必要最小限のコードはこんな感じかと。
public function openSwfUrl(url:String):void { var initOptions:NativeWindowInitOptions = new NativeWindowInitOptions(); // …a // initOptions.maximizable = true; // initOptions.minimizable = true; // initOptions.resizable = true; // initOptions.systemChrome = NativeWindowSystemChrome.STANDARD; // initOptions.type = NativeWindowType.NORMAL; // initOptions.transparent = false; var window:NativeWindow = new NativeWindow(initOptions); // …b window.visible = true; // window.x; // window.y; // window.width; // window.height; // window.maxSize; // window.minSize; var loaderContext:LoaderContext = new LoaderContext(); loaderContext.allowLoadBytesCodeExecution = true; // …c window.stage.scaleMode = StageScaleMode.NO_SCALE; window.stage.align = StageAlign.TOP_LEFT; var loader:Loader = new Loader(); window.stage.addChild(loader); // …d var urlrequest:URLRequest = new URLRequest(); urlrequest.url = url; loader.load(urlrequest, loaderContext); // …e }
引数は開きたい外部SWFのURL。
NativeWindowのコンストラクタには、NativeWindowInitOptionsが必要なので、
それをあらかじめ作っておき(a)、好みに応じてパラメータをいじる。
次にNativeWindowを作り(b)、NativeWindow.visibleプロパティはtrueに設定。
その他のプロパティは好みに応じて。
LoaderContextを作り、allowLoadBytesCodeExecutionプロパティをtrueに設定(c)。
その下、2行も含めて、この辺はおまじない。
LoaderをNativeWindowに追加して(d)、URLRequestを引数にLoader.loadメソッドを実行すると(e)、
NativeWindowが表示され、指定した外部SWFが中に表示される。
以上の処理で、外部のあるSWFを動的にロードして表示することができるようになる。
一応、こういう処理パーツは出来上がっているんだけど、
アプリとしての仕上がりがまったく進まないんだよなぁ…。
参考URL