アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

gihyo.jp » DEVELOPER STAGE » 連載 » Adobe AIRで作るデスクトップアプリケーション » 第12回 HTMLコンテンツの利用

Adobe AIRで作るデスクトップアプリケーション

第12回 HTMLコンテンツの利用

HTMLの表示

Adobe AIRにはSafari等のブラウザで採用されているWebKitエンジンが実装されており,HTMLのレンダリングやJavaScriptの実行が可能です。これはAIRの大きな特長の一つと言えるでしょう。今回はAIRアプリケーションにHTMLコンテンツを追加する方法について解説します。

HTMLの表示方法はとても簡単です。まずはFlashでの実装方法から見てみましょう。次のサンプルはステージにgihyo.jpのトップページを表示します。

import flash.html.HTMLControl;
var html:HTMLControl = new HTMLControl();
html.width = stage.stageWidth;
html.height = stage.stageHeight;
html.load(new URLRequest("http://gihyo.jp/"));
addChild(html);

HTMLの表示を簡単に行える

HTMLの表示を簡単に行える

AIR APIでHTMLコンテンツの処理を担当するのはHTMLControlクラス(flash.htmlパッケージ)です。このクラスはDisplayObjectの一つで,Spriteクラスのサブクラスです。したがって,インスタンスを作成して任意の表示リストに加えればステージ上に表示されます。回転したりフィルタを掛けることも可能です。もちろん,具体的なコンテンツを読み込まなければ何も表示されません。コンテンツを読み込むには,URLを指定したURLRequestオブジェクトを作成してload()メソッドに渡します。また,HTMLControlオブジェクトの幅(widthプロパティ)と高さ(heightプロパティ)のデフォルト値は0なので,ここではステージと同じサイズに変更しています。

なお,デフォルトの状態でウィンドウをリサイズすると,それに合わせてコンテンツも拡大/縮小されてしまいます。コンテンツのスケールを変えずに表示領域の広さが変わるようにするには,次のようなコードを追加すればよいでしょう。

stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.addEventListener(Event.RESIZE, stageResizeHandler);
function stageResizeHandler(e:Event):void {
  html.width = stage.stageWidth;
  html.height = stage.stageHeight;
}

続いてFlex Builderでの実装方法です。Flex BuilderにはHTMLコンテンツを表示するためのHTMLコンポーネントがあるので,それを使います。

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
  <mx:HTML x="0" y="0" width="100%" height="100%" location="http://gihyo.jp/"/>
</mx:WindowedApplication>

このようにHTMLコンポーネントを配置して,locationプロパティにURLを指定するだけです。width/heightプロパティを100%にしておけばウィンドウサイズに合わせて表示領域も変わりますし,スクロールバーまで付いています。

Flashでのスクロールバー

Flex BuilderのHTMLコンポーネントにはもともとスクロールバーが付いていますが,Flashでは独自にスクロール処理を組み込む必要があります。スクロールの実装にはHTMLControlクラスの下記のプロパティを使います。

プロパティ
width:NumberHTMLControlオブジェクトの幅
height:NumberHTMLControlオブジェクトの高さ
htmlWidth:NumberHTMLコンテンツの幅
htmlHeight:NumberHTMLコンテンツの高さ
scrollH:Number水平方向のスクロール位置
scrollV:Number垂直方向のスクロール位置

スクロールの最大値は,コンテンツとオブジェクトのサイズの差で求められます。次のコードは水平/垂直共に最大までスクロールする例です(htmlはHTMLControlオブジェクト)。

var maxScrollH:Number = html.htmlWidth - html.width;
var maxScrollV:Number = html.htmlHeight - html.height;
html.scrollH = maxScrollH;
html.scrollV = maxScrollV;

履歴の移動

ウェブブラウザのようなアプリーケーションを作成する際は,ページの履歴を行き来する機能が必要になるかも知れません。HTMLControlクラスおよびHTMLコンポーネントには,ちょうどJavaScriptのhistoryオブジェクトに相当する機能が用意されています。履歴に関するメソッド/プロパティには次のものがあります。

メソッド/プロパティ命令/値
historyBack()戻る
historyForward()進む
historyGo()指定したステップ数移動する(正の値は進む/負の値は戻る)
getHistoryAt()指定した位置のエントリを取得する
historyLength:uint履歴リストの長さ
historyPosition:uint履歴リスト内の現在の位置

次のコードは戻る/進むボタンの実装例です(htmlはHTMLControlオブジェクト)。

prev_btn.addEventListener(MouseEvent.CLICK, prevClickHandler);
next_btn.addEventListener(MouseEvent.CLICK, nextClickHandler);
function prevClickHandler(e:MouseEvent):void {
  html.historyBack();
}
function nextClickHandler(e:MouseEvent):void {
  html.historyForward();
}

なお,履歴リスト内の各エントリはページのURLやタイトルを保持したHTMLHistoryItemオブジェクト(flash.htmlパッケージ)です。

著者プロフィール

タナカヤスヒロ

早稲田大学卒業後,DTP業務を経てマルチメディア系制作会社へ。Macromedia Directorにのめり込む。フリーランスとなりFlashにシフトしてからもデスクトップ絡みの仕事が絶えず,Apolloにも勝手に縁を感じている。現在株式会社antsに所属。ants Lab.にも記事を上げている。

URLhttp://labs.anthill.jp/

著書

  • ActionScript逆引きクイックリファレンス

    ActionScript逆引きクイックリファレンス(毎日コミュニケーションズ)

  • GIZMO Programmer's Bible FLASHによるガジェット開発

    GIZMO Programmer's Bible FLASHによるガジェット開発(毎日コミュニケーションズ)

コメント

  • 不愉快ですね

    コピーできない記事を載せるのは、人格が悪い証拠!
    ソースを修正すれば出来るけどネ!

    Commented : #1  名無し (2008/03/28, 23:19)

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

Ubuntu Weekly Recipe

Ubuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。

C/C++プログラマのためのDTrace入門

よくカーネルのチューニングや解析で活用されるDTraceですが,実はユーザプログラムの開発においても非常に有用です。連載ではC/C++プログラマやテストに関わる方向けにDTraceの使い方を解説します。

Blogopolisから学ぶ計算幾何

計算幾何学は,図形に関するアルゴリズムを研究するコンピュータサイエンスの一分野です。本連載では,ビジュアルブログ検索エンジン「Blogopolis」で採用されている計算幾何のアプローチを例に取り上げながら,計算幾何の初歩を実践的に学習します。

検索エンジンはいかにして動くのか?

本連載では, 今や誰もが利用している検索エンジンの中身を,全体の仕組みやデータ構造,アルゴリズムから分散インデックスまで,最近の研究事例も交えて紹介します。

サイエンスに片思い

本連載では,サイエンスという学問を軸に,そこから広がる可能性やつながり,そしてWebの世界との関係について,前田邦宏氏がさまざまな取材を元に考察し,これからの可能性について展望します。

使ってみよう! Windows Live SDK/API

Windows Liveサービスの一部にはAPIやSDKとして提供されているものがあります。本連載では各API・SDKの紹介とそれらを利用したアプリケーションを開発していきます。

Lifelog~毎日保存したログから見えてくる個性

コンピュータを使って,日常のさまざまなことの記録(ログ)をとり,それを分析して活用することで,もう一段階上の「楽な生活」をめざす日々の研究報告です。

もっと便利に!jQueryでラクラクサイト制作(実践サンプル付き)

本連載では,実践サンプルとともに,jQueryを上手に活用してサイト制作の品質向上・効率化を実現するための実践テクニックを解説します。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス