ActionScript 3.0の最近のブログ記事

Adobe Labs に公開されている、Flash Player 11.7AIR 3.7 のベータ版が更新されました。新しいバージョンは以下の通りです。

Flash Player : 11.7.700.165
AIR : 3.7.0.1410

今回から AIR SDK には、ジョイスティックなどのゲーム入力機器を扱うための新しいクラスが追加されています。特定の種類のコントローラーを想定したものではなく、汎用的な API として提供されています。

新しく追加されたクラスは以下の 4 つです。イベントクラス以外は、flash.ui パッケージへの追加です。

  • GameInput
  • GameInputEvent
  • GameInputDevice
  • GameInputControl

AIR テクノロジープレビューの一部として公開されている、新しい ActionScript コンパイラの ASC 2.0 が更新されました。 (Adobe AIR Technology Previews@Labs

ASC 2.0 は AIR SDK の一部として配布されているため、単体での入手はできません。AIRテクノロジープレビューのダウンロードページから SDK ごとダウンロードします。 (AIR テクノロジープレビューについては以前の記事をご覧下さい)

プレビュー 2 は、基本的にバグ修正版という位置づけのようですが、いくつか仕様変更もあるようです。とりあえず [Embed] メタデータのサポートが復活 (追加?) しています。

これにより、Embed メタタグを使ってフォントを埋め込んでいるコードを、ASC2.0 でもコンパイルできることになります。但し、mxmlc では利用可能な language-range オプションのサポートは無いので、文字セットの一部だけを埋め込みたい場合は、メタタグ内で unicodeRange を使って指定します。

ASC2.0 を使ってみると、従来のコンパイラとは、生成される swf のパフォーマンスの傾向が異なることが分かります。

この理由の 1 つは、ASC 2.0 が関数のインライン化をサポートしたことです。関数がインライン化されると、関数の呼び出しの記述が、呼び出している関数本体のコードと置き換わります。

記述された通りに実行されていれば、

「関数を呼び出し」 → 「関数内に記述された処理を実行」

となるところが、コンパイル時にインライン化されると、「関数を呼び出し」 の記述がなくなって、代わりに 「関数内に記述された処理」 と置き換えられるため、実行されるのは、

「関数内に記述された処理を実行」

だけとなります。

結果的に実行されるロジックは同じでも、関数呼び出しのオーバーヘッドがなくなるため、多少処理が早くなるという訳です。

AIR テクノロジープレビューに含まれる新しい ActionScript のコンパイラ ASC 2.0 は、既存のコンパイラと動作が異なります。これは、より AS3 の言語仕様に対する準拠の度合いを高めるための変更であるとのことです。

これまで、言語仕様には合わないものの、たまたまコンパイラが見逃していた、あるいは謝った扱いをしていた、というケースが修正されます。

英語では変更点の一覧表が公開されていますので、ざっと翻訳した物を掲載しておきます。正規の文書ではないので、間違いがあったらご容赦ください。

 

アドビの言語設計リサーチグループに所属する Avik Chaudhuri のブログに、現在開発中の次世代 ActionScript コンパイラ Falcon の情報が公開されています。コメントも含め興味深い内容ですので、関心のある方はご一読をお勧めします。

The V8 Myth: Why JavaScript is not a Worthy Competitor

... 以下は、簡単な内容の紹介です。

ActionScript で記述されたコードは、バイトコードにコンパイルされて、AVM 上で実行されます。現在の実装では、AS コードをコンパイルする時の最適化は殆ど行われず、実行時の JIT による最適化がパフォーマンスの要となっています。

(AS コンパイラには、もうちょっと頑張って欲しい気がしますよね)

今年の MAX では Flash ランタイムの新機能、Stage3D が大きく扱われていました。従来の千倍のポリゴン描写ができるということで、新しい可能性が開けそうです。

でも、Stage3D により強化されるのは描画性能だけです。かつ、新しい書き方を覚えないとメリットを享受することができませんし、Flash なのにビットマップに縛られるのも窮屈です。

「Stage3D に不満な訳ではないけれど、これだけでは... 」 と思った人のために、MAX から Flash の今後についての情報です。

以下、ご紹介する項目は 2012 年公開を目標にしているものが殆どのようです。もちろん遅れることもあるでしょうし、機能が削られることもあると思います。ですが、もし、本当に以下の機能を揃えられのであれば、来年はずいぶんと楽しい年になりそうです。 

Adobe Developer Connection (ADC) の Flex と Java について学ぶコーナーに、Java 開発者向け ActionScript 記事の続編を 2 本追加しました。

今回は少し踏み込んだ内容になっています。記事へのリンクは、

です。

 

前回は、コンパイル定数を使ってコンパイルする行を選択する方法でした。今回は、コードに値を渡す方法についてです。

文字列、数値の指定

コンパイル定数には Boolean 以外にも String や Number 型の値を指定できます。コード内では、この値をグローバル変数として利用することができます。(もちろん Boolean 型の値も渡せます)

private var foo:int = MY_CONFIG::foo;
private var bar:String = MY_CONFIG::bar;
 

この際、暗黙の型変換は行われません。コンパイル定数の値は、代入する変数の型に合わせる必要があります。上の例であれば、foo には数値、bar には文字列を指定します。下は Flash Professional の設定パネルから値を指定する場合の例です。

MY_CONFIG::foo 1 
MY_CONFIG::bar "1"
 

文字列を定数の値として指定する場合は、必ずダブルクォーテーション (") またはシングルクォーテーション (') で囲むようにします。

コマンドラインからコンパイル定数の値を指定する時は、ダブルクォーテーションで値を囲むのが基本です。 (Boolean と Number は囲まなくても良いようですが。) 上の設定と同じものをコマンドラインから指定すると下のようになります。

AS3 では、コンパイル時に条件を指定してコンパイル結果を変えることができます。例えば、コードの一部を、条件に応じてコンパイル対象から外したり、ターゲットごとにクラス定義を切り替えたり、という使い方が可能です。

条件を指定するコンパイル定数は、下の形式で記述します。

CONFIG::定数名
 

CONFIG は条件を指定する定数用の名前空間です。定数名の箇所は予約語を除き任意の名前を使用できます。

CONFIG 名前空間は、オーサリング環境がデフォルトで使用します。名前が被るのを避けるために、独自の名前空間を宣言したければ、以下のようなコードを AS のコード内に記述します。

config namespace MY_CONFIG; // MY_CONFIG は好きな名前に置き換えて
 

これで、以下のような定数を指定できるようになります。

MY_CONFIG::debug
 

コンパイル定数が true の時のみ、後続のブロックがコンパイルされます。例えば、下の例では、MY_CONFIG::debug の値が true であれば、trace 文がコンパイルの対象となります。

MY_CONFIG::debug {
  trace("MY_CONFIG::debug == true");
}
 

コンパイル定数の後には、クラス定義や関数定義、それから変数宣言を記述することもできます。この場合も、定数の値が true の時のみ、後続のクラスや関数が定義されます。下の例では 2 種類のクラス定義を、変数によって切り替えています。

Java 開発者向けの AS3 記事を 2 つ書きました。Adobe Developer Connection (ADC) の中にある Flex と Java について学ぶ の新しいコンテンツです。

とりあえず、厳密な解説は抜きに、これから AS3 を始める人の参考になりそうな内容をまとめてみました。記事へのリンクは、

の 2 つです。

Java をまともに書かなくなって久しいので、間違いなどあればお知らせ頂けると嬉しいです。

 

Geolocation クラスの使い方は前回説明した Accelerometer と良く似ています。

Geolocation.isSupported 属性を使うと、実行環境で Geolocation が使えるかどうかを確認できます。値が true なら利用可能、false なら利用不可を意味します。

if (Geolocation.isSupported)
{
  // Geolocationの機能が利用できる  
}
 

位置情報といえば GPS が有名ですが、GPS 以外の手段で位置情報を取得するデバイスもあります。そのため、isSupported の値が true であることは、必ずしも GPS が搭載されているという意味にはなりません。

また、GPS 情報が受信できない場合の補助用に、複数の測位システムを搭載しているデバイスもあります。このようなデバイスでは、アプリ実行中に利用する測位情報システムが変わる可能性があります。

利用する測位システムの種類によって、Geolocation からの通知のタイミングや頻度が影響を受けるようです。ですが、利用中の測位情報の種類を知る手段はありません。なので、Geolocation の振る舞いについては実機での検証がいるかもです。

位置情報へのアクセスの状態

多くのデバイスでは、位置情報を利用する/しないをオプションとして選択できるようになっています。この状態は muted 属性を使って知ることができます。値が true のときは利用しない、false のときは利用する、が選択されていることを示します。

この状態が変わると、Status イベントが発生します。イベントハンドラを追加することで、状況に応じて処理をすることができます。下はその例です。

記事の元ネタとなっている Optimizing Performance for the Flash Platform が更新されました。前のバージョンより 15 ページほど増えています。とりあえず、CPU 編の 「Timer と ENTER_FRAME イベント」 を更新しておきましたのでよろしければご覧ください。その他には主に AIR 関連のトピックが追加されています。

では、Optimizing Performance for the Flash Platform から最後の Tips です。

まず、Flash Player 10.1 から追加された新しいネットワーク関連の機能 2 点です。

サーキュラーバッファリング (circular buffering)

  • ビデオをプログレッシブダウンロードで再生する場合、デスクトップ環境では (Flash Player 10.1 含む) ロードした FLV ファイル全体をローカルディスクにキャッシュする。Flash Player はキャッシュから再生を行う
  • デバイス上では、
    1. FLV のキャッシュに必要な領域が不足
    2. 20 MB 以上のディスク領域 (もし無ければ 4 MB 以上のメモリ) が利用できる - この値はコンパイル時に設定可能
    の条件でサーキュラーバッファリングが行わる
  • サーキュラーバッファリングでは、キャッシュファイルが一杯になると、ファイルの先頭から再利用される
  • ファイル全体がキャッシュされないと再生できないファイル (MP4 の一部のファイル等) を保存する領域が足りないと Flash Player はそのファイルをダウンロードしない

スマートシーク (smart seeking)

  • Flash Media Server 3.5.3 から Flash Player 10.1 にストリーミングを行うとスマートシークが使える
  • 従来の動作は、シークが行われると、バッファされたデータは全て捨てられる
  • スマートシークでは、シーク先がバッファされている範囲内だった場合、再利用できるデータはそのまま使われる。そのため、すぐに再生が開始され、ストリーミングに必要な帯域も削減することができる

あとは、Tips が 3 つあります。

SWF の分割

  • SWF を複数に分割することで読み込みから起動までを高速化できる
  • その際、アセットやロジックが重複してダウンロードされないように注意する
  • RSL (Runtime Shared Library) を使って共通部分をダウンロードし、それを複数の SWF から getDefinition() メソッドを使って利用することが可能 - クラス定義、フォント、ビットマップ、サウンドなどが RSL 化できる

入出力エラー

  • ネットワーク接続が不安定な場合に備えて IOErrorEvent.IO_ERROR イベントのリスナーを定義することが望ましい
  • その際、エラーの発生をユーザーに知らせ、リトライができるようにすることを推奨

Flash リモーティング

  • XML を使った通信はデータ量が多くなり、処理時間もかかるため、少量のデータを送受信するのに適している
  • 大量のデータを送受信する場合は、AMF の使用をするべき
  • AMF を使用する場合、サーバ側には ZendAMF, FluorineFx, WebORB, BlazeDS などのモジュールが必要
  • Flex SDK を使うと、AMF が簡単に利用できる (Flash Professional でも Flex フレームワークの SWC を利用可能)

今回は Optimizing Performance for the Flash Platform から、描画パフォーマンスに関連する Tips です。

StageQuality

  • デバイスは画面サイズが小さいため、イメージの品質の差がデスクトップ環境に比べて分かりにくい
  • デバイスの画面は解像度が高いため、アンチエイリアス無しでも画像の質はあまり低下しない
  • そのため、デバイスでは通常 StageQuality は MEDIUM で十分
    StageQuality.LOW: アンチエイリアスは一切行われない、もっとも高速
    StageQuality.MEDIUM: 一部アンチエイリアスが行われるがビットマップは対象外
    StageQuality.HIGH: アニメーションされるビットマップのみアンチエイリアスされない
    StageQuality.BEST: すべてのビットマップがアンチエイリアスされる、もっとも低速
  • テキストのアンチエイリアスを "読みやすさ優先" にすると、StageQuality の値に係わらず、常にテキストはアンチエイリアス処理される

アルファブレンド

  • アルファ属性を設定した場合、アルファブレンドを必要とするエフェクトの使用は避ける
  • アルファ属性の使用も必要なときのみにするべき

ビットマップキャッシュ

  • ビットマップキャッシュはベクター画像を内部的にビットマップデータに変換してから描画する機能、いったん作成されたビットマップはメモリ上にキャッシュされ再利用される
  • ビットマップキャッシュ機能を利用するには、cashAsBitmap 属性に true を設定する
  • 複雑なベクター図形やテキストの描画に効果がある
  • 図形が変化するごとにビットマップを生成する、そのため頻繁に変更される図形は、ビットマップキャッシュするとかえって遅くなる
  • ビットマップを保持するため、メモリをたくさん必要とする
  • 図形の位置が変化してもキャッシュされたビットマップは再利用されるが、回転したり大きさを変えるとビットマップは再作成される
  • アルファの値が変わった場合もビットマップは再作成される
  • AIR と Packager for iPhone では、回転や大きさの変更でもキャッシュされたビットマップが使えるよう cashAsBitmapMatrix 属性が提供されている
  • cashAsBitmap = true のとき、opaqueBackground 属性を設定すると、さらに処理を高速化できる
  • cashAsBitmap は個々のオブジェクトに設定した方が、親オブジェクトに設定するよりも、使用するメモリ量を削減できるケースが多い (画面上で閉める領域の大きさに比例する)
  • フィルターは自動的に cashAsBitmap = true を設定する。これによりパフォーマンスに影響が出る

GPU

こちらの記事をご参照ください Flash Player 10.1 のハードウェアを利用した描画機能 (グラフィックス編)

いよいよ来週は CS5 発表のオンラインイベントですね。

Optimizing Performance for the Flash Platform から、AS3 関連の Tips です。この分野はいろいろな最適化手法がありますので、ここで紹介されているもの以外にも探せば見つかると思います。このページ Some ActionScript 3.0 Optimizations の下の方にもいろいろなサイトへのリンクがまとめられています。ご参考まで。

さて、本題に戻って、

Vector と Array

  • 可能な場合は Vector を使用した方が早い
  • 必要な Vector の大きさを最初に指定しておくとさらに早い (メモリ領域が足りなくなると、新たなメモリ確保とデータのコピーが必要になるため)
const MAX_NUM:int = 300000;
var coordinates:Vector.<Number> = new Vector.<Number>(MAX_NUM, true);
 

描画 API

  • Flash Player 10 から追加された新しい描画 API を使うと、従来の moveTo() や lineTo() を使った処理よりも高速化できる
    drawPath()
    drawGraphicsData()
  • 描画する図形が複雑になるほどその差が大きくなる
var container:Shape = new Shape();
container.graphics.beginFill(0x442299);
 
var coords:Vector.<Number> = Vector.<Number>([132, 20, 46, 254, 244, 100, 20, 98, 218, 254]);
var commands:Vector.<int> = Vector.<int>([1,2,2,2,2]);
 
container.graphics.drawPath(commands, coords);
 

引き続き Optimizing Performance for the Flash Platform から、CPU の使用率を削減するための Tips です。

最初は、デバイス上での Flash Player 10.1 の新機能 3 点です。

スリープモード

  • Flash Player 10.1 はアプリケーションが中断されたことを検知するとスリープモードになる
  • スリープモードではフレームレートが 4 fps になり、描画は行われない
  • スリープモード中はイベントが発生しない
  • AIR にはスリープモードは無い

ポーズとレジューム

  • Flash Player 10.1 はコンテンツがスクリーン上に表示されない状態になると再生を停止 (ポーズ) し、表示されると再生を再開 (レジューム) する
  • ポーズ時には積極的にメモリの開放も行われる
  • ポーズが起きるのはコンテンツがページのスクロールなどにより完全に表示されない状態になったとき
  • ポーズ状態でも映像と音声の再生は継続する (ただし描画は行われない)
  • hasPriority = true を設定 (下の項目参照) すると、ポーズ状態でも ActionScript の実行が行われる
  • この機能も AIR には無い

hasPriority

  • 新しい HTML 属性 <param name="hasPriority" value="true" />
  • 値を true にすると、例えばページの下にの方にあってスクロールしないと表示されないようなコンテンツが、表示されないままでも読み込み後直ぐに再生が開始されるようになる
  • ただし、表示されていないコンテンツの場合、再生されても描画は行われない
  • CPU に余裕が無いとき、この属性の値に係わらず、コンテンツをクリックしないと再生を開始しない (クリック・トゥー・プレイとよばれる機能)

さて、以下は、CPU リソースを効率的に使うための Tips です。Flash Player 10 以前のバージョンにも適用されます。

前回に引き続き Optimizing Performance for the Flash Platform からメモリ使用の最適化に関する Tips です。

ビットマップのダウンサンプリング

  • Windows Moblie 向けの Flash Player 10.1 では 32-bit イメージを 16-bit イメージにダウンサンプリングすることにより使用するメモリ量を半分にする
  • 透明な部分を持つイメージに対してはダウンサンプリングが行われない

BitmapData の単一参照機能

  • Flash Player 10.1 では、埋め込まれたイメージから BitmapData インスタンスを作成すると、常に単一のインスタンスを参照する
  • 既存のコンテンツも再コンパイル無しで Flash Player 10.1 上で実行するだけでこの機能が利用できる
  • 従来の Flash Player では BitmapData のインスタンスを生成した数だけ、実際にインスタンスがメモリ上に生成されていた

フィルターの使用

  • フィルターを Sprite などに利用すると、2 つのビットマップが生成される (Sprite をビットマップ化したものと、フィルター適用後のビットマップ)
  • 2 つのビットマップのうち表示に使用されるのはフィルター適用後のビットマップのみ
  • Flash Player 10.1 はフィルターが 30 秒以上変更されないか、表示されなくなると、元のビットマップ (フィルターの適用されていない方) を開放する
  • 解放後にフィルターが変更されると、元のビットマップがサイド生成される (動的ビットマップアンロード)
  • Flash Player 10.1 で改善されてはいるが、フィルターの使用は負荷が高い
  • 動的にフィルターを適用することが不要な場合には、Photoshop 等で作成した画像を読み込む方がよい

Adobe のヘルプサイトに、Flash Platform 用コンテンツのパフォーマンス最適化のドキュメント (ベータ版) が公開されています。(Optimizing Performance for the Flash Platform) Flash Player 10.1 における変更点も詳しく説明されています。

もう直ぐ内容のより充実した正式なドキュメントが日本語版として公開されると思いますが、とりあえず概要だけでも紹介しておきたいと思います。

なお、このドキュメントかなり細かいです。通常のコンテンツではここまで気にしなくてもよいのでは、というくらい些細な違いも取り上げられています。今後、iPhone や Andoroid 携帯などリソースの限られたプラットフォームを扱う人は知ってた方がよいかもですが。

まず、メモリ管理関連のトピックからです。

Display Object

  • 以下の 3 種類のクラスを目的に応じて使い分ける
  • 特に Shape のインスタンスは MovieClip のインスタンスの半分程度のメモリ使用量
    Shape: インタラクションの不要な場合
    Sprite: インタラクションは必要だがタイムラインが不要な場合
    MovieClip: インタラクション、タイムライン共に必要な場合

getSize() メソッド

  • オブジェクトのメモリ使用量を調べることができる。単位はバイト
  • flash.sampler.getSize(o:*):Number
  • Flash Builder のプロファイラでも使用されている。flash.sampler パッケージを利用して独自のプロファイラ作成も可能

BitmapData の再利用

  • 元の画像データが同じ Bitmap を複数作るときは BitmapData を共有する
  • 下の例では、1 つの BitmapData インスタンスを 300 個の Bitmap が参照 - BitmapData を 300 個作る場合に比べ約 700KB の削減

Action Script 3 用スペルチェックライブラリ (コードネーム Squiggly) の最初のプレビューリリース版が Adobe Labs に公開されました。(Squiggly@Labs

Squiggly を使った簡単なデモが Adobe Labs に公開されていますのでまずはそちらをご覧ください。(Squiggly demo) フィールドがフォーカスされるとスペルチェックが行われて間違いのある単語には赤い下線が表示されます。また、下線の引かれた単語で右クリックすると修正候補が表示され選択することができます。実行には Flash Player 10 が必要です。

Squiggly のダウンロードページはこちらです。(Squiggly downloads) ASDoc は別途提供されています。(squiggly_p1_asdoc_092109.zip : 72KB)

Squiggly の使い方

ダウンロードしたパッケージに含まれる AdobeSpelling.swc をパスに追加すると Squiggly が使えるようになります。下は、Squiggly を使ってスペルチェックを行うコードの例です。

import com.adobe.linguistics.spelling.*;
 
// スペルチェック用オブジェクト生成
private var _sp:SpellChecker= new SpellChecker("en");
 
// 辞書オブジェクトの生成
private var _dict:SpellingDictionary = new SpellingDictionary();
 
// イベントハンドラの追加と辞書データファイルの読み込み
_dict.addEventListener(Event.COMPLETE, handleLoadComplete);
var myUrl:URLRequest = new URLRequest("usa.zwl");
_dict.load(myUrl);
 
// 辞書をスペルチェック用オブジェクトに設定
private function handleLoadComplete(evt:Event):void
{
  _sp.addDictionary(_dict);
}
 
private function checkWord(word:String):Boolean 
{
  // スペルチェックを実行
  if(_sp.checkWord(word))
    return true; // エラー無し
  else
    return false; // エラー有り
}
 

このサンプルでは Squiggly のクラスが 2 つ使われています。スペルチェックを行うクラス SpellChecker と、スペルチェック用辞書データを保持するクラスの SpellingDictionary です。

SpellChecker は間違ったスペルの単語に対して修正候補のリストを作成するメソッド getSuggestions() も持っています。getSuggestions() は最大 10 件までの候補を配列として返します。候補が見つからなければ空の配列が返されることになっています。

下のコードは、とりあえず getSuggestions() の使用例ということで。

既に一部で伝えられているように、先週 ECMA TC39 から次期 ECMAScript 標準に関するアナウンスがありました。

Flash Player 9 の発表以来、Adobe は ActionScript を ECMAScript 標準第 4 版として提案された ECMA-262 Edition 4 (ES4) に完全準拠させるという目標を公にしてきました。この ES4 は、Adobe, Mozilla, Opera, それから Google を主要なサポーターとして標準化が進められていましたが、一年ほど前に Microsoft と Yahoo! 主導で ECMA-262 Edition 3.1 (ES3.1) のワーキンググループが開始されて以来、2 つの異なる ES3 後継仕様案が並存する状況が続いていました。

先週の発表は、ES4 に関する標準化作業を中止し ES3.1 に集中することが決定されたというもので ECMAScript Harmony プロジェクトと名付けられています。ES3.1 は ES4 のサブセットではありません。つまり AS3.0 は ES3.1 非互換になるということです。例えば ES3.1 の仕様には namespace や package は含まれません。これらの機能は ES3.1 以降の拡張に際しても含まれないことがはっきりと述べられています。また、型指定や継承といった機能の採用については (そもそも class の定義自体が異なるのですが) 今後の議論を待つことになります。JS1.7 や JS1.8 として Firefox 2, 3 に追加された機能も Harmony 路線では見直されるようです。

この件に関して Adobe からの正式なコメントはまだありませんが、Adobe のオープンソースチームのディレクターである Dave がコメントを blog に公開しています。(Standards, ECMAScript and representing the past

要約すると、

  • ECMAScript 標準化委員会参加企業の利害の不一致により仕様の一本化が難しい状況になっていた
  • Web に共通の言語を持つことが必要という観点から Harmony に賛同する
  • その上で、Web の革新を更に進めるため ActionScript の拡張は続ける
  • オープンソースコミュニティ活動の継続・発展も標準化委員会との活動と同様に重要

ということで、ECMAScript の標準化には引き続き参加する一方 ES3.1 のレベルまで AS3 の機能を戻すということは考えられていないようです。(blog 記事に対するコメントには、これを機会に ECMAScript 準拠をやめちゃえというものもいくつか見られました - 例えば private コンストラクタや関数オーバーロード機能の実装など...) 既に多くのユーザに使用されている言語を、その可能性を制限する方向で変更するのは Adobe の理念に反すると Dave としては思っている様。

いましばらく、正式なコメントの発表はお待ちください。

まず、Adobe Labs に Flash Player 10 ベータの ASDoc が公開されています。(flashplayer10_as3langref_052008.zip: 6.46MB) それから、Flash Player 10 用 Flex SDK の Nightly Build (安定していないビルド) がダウンロードできます。(Flex 3 SDK Downloads) May 15 以降のビルドをダウンロードすれば Flash Player 10 の新しい機能を使ったアプリ開発ができます。

さて、今日の本題です。既報のとおり、Flash Player 10 には新しい高機能なテキストエンジンが搭載されます。上でご紹介した ASDoc には flash.text.engine というパッケージ (FTE と呼ばれています) が追加されていますが、縦書きやマルチカラムといった新しい機能を利用するには、この FTE の API を使うことになります。

ところが、FTE は低レベルの API なので、これを使いこなすには新しいテキストエンジンの構造をきちんと理解する必要があります。つまり、 かるく試してみるにはちょっと敷居が高いのです。

そのため、もう少し簡単にテキストフォーマットを記述するための新しいマークアップ言語が提供される予定です。

2014年1月

Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
レンタルサーバー

月別 アーカイブ

Powered by Movable Type 4.261