Object
HTMLHost オブジェクトは HTML ページの window オブジェクトで各種プロパティの設定または各種メソッドの呼び出しを行うことにより制御可能なユーザーインターフェイスエレメントに対する HTMLLoader オブジェクトの動作を制御します。そのメソッドとプロパティは次のとおりです。
- window.blur()
- window.focus()
- window.moveBy()
- window.moveTo()
- window.location
- window.close()
- window.open()
- window.resizeBy()
- window.resizeTo()
- window.status
- window.document.title
HTMLHost クラスのメソッドを使用して、window の各設定を変更することができます。このクラスを使用するには、HTMLHost クラスを継承して動作を定義するメソッドをオーバーライドする新しいクラス(サブクラス)を作成します。HTMLHost クラスのメソッドは、JavaScript のプロパティおよびメソッドを次のように処理します。
JavaScript のプロパティまたはメソッドHTMLHost メソッド
window.blur()windowBlur()
window.focus()windowFocus
window.locationupdateLocation
window.close()windowClose
window.open()createWindow
window.statusupdateStatus
window.document.titleupdateTitle
window.moveBy()、window.moveTo()、window.resizeBy() および window.resizeTo() の各メソッドの変更に応答するには、HTMLHost のサブクラスで set windowRect() メソッドをオーバーライドします。
各 HTMLHost オブジェクトに関連付けることができるのは、1 つの HTMLLoader オブジェクトまでです。この関連付けは、HTMLHost インスタンスを HTMLLoader オブジェクトの htmlHost プロパティに割り当てることにより確立されます。null を HTMLLoader オブジェクトの htmlHost プロパティに割り当てるまたは HTMLHost オブジェクトを別の HTMLLoader オブジェクトの htmlHost プロパティとして設定すると、HTMLHost は最初の HTMLLoader オブジェクトから削除されます。
次のコードは、HTMLHost のサブクラスとして CustomHost を定義します。CustomHost クラスのメソッドは、HTMLHost クラス内の継承されたメソッドをオーバーライドし、HTMLLoader ページ内の JavaScript コード が各種プロパティを設定するとき、または window オブジェクトの各種メソッドを呼び出すときに実行するアクションを定義します。
package
{
import flash.html.HTMLHost;
import flash.html.HTMLLoader;
import flash.display.NativeWindow;
import flash.display.NativeWindowInitOptions;
import flash.display.StageScaleMode;
import flash.geom.Rectangle;
import flash.text.TextField;
public class CustomHost extends HTMLHost
{
import flash.html.*;
public var statusField:TextField;
public function CustomHost(defaultBehaviors:Boolean=true)
{
super(defaultBehaviors);
}
override public function windowClose():void
{
htmlLoader.stage.window.close();
}
override public function createWindow(windowCreateOptions:HTMLWindowCreateOptions):HTMLLoader
{
var initOptions:NativeWindowInitOptions = new NativeWindowInitOptions();
var window:NativeWindow = new NativeWindow(initOptions);
window.visible = true;
var htmlLoader2:HTMLLoader = new HTMLLoader();
htmlLoader2.width = window.width;
htmlLoader2.height = window.height;
window.stage.scaleMode = StageScaleMode.NO_SCALE;
window.stage.addChild(htmlLoader2);
return htmlLoader2;
}
override public function updateLocation(locationURL:String):void
{
trace(locationURL);
}
override public function set windowRect(value:Rectangle):void
{
htmlLoader.stage.nativeWindow.bounds = value;
}
override public function updateStatus(status:String):void
{
statusField.text = status;
}
override public function updateTitle(title:String):void
{
htmlLoader.stage.nativeWindow.title = title + "- Example Application";
}
override public function windowBlur():void
{
htmlLoader.alpha = 0.5;
}
override public function windowFocus():void
{
htmlLoader.alpha = 1;
}
}
}
次のクラスを作成します。このクラスは、statusBar という名前の TextField オブジェクトだけでなく、HTMLLoader オブジェクトもステージに追加します。 HTMLLoader オブジェクトは、CustomHost オブジェクトを自身の htmlHost プロパティとして定義します。
package
{
import flash.display.Sprite;
public class SimpleHTMLBox extends Sprite
{
import flash.html.HTMLHost;
import flash.html.HTMLLoader;
import flash.text.TextField;
import flash.net.URLRequest;
import CustomHost;
private var host:CustomHost;
private var statusField:TextField;
private var html:HTMLLoader;
public function SimpleHTMLBox()
{
html = new HTMLLoader();
var url:String = "Test.html";
var urlReq:URLRequest = new URLRequest(url);
html.load(urlReq);
host = new CustomHost();
html.htmlHost = host;
statusField = new TextField();
host.statusField = statusField;
configureUI();
}
private function configureUI():void
{
html.width = 400;
html.height = 200;
statusField.width = 400;
statusField.height = 24;
statusField.border = true;
statusField.y = 200;
addChild(html);
addChild(statusField);
}
}
}
このクラスで定義されるオブジェクトをメインウィンドウのステージに追加する AIR アプリケーションを構築します。
アプリケーションリソースディレクトリ (アプリケーション記述ファイルが格納されているディレクトリ) に Test.html という名前の HTML ページを作成し、次のコンテンツを追加します。
<html>
<head>
<title>Test</title>
</head>
<body>
<a href="#" onclick="window.open('Test.html')">window.open('Test.html')</a>
<br/><a href="#" onclick="window.document.location = 'www.adobe.com'">window.document.location = 'www.adobe.com'</a>
<br/><a href="#" onclick="window.moveBy(6, 12)">moveBy(6, 12)</a>
<br/><a href="#" onclick="window.close()">window.close()</a>
<br/><a href="#" onclick="window.blur()">window.blur()</a>
<br/><a href="#" onclick="window.focus()">window.focus()</a>
<br/><a href="#" onclick="window.status = new Date().toString()">window.status = new Date().toString()</a>
</body>
</html>
アプリケーションのテストが実行されると、HTML ページ内にあるユーザーインターフェイス関連の JavaScript 設定は、CustomHost クラスによって処理されます。