関連ページ  
HTML コントロールで 簡易ブラウザ :【AIR Flex】


ブラウザでダウンロード

メインウインドウのコードと PDF の2次ウインドウのコードは
AIR のウインドウ (5) -- 2次ウインドウでHTMLコントロール


2) SWF


4) Google MAP



HTML -- 簡易ブラウザ
ブラウザとして利用するにはさすがにいろいろ問題があります。
まず、リンクが新しいウインドウを開くようになっていると動作しません。
デフォルトの target="_self" である必要があります。

また、何をもって複雑かは断定して言えませんが、
感覚的に複雑なページは表示できない場合があります。

さらに、初期ページが変更されてから、2次ウインドウを x ボタンで
閉じようとすると、HTMLLoader の focusOut でエラーになります。
これはバグと思われますが、タイトルの「閉じるボタン」を使用せずに
ウインドウ内にボタンを置いて close すると発生しません。
closing イベント内からいろいろやってみましたが、どうやっても
タイトルのボタンからはエラーになります

その為、このサンプルでは、タイトルの「閉じるボタン」が押された
場合は、closing でデフォルトの処理をキャンセルして、非表示に
するようにしています。その為、メインウインドウでもそれを考慮
しています。

※ 後、ここではタイトルのスキンを変更しています
HtmlWindow.mxml
001.<?xml version="1.0" encoding="utf-8"?>
002.<mx:Window
003.    xmlns:mx="http://www.adobe.com/2006/mxml"
004.    horizontalAlign="center"
005.    verticalAlign="middle"
006.    type="normal"
007.    systemChrome="none"
008.    transparent="false"
009.    showFlexChrome="true"
010.    alwaysInFront="false"
011. 
012.    initialize="initData();"
013.    creationComplete="initApp1()"
014.    applicationActivate="initApp2()"
015.    closing="endWindow(event)"
016.    resize="webResize(event)"
017. 
018.    width="750"
019.    height="550"
020. 
021.    title="  ブラウザ"
022.    styleName="myTitle"
023.>
024. 
025.<mx:Style>
026..myTitle {
027.    titleBarBackgroundSkin: Embed("gold.png");
028.}
029.</mx:Style>
030. 
031.<mx:Script>
032.<![CDATA[
033. 
034.    import mx.core.*;
035.    import mx.events.*;
036. 
037.    // *********************************************************
038.    // endWindow
039.    // *********************************************************
040.    private function endWindow(e:flash.events.Event):void {
041. 
042.        trace("[App:closing]");
043. 
044.        // 閉じて終了せずに、非表示にする
045.        e.preventDefault();
046.        // minimize しておくと、復帰する時にアクティブにできるので
047.        this.minimize();
048.        // 先に minimize しないと、消えない。
049.        // 最小化のアニメーションを無くして消したい場合は、
050.        // どうしてもタイマーが必要なので
051.        this.visible = false;
052. 
053.    }
054. 
055.    // *****************************************************
056.    // HTML コントロール のサイズコントロール
057.    // *****************************************************
058.    private function webResize(e:mx.events.ResizeEvent):void {
059. 
060.        try {
061.            web.width = this.width-2;
062.            web.height = this.height-45-10-url.height;
063.        }
064.        catch (error:Error) {
065.        }
066. 
067.    }
068. 
069.    // *****************************************************
070.    // 初期処理
071.    // *****************************************************
072.    private function initData():void {
073. 
074.        web.location = "http://www.google.co.jp"
075.        url.text = web.location;
076. 
077.    }
078. 
079.    // *********************************************************
080.    // creationComplete
081.    // *********************************************************
082.    private function initApp1():void {
083. 
084.        trace("[App:afterDisplay]");
085.//      web.htmlLoader.navigateInSystemBrowser = true;
086. 
087.    }
088. 
089.    // *********************************************************
090.    // applicationActivate
091.    // *********************************************************
092.    private function initApp2():void {
093. 
094.        trace("[App:start]");
095. 
096.    }
097. 
098.]]>
099.</mx:Script>
100. 
101.<mx:TextInput
102.    id="url"
103.    width="95%"
104.    fontSize="10"
105./>
106.<mx:HTML
107.    id="web"
108.    width="750"
109.    height="550"
110.    location="{url.text}"
111./>
112. 
113.</mx:Window>