StageWebView クラスについて(AIR 2.5以降)
StageWebView クラスについて
■StageWebView クラスについて
■ HTML のレンダリング表示が可能
StageWebView クラスを使うと、HTMLファイルを読み込んでレンダリングを行い表示することができます。
HTML がレンダリングされるだけでなくブラウザのように動作します。
リンク先をクリックすると、新たなページが読み込まれ、レンダリング表示が更新されます。
デスクトップ環境で実行した場合、Adobe AIR に内蔵されているWebKit エンジンでレンダリングが行われます。
モバイル環境で実行した場合、他のエンジンでレンダリングが行われる事もあります。
■ StageWebView 内の JavaScript について
StageWebView 内の JavaScript から、「HTML開発者用 AIR API」を実行することはできません。
「ActionScript」から「JavaScriptのプロパティやメソッド」に、アクセスする事はできません。
StageWebView 内のコンテンツと相互アクセスする事はできません。
■ StageWebView クラスの派生について
StageWebView は、以下のクラスから派生しています。
ここで解説してない分はリンク先に解説がありますので合わせてご覧下さい。
DisplayObject クラスを継承していないので、スプライトのように制御する事はできません。
Object |
↓派生 |
EventDispatcher |
↓派生 |
StageWebView |
■デスクトップ用の HTMLLoader クラスについて
デスクトップ用の高機能な、HTMLLoader クラスもあります。
■StageWebView クラスの機能が利用可能か調べる
StageWebView クラスの機能が利用可能か調べるには、StageWebView.isSupported プロパティを使用します。
true であれば利用可能です。
StageWebView クラスの機能が利用可能か調べる
import flash.media.StageWebView;
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 = "StageWebView クラスの機能が利用可能:" + StageWebView.isSupported;
■アンドロイドでネットワーク機能を使用する
「AIR for Android」でネットワーク機能を使用するには、以下のパーミッション設定を追加する必要があります。
権限名 | 説明 |
INTERNET | ネットワークにアクセスする |
■Adobe Flash による設定方法
「AIR for Android 設定」の「権限」タブにある、「INTERNET」のチェックを有効にします。
■アプリケーション記述ファイルを直接編集する方法
アプリケーション記述ファイルに、以下のパーミッション設定を追加します。
アプリケーション記述ファイルに autoOrients タグを追加する
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<application xmlns="http://ns.adobe.com/air/application/2.0">
~略~
<android>
<manifestAdditions>
<![CDATA[<manifest>
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>]]>
</manifestAdditions>
</android>
</application>
■StageWebView クラスをインスタンス化する
new 演算子を使って、StageWebView クラスをインスタンス化します。
StageWebView オブジェクトを作成する
import flash.media.StageWebView;
// StageWebViewオブジェクトを作成
var stage_web_view : StageWebView = new StageWebView();
■StageWebView オブジェクトをステージに表示する
StageWebView オブジェクトは、「ステージ」と「描画範囲」を設定することで、画面に表示することができます。
どのステージに描画するかを指定するには、stage プロパティを使用します。
描画したいステージオブジェクトを指定します。
描画矩形範囲を設定するには、viewPort プロパティを使用します。
矩形を Rectangle 型で指定します。
StageWebView オブジェクトをステージに表示する
import flash.media.StageWebView;
import flash.geom.Rectangle;
// StageWebView をサポートしている
if(StageWebView.isSupported){
// StageWebViewオブジェクトを作成
var stage_web_view : StageWebView = new StageWebView();
// 描画するステージを指定
stage_web_view.stage = this.stage;
// 矩形
var view_rect:Rectangle = new Rectangle();
view_rect.x = 5;
view_rect.y = 5;
view_rect.width = stage.stageWidth - 10;
view_rect.height = stage.stageHeight - 10;
// 描画する矩形範囲を指定
stage_web_view.viewPort = view_rect;
// google.com を表示する
//stage_web_view.loadURL("http://google.com/");
// ステージへの描画をやめる
//stage_web_view.stage = null;
}
■ StageWebView の表示優先度について
StageWebView オブジェクトは、ステージのすべての表示オブジェクトよりも、手前に描画されます。
StageWebView オブジェクトより手前に、何かを表示する事はできません。
■ StageWebView オブジェクト同士の重なりについて
StageWebView オブジェクト同士を重ねて使用することは、想定されていません。
よって、表示優先度を設定することはできません。
■StageWebView オブジェクトを破棄する
内部で確保されたメモリを解放するには、dispose() メソッドを使用します。
StageWebView オブジェクト自体は、消滅しません。
このメソッドを呼び出した後に、StageWebView オブジェクトを再利用することはできません。
プロパティやメソッドにアクセスを試みると、エラーが発生します。
StageWebView オブジェクトは、内部で大量のメモリを消費する可能性があります。
StageWebView オブジェクトが不要になった時点で、dispose() メソッドを実行するよう心掛けます。
StageWebView オブジェクトを破棄する
import flash.media.StageWebView;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.text.TextFormatAlign;
import flash.text.TextFormat;
import flash.events.MouseEvent;
// StageWebView をサポートしている
if(StageWebView.isSupported){
// TextFormat オブジェクトを作成する
var format:TextFormat = new TextFormat();
format.size = 40;
format.bold = true;
format.align = TextFormatAlign.CENTER;
// ------------------------------------------------------------
// 破棄用ボタン
// ------------------------------------------------------------
var text_field_dispose:TextField = new TextField();
text_field_dispose.x = 0;
text_field_dispose.y = 0;
text_field_dispose.width = 100;
text_field_dispose.height = 50;
text_field_dispose.background = true;
text_field_dispose.backgroundColor = 0xCCCCCC;
text_field_dispose.border = true;
text_field_dispose.selectable = false;
text_field_dispose.defaultTextFormat = format;
text_field_dispose.text = "破棄";
stage.addChild(text_field_dispose);
// マウスの左ボタンをクリックすると実行されるイベント
text_field_dispose.addEventListener(MouseEvent.MOUSE_DOWN,function callee(e:MouseEvent):void{
// StageWebView オブジェクトを破棄する
stage_web_view.dispose();
stage_web_view = null;
// イベントのリッスンを終了する
e.currentTarget.removeEventListener(e.type,callee);
});
// ------------------------------------------------------------
// StageWebView オブジェクト
// ------------------------------------------------------------
// StageWebViewオブジェクトを作成
var stage_web_view : StageWebView = new StageWebView();
// 描画設定
stage_web_view.stage = this.stage;
stage_web_view.viewPort = new Rectangle(0,50,stage.stageWidth,stage.stageHeight-50);
// google.com を表示する
stage_web_view.loadURL("http://google.com/");
}
HTML コンテンツを表示する
■URL を指定して、レンダリング表示する
HTML 文書の読み込みを開始するには、loadURL() メソッドを使用します。
すでに読み込み中にもかかわらずこのメソッドを呼び出した場合は、以前の読み込み処理が終了し、新しく読み込みを開始します。
StageWebView.loadURL ( URL ) :void
第01引数 | String | URL を文字列型で指定します。 |
戻り値 | void | なし |
URL を指定して、レンダリング表示する
import flash.media.StageWebView;
import flash.geom.Rectangle;
// StageWebView をサポートしている
if(StageWebView.isSupported){
// StageWebViewオブジェクトを作成
var stage_web_view : StageWebView = new StageWebView();
// ステージ全体に描画する
stage_web_view.stage = this.stage;
stage_web_view.viewPort = new Rectangle(0,0,stage.stageWidth,stage.stageHeight);
// 表示したいアドレス
var url:String = "http://google.com/";
// URL を指定して読み込みを開始する
stage_web_view.loadURL(url);
}
■ HTML 文字列を使用して、直接レンダリング表示する
HTML文字列を使って直接レンダリング表示するには、loadString() メソッドを使用します。
引数に、HTML 形式の文字列を指定します。
StageWebView.loadString ( String ) :void
第01引数 | String | HTML 形式の文字列を指定 |
戻り値 | void | なし |
HTML文字列からレンダリング表示する
import flash.media.StageWebView;
import flash.geom.Rectangle;
// StageWebView をサポートしている
if(StageWebView.isSupported){
// StageWebViewオブジェクトを作成
var stage_web_view : StageWebView = new StageWebView();
// ステージ全体に描画する
stage_web_view.stage = this.stage;
stage_web_view.viewPort = new Rectangle(0,0,stage.stageWidth,stage.stageHeight);
// HTML 文字列を用意
var html_text : String = "<HTML><BODY><B>HELLO WORLD!!</B></BODY></HTML>";
// HTML 文字列を使ってレンダリング表示する
stage_web_view.loadString(html_text);
}
■読み込みを中止する
読み込みを中止するには、stop() メソッドを使用します。
読み込みを中止する
import flash.media.StageWebView;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.text.TextFormatAlign;
import flash.text.TextFormat;
import flash.events.MouseEvent;
// StageWebView をサポートしている
if(StageWebView.isSupported){
// TextFormat オブジェクトを作成する
var format:TextFormat = new TextFormat();
format.size = 40;
format.bold = true;
format.align = TextFormatAlign.CENTER;
// ------------------------------------------------------------
// 中止用ボタン
// ------------------------------------------------------------
var text_field_stop:TextField = new TextField();
text_field_stop.x = 0;
text_field_stop.y = 0;
text_field_stop.width = 50;
text_field_stop.height = 50;
text_field_stop.background = true;
text_field_stop.backgroundColor = 0xCCCCFF;
text_field_stop.border = true;
text_field_stop.selectable = false;
text_field_stop.defaultTextFormat = format;
text_field_stop.text = "×";
stage.addChild(text_field_stop);
// マウスの左ボタンをクリックすると実行されるイベント
text_field_stop.addEventListener(MouseEvent.MOUSE_DOWN,function (e:MouseEvent):void{
// 読み込みを終了する
stage_web_view.stop();
});
// ------------------------------------------------------------
// StageWebView オブジェクト
// ------------------------------------------------------------
// StageWebViewオブジェクトを作成
var stage_web_view : StageWebView = new StageWebView();
// 描画設定
stage_web_view.stage = this.stage;
stage_web_view.viewPort = new Rectangle(0,50,stage.stageWidth,stage.stageHeight-50);
// google.com を表示する
stage_web_view.loadURL("http://google.com/");
}
■現在のページをリロードする
現在のページを再読み込みするには、reload() メソッドを使用します。
現在のページをリロードする
import flash.media.StageWebView;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.text.TextFormatAlign;
import flash.text.TextFormat;
import flash.events.MouseEvent;
// StageWebView をサポートしている
if(StageWebView.isSupported){
// TextFormat オブジェクトを作成する
var format:TextFormat = new TextFormat();
format.size = 40;
format.bold = true;
format.align = TextFormatAlign.CENTER;
// ------------------------------------------------------------
// リロード用ボタン
// ------------------------------------------------------------
var text_field_reload:TextField = new TextField();
text_field_reload.x = 0;
text_field_reload.y = 0;
text_field_reload.width = 50;
text_field_reload.height = 50;
text_field_reload.background = true;
text_field_reload.backgroundColor = 0xFFFFCC;
text_field_reload.border = true;
text_field_reload.selectable = false;
text_field_reload.defaultTextFormat = format;
text_field_reload.text = "再";
stage.addChild(text_field_reload);
// マウスの左ボタンをクリックすると実行されるイベント
text_field_reload.addEventListener(MouseEvent.MOUSE_DOWN,function (e:MouseEvent):void{
// 現在のページをリロード
stage_web_view.reload();
});
// ------------------------------------------------------------
// StageWebView オブジェクト
// ------------------------------------------------------------
// StageWebViewオブジェクトを作成
var stage_web_view : StageWebView = new StageWebView();
// 描画設定
stage_web_view.stage = this.stage;
stage_web_view.viewPort = new Rectangle(0,50,stage.stageWidth,stage.stageHeight-50);
// google.com を表示する
stage_web_view.loadURL("http://google.com/");
}
■現在のページのアドレスを取得する
現在のページのアドレスを取得するには、location プロパティを使用します。
このプロパティは、読み取り専用です。
現在のページのアドレスを取得する
import flash.media.StageWebView;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.events.LocationChangeEvent;
// StageWebView をサポートしている
if(StageWebView.isSupported){
// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 0;
text_field.y = 0;
text_field.width = stage.stageWidth;
text_field.height = 24;
text_field.border = true;
stage.addChild(text_field);
// ------------------------------------------------------------
// StageWebView オブジェクト
// ------------------------------------------------------------
// StageWebViewオブジェクトを作成
var stage_web_view : StageWebView = new StageWebView();
// 描画設定
stage_web_view.stage = this.stage;
stage_web_view.viewPort = new Rectangle(0,25,stage.stageWidth,stage.stageHeight-25);
// アドレスが変化したときに呼び出されるイベント
stage_web_view.addEventListener(LocationChangeEvent.LOCATION_CHANGE,function (e:LocationChangeEvent):void{
// 現在のページのアドレスを取得
var url:String = stage_web_view.location;
// 表示テスト
text_field.text = url;
});
// google.com を表示する
stage_web_view.loadURL("http://google.com/");
}
■現在のページのタイトルを取得する
現在のページのタイトルを取得するには、title プロパティを使用します。
このプロパティは、読み取り専用です。
現在のページのタイトルを取得する
import flash.media.StageWebView;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.events.Event;
// StageWebView をサポートしている
if(StageWebView.isSupported){
// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 0;
text_field.y = 0;
text_field.width = stage.stageWidth;
text_field.height = 24;
text_field.border = true;
stage.addChild(text_field);
// ------------------------------------------------------------
// StageWebView オブジェクト
// ------------------------------------------------------------
// StageWebViewオブジェクトを作成
var stage_web_view : StageWebView = new StageWebView();
// 描画設定
stage_web_view.stage = this.stage;
stage_web_view.viewPort = new Rectangle(0,25,stage.stageWidth,stage.stageHeight-25);
// 読み込み完了時に呼び出されるイベント
stage_web_view.addEventListener(Event.COMPLETE,function (e:Event):void{
// 現在のページのタイトルを取得
var title:String = stage_web_view.title;
// 表示テスト
text_field.text = title;
});
// google.com を表示する
stage_web_view.loadURL("http://google.com/");
}
読み込み履歴について
■1つ前のページに戻る
■1つ前のページに戻る事が可能か調べる
1つ前のページに戻る事が可能か調べるには、isHistoryBackEnabled プロパティを使用します。
true であれば、可能です。
このプロパティは、読み取り専用です。
■1つ前のページに戻る
1つ前のページに戻るには、historyBack() メソッドを使用します。
1つ前のページに戻る
import flash.media.StageWebView;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.text.TextFormatAlign;
import flash.text.TextFormat;
import flash.events.Event;
import flash.events.LocationChangeEvent;
import flash.events.MouseEvent;
// StageWebView をサポートしている
if(StageWebView.isSupported){
// TextFormat オブジェクトを作成する
var format:TextFormat = new TextFormat();
format.size = 40;
format.bold = true;
format.align = TextFormatAlign.CENTER;
// ------------------------------------------------------------
// 戻る用ボタン
// ------------------------------------------------------------
var text_field_back:TextField = new TextField();
text_field_back.x = 0;
text_field_back.y = 0;
text_field_back.width = 50;
text_field_back.height = 50;
text_field_back.background = true;
text_field_back.backgroundColor = 0xFFCCCC;
text_field_back.border = true;
text_field_back.selectable = false;
text_field_back.defaultTextFormat = format;
text_field_back.text = "←";
stage.addChild(text_field_back);
// マウスの左ボタンをクリックすると実行されるイベント
text_field_back.addEventListener(MouseEvent.MOUSE_DOWN,function (e:MouseEvent):void{
// 1つ前に戻る
stage_web_view.historyBack();
});
// ------------------------------------------------------------
// StageWebView オブジェクト
// ------------------------------------------------------------
// StageWebViewオブジェクトを作成
var stage_web_view : StageWebView = new StageWebView();
// 描画設定
stage_web_view.stage = this.stage;
stage_web_view.viewPort = new Rectangle(0,50,stage.stageWidth,stage.stageHeight-50);
// アドレスが変化したときに呼び出されるイベント
stage_web_view.addEventListener(LocationChangeEvent.LOCATION_CHANGE,function (e:LocationChangeEvent):void{
LocationUpdateFunc();
});
// 読み込み完了時に呼び出されるイベント
stage_web_view.addEventListener(Event.COMPLETE,function (e:Event):void{
LocationUpdateFunc();
});
// アドレス更新時に実行したい関数
function LocationUpdateFunc():void{
// 1つ前に戻る事が可能
if(stage_web_view.isHistoryBackEnabled){
text_field_back.alpha = 1.0;
}else{
text_field_back.alpha = 0.25;
}
}
// 初回実行
LocationUpdateFunc();
// google.com を表示する
stage_web_view.loadURL("http://google.com/");
}
■1つ次のページに進める
■1つ次のページに進める事が可能か調べる
1つ次のページに進める事が可能か調べるには、isHistoryForwardEnabled プロパティを使用します。
true であれば、可能です。
このプロパティは、読み取り専用です。
■1つ次のページに進める
1つ次のページに進めたい場合は、historyForward() メソッドを使用します。
1つ次のページに進める
import flash.media.StageWebView;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.text.TextFormatAlign;
import flash.text.TextFormat;
import flash.events.Event;
import flash.events.LocationChangeEvent;
import flash.events.MouseEvent;
// StageWebView をサポートしている
if(StageWebView.isSupported){
// TextFormat オブジェクトを作成する
var format:TextFormat = new TextFormat();
format.size = 40;
format.bold = true;
format.align = TextFormatAlign.CENTER;
// ------------------------------------------------------------
// 戻る用ボタン
// ------------------------------------------------------------
var text_field_back:TextField = new TextField();
text_field_back.x = 0;
text_field_back.y = 0;
text_field_back.width = 50;
text_field_back.height = 50;
text_field_back.background = true;
text_field_back.backgroundColor = 0xFFCCCC;
text_field_back.border = true;
text_field_back.selectable = false;
text_field_back.defaultTextFormat = format;
text_field_back.text = "←";
stage.addChild(text_field_back);
// マウスの左ボタンをクリックすると実行されるイベント
text_field_back.addEventListener(MouseEvent.MOUSE_DOWN,function (e:MouseEvent):void{
// 1つ前に戻る
stage_web_view.historyBack();
});
// ------------------------------------------------------------
// 進む用ボタン
// ------------------------------------------------------------
var text_field_forward:TextField = new TextField();
text_field_forward.x = 60;
text_field_forward.y = 0;
text_field_forward.width = 50;
text_field_forward.height = 50;
text_field_forward.background = true;
text_field_forward.backgroundColor = 0xCCFFCC;
text_field_forward.border = true;
text_field_forward.selectable = false;
text_field_forward.defaultTextFormat = format;
text_field_forward.text = "→";
stage.addChild(text_field_forward);
// マウスの左ボタンをクリックすると実行されるイベント
text_field_forward.addEventListener(MouseEvent.MOUSE_DOWN,function (e:MouseEvent):void{
// 1つ次に進む
stage_web_view.historyForward();
});
// ------------------------------------------------------------
// StageWebView オブジェクト
// ------------------------------------------------------------
// StageWebViewオブジェクトを作成
var stage_web_view : StageWebView = new StageWebView();
// 描画設定
stage_web_view.stage = this.stage;
stage_web_view.viewPort = new Rectangle(0,50,stage.stageWidth,stage.stageHeight-50);
// アドレスが変化したときに呼び出されるイベント
stage_web_view.addEventListener(LocationChangeEvent.LOCATION_CHANGE,function (e:LocationChangeEvent):void{
LocationUpdateFunc();
});
// 読み込み完了時に呼び出されるイベント
stage_web_view.addEventListener(Event.COMPLETE,function (e:Event):void{
LocationUpdateFunc();
});
// アドレス更新時に実行したい関数
function LocationUpdateFunc():void{
// 1つ前に戻る事が可能
if(stage_web_view.isHistoryBackEnabled){
text_field_back.alpha = 1.0;
}else{
text_field_back.alpha = 0.25;
}
// 1つ次に進む事が可能
if(stage_web_view.isHistoryForwardEnabled){
text_field_forward.alpha = 1.0;
}else{
text_field_forward.alpha = 0.25;
}
}
// 初回実行
LocationUpdateFunc();
// google.com を表示する
stage_web_view.loadURL("http://google.com/");
}
StageWebView のイベントについて
■読み込みが完了したか調べる
読み込みが完了したか調べるには、Event.COMPLETE イベントを使用します。
このイベントは、サイトの構成によっては実行されない事があります。(動的なサイトなど)
読み込みが完了したか調べる
import flash.media.StageWebView;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.events.Event;
// StageWebView をサポートしている
if(StageWebView.isSupported){
// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 0;
text_field.y = stage.stageHeight - 200;
text_field.width = stage.stageWidth;
text_field.height = 200;
text_field.border = true;
text_field.multiline = true;
stage.addChild(text_field);
// ------------------------------------------------------------
// StageWebView オブジェクト
// ------------------------------------------------------------
// StageWebViewオブジェクトを作成
var stage_web_view : StageWebView = new StageWebView();
// 描画設定
stage_web_view.stage = this.stage;
stage_web_view.viewPort = new Rectangle(0,0,stage.stageWidth,stage.stageHeight-200);
// 読み込みが完了すると呼び出されるイベント
stage_web_view.addEventListener(Event.COMPLETE,function (e:Event):void{
text_field.text = "読み込みが完了した(" + stage_web_view.location + ")\n" + text_field.text;
});
// google.com を表示する
stage_web_view.loadURL("http://google.com/");
}
■エラーが発生したか調べる
エラーが発生したか調べるには、ErrorEvent.ERROR イベントを使用します。
引数から得られる ErrorEvent オブジェクトの errorID プロパティから、エラーの原因を意味する番号が取得できます。
エラーが発生したか調べる
import flash.media.StageWebView;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.events.ErrorEvent;
// StageWebView をサポートしている
if(StageWebView.isSupported){
// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 0;
text_field.y = stage.stageHeight - 200;
text_field.width = stage.stageWidth;
text_field.height = 200;
text_field.border = true;
text_field.multiline = true;
stage.addChild(text_field);
// ------------------------------------------------------------
// StageWebView オブジェクト
// ------------------------------------------------------------
// StageWebViewオブジェクトを作成
var stage_web_view : StageWebView = new StageWebView();
// 描画設定
stage_web_view.stage = this.stage;
stage_web_view.viewPort = new Rectangle(0,0,stage.stageWidth,stage.stageHeight-200);
// エラーが発生すると呼び出されるイベント
stage_web_view.addEventListener(ErrorEvent.ERROR,function (e:ErrorEvent):void{
text_field.text = "エラーが発生した(id:" + e.errorID + ")\n" + text_field.text;
});
// google.com を表示する
stage_web_view.loadURL("http://google.com/");
}
■アドレスが変更直前であるか調べる
アドレスが変更直前であるか調べるには、LocationChangeEvent.LOCATION_CHANGING イベントを使用します。
このイベントは、ユーザーが操作した場合にのみ発生します。
アドレスが変化するようなメソッドを呼び出しても、イベントは発生しません。
変更前のアドレスを取得するには、StageWebView オブジェクトの location プロパティを使用します。
変更後(予定)のアドレスを取得するには、イベントに登録した関数の引数から得られる、LocationChangeEvent オブジェクトの location プロパティを使用します。
アドレスの変更をキャンセルするには、イベントに登録した関数の引数から得られる、LocationChangeEvent オブジェクトの preventDefault() メソッドを実行します。
アドレスが変更直前であるか調べる
import flash.media.StageWebView;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.events.LocationChangeEvent;
// StageWebView をサポートしている
if(StageWebView.isSupported){
// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 0;
text_field.y = stage.stageHeight - 200;
text_field.width = stage.stageWidth;
text_field.height = 200;
text_field.border = true;
text_field.multiline = true;
stage.addChild(text_field);
// ------------------------------------------------------------
// StageWebView オブジェクト
// ------------------------------------------------------------
// StageWebViewオブジェクトを作成
var stage_web_view : StageWebView = new StageWebView();
// 描画設定
stage_web_view.stage = this.stage;
stage_web_view.viewPort = new Rectangle(0,0,stage.stageWidth,stage.stageHeight-200);
// アドレスの変更直前に呼び出されるイベント
stage_web_view.addEventListener(LocationChangeEvent.LOCATION_CHANGING,function (e:LocationChangeEvent):void{
text_field.text = "アドレスが変更直前である (変更前:" + stage_web_view.location + " 変更後:" + e.location + ")\n" + text_field.text;
// アドレスの変更をキャンセルする
//e.preventDefault();
});
// google.com を表示する
stage_web_view.loadURL("http://google.com/");
}
■アドレスが変化したか調べる
アドレスが変化したか調べるには、LocationChangeEvent.LOCATION_CHANGE イベントを使用します。
アドレスが変化したか調べる
import flash.media.StageWebView;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.events.LocationChangeEvent;
// StageWebView をサポートしている
if(StageWebView.isSupported){
// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 0;
text_field.y = stage.stageHeight - 200;
text_field.width = stage.stageWidth;
text_field.height = 200;
text_field.border = true;
text_field.multiline = true;
stage.addChild(text_field);
// ------------------------------------------------------------
// StageWebView オブジェクト
// ------------------------------------------------------------
// StageWebViewオブジェクトを作成
var stage_web_view : StageWebView = new StageWebView();
// 描画設定
stage_web_view.stage = this.stage;
stage_web_view.viewPort = new Rectangle(0,0,stage.stageWidth,stage.stageHeight-200);
// アドレスが変化したときに呼び出されるイベント
stage_web_view.addEventListener(LocationChangeEvent.LOCATION_CHANGE,function (e:LocationChangeEvent):void{
text_field.text = "アドレスが変化した (" + stage_web_view.location + ")\n" + text_field.text;
});
// google.com を表示する
stage_web_view.loadURL("http://google.com/");
}
■フォーカスが得られたか調べる
フォーカスが得られたか調べるには、FocusEvent.FOCUS_IN イベントを使用します。
フォーカスが得られたか調べる
import flash.media.StageWebView;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.events.FocusEvent;
// StageWebView をサポートしている
if(StageWebView.isSupported){
// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 0;
text_field.y = stage.stageHeight - 200;
text_field.width = stage.stageWidth;
text_field.height = 200;
text_field.border = true;
text_field.multiline = true;
stage.addChild(text_field);
// ------------------------------------------------------------
// StageWebView オブジェクト
// ------------------------------------------------------------
// StageWebViewオブジェクトを作成
var stage_web_view : StageWebView = new StageWebView();
// 描画設定
stage_web_view.stage = this.stage;
stage_web_view.viewPort = new Rectangle(0,0,stage.stageWidth,stage.stageHeight-200);
// フォーカスが得られたときに呼び出されるイベント
stage_web_view.addEventListener(FocusEvent.FOCUS_IN,function (e:FocusEvent):void{
text_field.text = "フォーカスが得られた\n" + text_field.text;
});
// google.com を表示する
stage_web_view.loadURL("http://google.com/");
}
■フォーカスが失われたか調べる
フォーカスが失われたか調べるには、FocusEvent.FOCUS_OUT イベントを使用します。
フォーカスが失われたか調べる
import flash.media.StageWebView;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.events.FocusEvent;
// StageWebView をサポートしている
if(StageWebView.isSupported){
// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 0;
text_field.y = stage.stageHeight - 200;
text_field.width = stage.stageWidth;
text_field.height = 200;
text_field.border = true;
text_field.multiline = true;
stage.addChild(text_field);
// ------------------------------------------------------------
// StageWebView オブジェクト
// ------------------------------------------------------------
// StageWebViewオブジェクトを作成
var stage_web_view : StageWebView = new StageWebView();
// 描画設定
stage_web_view.stage = this.stage;
stage_web_view.viewPort = new Rectangle(0,0,stage.stageWidth,stage.stageHeight-200);
// フォーカスが失われたときに呼び出されるイベント
stage_web_view.addEventListener(FocusEvent.FOCUS_OUT,function (e:FocusEvent):void{
text_field.text = "フォーカスが失われた\n" + text_field.text;
});
// google.com を表示する
stage_web_view.loadURL("http://google.com/");
}