HTMLLoaderクラスについて
・ | HTMLLoader クラスについて |
・ | HTML コンテンツを表示する |
・ | PDFファイルを読み込んで表示する |
・ | 読み込み履歴について |
・ | HTMLLoader のイベントについて |
・ | HTMLLoader から JavaScript にアクセスする |
・ | HTMLLoader から HTML用 AIR API を呼び出す |
HTMLLoader クラスについて
■HTMLLoader クラスについて
■ HTML のレンダリング表示が可能
HTMLLoader クラスを使うと、HTMLファイルを読み込んでレンダリングを行い表示することができます。
Safari や GoogleChrome 等のブラウザで採用されている WebKit エンジンでレンダリングが行われます。
HTML がレンダリングされるだけでなくブラウザのように動作します。
リンク先をクリックすると、新たなページが読み込まれ、レンダリング表示が更新されます。
■ JavaScript の実行が可能
JavaScript の実行も可能です。
「ActionScript」から「JavaScript のプロパティやメソッド」に、直接アクセスすることもできます。
■ PDFファイルの表示が可能
PDFファイルを表示する事もできます。
ただし AIR アプリを動作させているパソコン上に Adobe Reader 8.1 以降がインストールされている必要があります。
■ HTMLLoader クラスの派生について
HTMLLoader は、以下のクラスから派生しています。
ここで解説してない分はリンク先に解説がありますので合わせてご覧下さい。
DisplayObject クラスを継承しているので、スプライトのように制御する事ができます。
Object |
↓派生 |
EventDispatcher |
↓派生 |
DisplayObject |
↓派生 |
InteractiveObject |
↓派生 |
DisplayObjectContainer |
↓派生 |
Sprite |
↓派生 |
HTMLLoader |
■モバイル用の StageWebView クラスについて
モバイル用の低機能な、StageWebView クラスもあります。
■HTMLLoader の機能が利用可能か調べる
HTMLLoader の機能が利用可能か調べるには、HTMLLoader.isSupported プロパティを使用します。
true であれば、サポートしています。
この確認用のプロパティは、Adobe AIR 2.0 以降で利用可能です。
モバイルなどの環境で動作させる場合、HTMLLoader の機能をサポートしていない事があります。
HTMLLoader が利用可能か調べる
import flash.html.HTMLLoader;
import flash.text.TextField;
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 10;
text_field.y = 10;
text_field.width = stage.stageWidth - 20;
text_field.height = 20;
text_field.border = true;
stage.addChild(text_field);
text_field.text = "HTMLLoader が利用可能:" + HTMLLoader.isSupported;
■HTMLLoader クラスをインスタンス化する
new 演算子を使って、HTMLLoader クラスをインスタンス化します。
HTMLLoader オブジェクトを作成する
import flash.html.HTMLLoader;
// HTMLLoaderオブジェクトを作成
var html_loader : HTMLLoader = new HTMLLoader();
■表示リストに登録する
addChild() メソッドを使って表示リストに登録します。
デフォルトでは幅と高さが設定されていないので、このままでは閲覧できません。
width プロパティと height プロパティを変更して幅と高さを設定します。
ローダーオブジェクトを作成する
import flash.html.HTMLLoader;
// HTMLLoaderオブジェクトを作成
var html_loader : HTMLLoader = new HTMLLoader();
// 表示リストに登録
stage.addChild(html_loader);
// 幅を設定
html_loader.width = 400;
// 高さを設定
html_loader.height = 300;
■幅と高さの制限について
■Adobe AIR 1.5 以前の場合
幅と高さの上限は、2880 ピクセルです。それより大きいサイズを指定するとエラーとなります。
■Adobe AIR 2.0 以降の場合
幅と高さの上限は、4096 ピクセルです。それより大きいサイズを指定するとエラーとなります。
HTML コンテンツを表示する
■URL を指定して、レンダリング表示する
HTML 文書の読み込みを開始するには、load() メソッドを使用します。
引数に、URL を、URLRequest 型で指定します。
すでに読み込み中にもかかわらずこのメソッドを呼び出した場合は、以前の読み込み処理が終了し、新しく読み込みを開始します。
HTMLLoader.load ( URLRequest型 ) :void
第01引数 | URLRequest | URL をURLRequest型で指定します。 |
戻り値 | void | なし |
HTMLファイルの読み込みを開始する
import flash.html.HTMLLoader;
import flash.net.URLRequest;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
// URL 文字列から URLRequest オブジェクトを作成
var url : URLRequest = new URLRequest("http://hakuhin.jp/index.html");
// 読み込みを開始する
html_loader.load(url);
■ HTML 文字列を使用して、直接レンダリング表示する
HTML文字列を使って、直接レンダリング表示するには、loadString() メソッドを使用します。
引数に、HTML 形式の文字列を指定します。
HTMLLoader.loadString ( String ) :void
第01引数 | String | HTML 形式の文字列を指定 |
戻り値 | void | なし |
HTML文字列からレンダリング表示する
import flash.html.HTMLLoader;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
// HTML 文字列を用意
var html_text : String = "<HTML><BODY><B>HELLO WORLD!!</B></BODY></HTML>";
// HTML 文字列を使ってレンダリング表示する
html_loader.loadString(html_text);
■読み込みを中止する
読み込みを中止するには、cancelLoad() メソッドを使用します。
HTMLファイルの読み込みを中止する
import flash.html.HTMLLoader;
import flash.events.MouseEvent;
import flash.net.URLRequest;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
var step:int = 0;
// クリック時に実行されるイベント
html_loader.addEventListener(MouseEvent.CLICK , function (e:MouseEvent):void{
switch(step){
case 0:
// "http://google.com" の読み込みを開始する
html_loader.load(new URLRequest("http://google.com"));
break;
case 1:
// ファイルの読み込みを中止する
html_loader.cancelLoad();
break;
}
step ++;
});
PDFファイルを読み込んで表示する
■インストールされている Adobe Reader のバージョンを調べる
PDFファイルを読み込んでレンダリング表示する為には、AIR アプリを動作させているパソコン上に Adobe Reader 8.1 以降がインストールされている必要があります。
PDF ファイルが表示可能か調べるには、HTMLLoader.pdfCapability プロパティを使用します。
中身は HTMLPDFCapability.* 定数です。下に一覧表があります。
定数 | 数値 | 説明 |
HTMLPDFCapability. | 0 | PDFファイルを読み込む事が可能 |
HTMLPDFCapability. | 3201 | Adobe Readerが検出できない |
HTMLPDFCapability. | 3202 | Adobe Readerのバージョンが古い |
HTMLPDFCapability. | 3203 | Adobe Readerのバージョンは対応しているが、PDFのコンテンツを扱うように設定されている Adobe Reader のバージョンが古い |
Adobe Reader のキャパシティを調べる
import flash.html.HTMLLoader;
import flash.text.TextField;
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 10;
text_field.y = 10;
text_field.width = stage.stageWidth - 20;
text_field.height = 20;
text_field.border = true;
stage.addChild(text_field);
text_field.text = "PDF キャパシティ:" + HTMLLoader.pdfCapability;
■Adobe Reader の読み込みが可能か調べる
PDFファイルを読み込めるか調べる
import flash.html.HTMLLoader;
import flash.html.HTMLPDFCapability;
if(HTMLLoader.pdfCapability == HTMLPDFCapability.STATUS_OK){
trace("PDFファイルの読み込みが可能");
}
■読み込みを開始する
PDFファイルの読み込みを開始するには、load() メソッドを使用します。
引数に、PDFファイルまでの相対パスか URL を URLRequest 型で指定します。
すでに読み込み中にもかかわらずこのメソッドを呼び出した場合は、以前の読み込み処理が終了し新しく読み込みを開始します。
HTMLLoader.load ( URLRequest型 ) :void
第01引数 | URLRequest | ファイルまでの相対パスか URL をURLRequest型で指定します。 |
戻り値 | void | なし |
PDFファイルの読み込みを開始する
import flash.html.HTMLLoader;
import flash.html.HTMLPDFCapability;
import flash.net.URLRequest;
// PDFファイルの読み込みが可能
if(HTMLLoader.pdfCapability == HTMLPDFCapability.STATUS_OK){
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
var url : URLRequest = new URLRequest("http://hakuhin.jp/test.pdf");
html_loader.load(url);
}
■Adobe Reader の表示の注意点
HTMLLoader に設定した、回転や拡大の要素は無視されます。
読み込み履歴について
■1つ前のページに戻る
1つ前のページに戻りたい場合は、historyBack() メソッドを使用します。
1つ前のページに戻る
import flash.html.HTMLLoader;
import flash.events.MouseEvent;
import flash.net.URLRequest;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
var step:int = 0;
// クリック時に実行されるイベント
html_loader.addEventListener(MouseEvent.CLICK , function (e:MouseEvent):void{
switch(step){
case 0:
// "http://google.com" の読み込みを開始する
html_loader.load(new URLRequest("http://google.com"));
break;
case 1:
// "http://yahoo.com" の読み込みを開始する
html_loader.load(new URLRequest("http://yahoo.com"));
break;
case 2:
// 1つ前のページに戻る
html_loader.historyBack();
break;
}
step ++;
});
■1つ次のページに進める
1つ次のページに進めたい場合は、historyForward() メソッドを使用します。
1つ次のページに進める
import flash.html.HTMLLoader;
import flash.events.MouseEvent;
import flash.net.URLRequest;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
var step:int = 0;
// クリック時に実行されるイベント
html_loader.addEventListener(MouseEvent.CLICK , function (e:MouseEvent):void{
switch(step){
case 0:
// "http://google.com" の読み込みを開始する
html_loader.load(new URLRequest("http://google.com"));
break;
case 1:
// "http://yahoo.com" の読み込みを開始する
html_loader.load(new URLRequest("http://yahoo.com"));
break;
case 2:
// 1つ前のページに戻る
html_loader.historyBack();
break;
case 3:
// 1つ次のページに進める
html_loader.historyForward();
break;
}
step ++;
});
■ステップ数を指定して履歴を移動する
ステップ数を指定して履歴を移動するには、historyGo() メソッドを使用します。
引数にステップ数を指定します。
マイナス値で履歴を戻します。プラス値で履歴を進めます。
ステップ数を指定して履歴を移動する
import flash.html.HTMLLoader;
import flash.events.MouseEvent;
import flash.net.URLRequest;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
var step:int = 0;
// クリック時に実行されるイベント
html_loader.addEventListener(MouseEvent.CLICK , function (e:MouseEvent):void{
switch(step){
case 0:
// "http://google.com" の読み込みを開始する
html_loader.load(new URLRequest("http://google.com"));
break;
case 1:
// "http://yahoo.com" の読み込みを開始する
html_loader.load(new URLRequest("http://yahoo.com"));
break;
case 2:
// ステップ数を指定して履歴を移動する(ここでは1つ前に戻る)
html_loader.historyGo(-1);
break;
case 3:
// ステップ数を指定して履歴を移動する(ここでは1つ次へ進む)
html_loader.historyGo(1);
break;
}
step ++;
});
■現在の履歴番号と総履歴数を取得する
現在表示している履歴番号を取得するには、historyPosition プロパティを使用します。(0 番目から開始)
総履歴数を取得するには、historyLength プロパティを使用します。
現在の履歴番号と総履歴数を取得する
import flash.html.HTMLLoader;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
var step:int = 0;
// クリック時に実行されるイベント
html_loader.addEventListener(MouseEvent.CLICK , function (e:MouseEvent):void{
switch(step){
case 0:
// "http://google.com" の読み込みを開始する
html_loader.load(new URLRequest("http://google.com"));
break;
case 1:
// "http://yahoo.com" の読み込みを開始する
html_loader.load(new URLRequest("http://yahoo.com"));
break;
case 2:
// ステップ数を指定して履歴を移動する(ここでは1つ前に戻る)
html_loader.historyGo(-1);
break;
case 3:
// ステップ数を指定して履歴を移動する(ここでは1つ次へ進む)
html_loader.historyGo(1);
break;
}
step ++;
});
// 読み込み完了時に呼び出されるイベント
html_loader.addEventListener(Event.COMPLETE , function (e:Event):void{
// 現在表示している履歴番号
var pos:uint = html_loader.historyPosition;
// 総履歴数
var num:uint = html_loader.historyLength;
trace(pos + "/" + num);
});
■番号を指定して履歴情報を取得する
履歴番号から HTMLHistoryItem オブジェクトを取得する
import flash.html.HTMLLoader;
import flash.html.HTMLHistoryItem;
import flash.events.MouseEvent;
import flash.net.URLRequest;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
var step:int = 0;
// クリック時に実行されるイベント
html_loader.addEventListener(MouseEvent.CLICK , function (e:MouseEvent):void{
switch(step){
case 0:
// "http://google.com" の読み込みを開始する
html_loader.load(new URLRequest("http://google.com"));
break;
case 1:
// "http://yahoo.com" の読み込みを開始する
html_loader.load(new URLRequest("http://yahoo.com"));
break;
case 2:
// 履歴番号から HTMLHistoryItem オブジェクトを取得
var history_item : HTMLHistoryItem = html_loader.getHistoryAt(0);
break;
}
step ++;
});
■HTMLHistoryItem クラスのプロパティについて
HTMLHistoryItem クラスが持つ、読み取り専用のプロパティの一覧です。
プロパティ名 | 型 | 説明 |
isPost | Boolean | POSTデータを含むかどうか(読み取り専用) |
originalUrl | String | リダイレクト前のURL(読み取り専用) |
url | String | 実際に表示されるURL(読み取り専用) |
title | String | タイトル名(読み取り専用) |
履歴情報を取得する
import flash.html.HTMLLoader;
import flash.html.HTMLHistoryItem;
import flash.events.MouseEvent;
import flash.net.URLRequest;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
var step:int = 0;
// クリック時に実行されるイベント
html_loader.addEventListener(MouseEvent.CLICK , function (e:MouseEvent):void{
switch(step){
case 0:
// "http://google.com" の読み込みを開始する
html_loader.load(new URLRequest("http://google.com"));
break;
case 1:
// 履歴番号から HTMLHistoryItem オブジェクトを取得
var history_item : HTMLHistoryItem = html_loader.getHistoryAt(0);
trace("POSTデータが含まれるか? : " + history_item.isPost);
trace("リダイレクト前 URL : " + history_item.originalUrl);
trace("URL : " + history_item.url);
trace("タイトル名 : " + history_item.title);
break;
}
step ++;
});
HTMLLoader のイベントについて
■読み込みが完了したか調べる
読み込みが完了したか調べるには、Event.COMPLETE イベントを使用します。
このイベントは、サイトの構成によっては呼び出されない事があります。
読み込みが完了したか調べる
import flash.html.HTMLLoader;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
var step:int = 0;
// クリック時に実行されるイベント
html_loader.addEventListener(MouseEvent.CLICK , function (e:MouseEvent):void{
switch(step){
case 0:
// "http://google.com" の読み込みを開始する
html_loader.load(new URLRequest("http://google.com"));
break;
case 1:
// "http://yahoo.com" の読み込みを開始する
html_loader.load(new URLRequest("http://yahoo.com"));
break;
}
step ++;
});
// 読み込み完了時に呼び出されるイベント
html_loader.addEventListener(Event.COMPLETE , function (e:Event):void{
trace("読み込みが完了した");
});
■URL が更新されたか調べる
URL が更新され最新の状態であるか調べるには、Event.LOCATION_CHANGE イベントを使用します。
URL が更新されたか調べる
import flash.html.HTMLLoader;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
var step:int = 0;
// クリック時に実行されるイベント
html_loader.addEventListener(MouseEvent.CLICK , function (e:MouseEvent):void{
switch(step){
case 0:
// "http://google.com" の読み込みを開始する
html_loader.load(new URLRequest("http://google.com"));
break;
case 1:
// "http://yahoo.com" の読み込みを開始する
html_loader.load(new URLRequest("http://yahoo.com"));
break;
}
step ++;
});
// URL 更新時に呼び出されるイベント
html_loader.addEventListener(Event.LOCATION_CHANGE , function (e:Event):void{
trace("URL が更新された" + html_loader.location);
});
■レンダリングが更新されたか調べる
レンダリングが更新され最新の状態であるか調べるには、Event.HTML_RENDER イベントを使用します。
レンダリング更新されたか調べる
import flash.html.HTMLLoader;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
var step:int = 0;
// クリック時に実行されるイベント
html_loader.addEventListener(MouseEvent.CLICK , function (e:MouseEvent):void{
switch(step){
case 0:
// "http://google.com" の読み込みを開始する
html_loader.load(new URLRequest("http://google.com"));
break;
case 1:
// "http://yahoo.com" の読み込みを開始する
html_loader.load(new URLRequest("http://yahoo.com"));
break;
}
step ++;
});
// レンダリング更新時に呼び出されるイベント
html_loader.addEventListener(Event.HTML_RENDER , function (e:Event):void{
trace("レンダリングが更新され最新の状態");
});
■スクロールが更新されたか調べる
スクロールが更新されたか調べるには、Event.SCROLL イベントを使用します。
横方向のスクロール位置を変更するには scrollH プロパティ
縦方向のスクロール位置を変更するには scrollV プロパティ
を変更します。
スクロールが更新されたか調べる
import flash.html.HTMLLoader;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
var step:int = 0;
// クリック時に実行されるイベント
html_loader.addEventListener(MouseEvent.CLICK , function (e:MouseEvent):void{
switch(step){
case 0:
// "http://google.com" の読み込みを開始する
html_loader.load(new URLRequest("http://google.com"));
break;
case 1:
// "http://yahoo.com" の読み込みを開始する
html_loader.load(new URLRequest("http://yahoo.com"));
break;
}
step ++;
});
// スクロール更新時に呼び出されるイベント
html_loader.addEventListener(Event.SCROLL , function (e:Event):void{
trace("スクロールが更新された");
trace("横 : " + html_loader.scrollH);
trace("縦 : " + html_loader.scrollV);
});
■JavaScript の例外処理が発生したか調べる
JavaScript の例外処理が発生したか調べるには、HTMLUncaughtScriptExceptionEvent.UNCAUGHT_SCRIPT_EXCEPTION イベントを使用します。
JavaScript の例外処理が発生したか調べる
import flash.html.HTMLLoader;
import flash.events.HTMLUncaughtScriptExceptionEvent;
import flash.events.MouseEvent;
import flash.net.URLRequest;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
var step:int = 0;
// クリック時に実行されるイベント
html_loader.addEventListener(MouseEvent.CLICK , function (e:MouseEvent):void{
switch(step){
case 0:
// "http://google.com" の読み込みを開始する
html_loader.load(new URLRequest("http://google.com"));
break;
case 1:
// "http://yahoo.com" の読み込みを開始する
html_loader.load(new URLRequest("http://yahoo.com"));
break;
}
step ++;
});
// JavaScript の例外処理が発生した時に呼び出されるイベント
html_loader.addEventListener(HTMLUncaughtScriptExceptionEvent.UNCAUGHT_SCRIPT_EXCEPTION , function (e:HTMLUncaughtScriptExceptionEvent):void{
trace("JavaScript の例外処理が発生した");
});
HTMLLoader から JavaScript にアクセスする
■HTMLLoader から JavaScript の Window オブジェクトを取得する
JavaScript の 「Window オブジェクト」を取得するには、window プロパティを使用します。
JavaScript の window オブジェクトを取得する
import flash.html.HTMLLoader;
import flash.events.Event;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
// 読み込み完了時に呼び出されるイベント
html_loader.addEventListener(Event.COMPLETE , function (e:Event):void{
// JavaScript の window オブジェクトを取得
var window:Object = html_loader.window;
});
// 空のページを作成
html_loader.loadString("");
■HTMLLoader から JavaScript にアクセスする
JavaScript の window オブジェクトから DOM API にアクセスして、動的にボタンを追加する
import flash.html.HTMLLoader;
import flash.events.Event;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
// 読み込み完了時に呼び出されるイベント
html_loader.addEventListener(Event.COMPLETE , function (e:Event):void{
// JavaScript の window オブジェクトを取得
var window:Object = html_loader.window;
// JavaScript の document オブジェクトを取得
var document:Object = window.document;
// 「INPUT エレメント」を作成する
var element:Object = document.createElement("input");
element.type = "button"; // タイプをボタンに設定
element.value = "Click !!"; // 値
// クリックされた時に実行されるイベントハンドラ
element.onclick = function ():void {
window.alert("ボタンが押された!!");
};
// BODY の最後尾に登録する
document.body.appendChild(element);
});
// 空のページを作成
html_loader.loadString("");
HTMLLoader から HTML用 AIR API を呼び出す
■「HTML開発者用 AIR API」を呼び出す
HTMLLoader 内の JavaScript を使用して「HTML開発者用 AIR API」を呼び出します。
window.runtime.* からアクセスします。
詳しくは HTML 開発者用 AIR APIの公式リファレンスが参考になります。
HTML 開発者用 AdobeR AIR API リファレンスガイド
http://help.adobe.com/ja_JP/air/reference/html/
■Adobe AIR 1.1 以前の場合
AIR 1.1 以前の使用例です。
HTML用 AIR API のtrace() 関数を呼び出す(AIR 1.1以前)
import flash.html.HTMLLoader;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
// HTML 文字列を用意
var str : String = "" +
"<HTML>" +
" <HEAD>" +
" <script>" +
" function func(){" +
" window.runtime.trace(\"Hallo World !!\");" +
" }" +
" </script>" +
" </HEAD>" +
"<body>" +
" <input type=\"button\" value=\"click!!\" onClick=\"func()\"}>" +
"</body>" +
"</html>";
// HTML文字列を使ってレンダリング表示
html_loader.loadString(str);
■Adobe AIR 1.5 以降で必要な設定
AIR 1.1 以前では、「HTML用 AIR API」をそのまま実行可能ですが、
AIR 1.5 以降では、loadString() メソッドで生成したコンテンツに、アプリケーションサンドボックスの制限があり、実行を試みるとエラーとなります。
制限を外すには、placeLoadStringContentInApplicationSandbox プロパティを true に変更します。
他人に悪意あるコードが実行される可能性が生じるので注意します。
AIR 1.5 以降の例です。
HTML用 AIR API のtrace() 関数を呼び出す(AIR 1.5以降)
import flash.html.HTMLLoader;
// HTMLLoaderオブジェクトを作成して、ステージ全体に配置する
var html_loader : HTMLLoader = new HTMLLoader();
stage.addChild(html_loader);
html_loader.width = stage.stageWidth;
html_loader.height = stage.stageHeight;
// アプリケーションサンドボックスの制限を外す
html_loader.placeLoadStringContentInApplicationSandbox = true;
// HTML 文字列を用意
var str : String = "" +
"<HTML>" +
" <HEAD>" +
" <script>" +
" function func(){" +
" window.runtime.trace(\"Hallo World !!\");" +
" }" +
" </script>" +
" </HEAD>" +
"<body>" +
" <input type=\"button\" value=\"click!!\" onClick=\"func()\"}>" +
"</body>" +
"</html>";
// HTML文字列を使ってレンダリング表示
html_loader.loadString(str);