Flash Player 11.3とAIR 3.3が正式公開 [Edit]

Adobe Flash Player 11.3とAIR 3.3が正式に公開されました。最新のバージョンは11.3.300.257です。新たな機能はAdobeのThibault Imbert氏がByteArray.org「Introducing Flash Player 11.3 – AIR 3.3 beta」で紹介されています。その内容をまとめました(スクリプトはこの記事から引用しています)。

flash_512.png

  • Event.FRAME_LABELイベントの追加

タイムラインの処理がしやすいように、FrameLabelオブジェクトにイベントリスナーが加えられるようになりました。イベントはFrameLabel.frameLabel(定数Event.FRAME_LABEL)です。詳しくは、「ラベルが定められたFrameLabelオブジェクトにイベントリスナーを加える」をお読みください。

[例]

var frame:FrameLabel = mc.currentLabels[0];
frame.addEventListener(Event.FRAME_LABEL, onFrame);
  • MacでFlash Playerを自動更新

Windowsでは、すでにFlash Player 11.2で備わっていた機能です。Flash Player 11.3からMacOSでも、自動更新できるようになりました。これでどちらの環境でも、Flash Playerが早く普及するようになるでしょう。

  • オーディオの遅れを改善

この改良により、Sound.play()メソッドを呼出したり、SoundTransformオブジェクトのボリューム(SoundTransform.volume)やパン(SoundTransform.pan)を変えたときも遅れが少なくなりました。SampleDataEvent.SAMPLE_DATAイベントの遅れも大幅に減っています。入力サンプルサイズ2048で遅延は最適化されます。

  • バッファされないオーディオ再生の遅れを減らす

サポートするすべてのコーデックで、バッファされないライブオーディオ再生の遅れが減ることを目指しました。この機能を使うには、ふたつの設定が必要です。第1に、バッファなしの再生にするため、NetStream.bufferTimeプロパティの値は0にしなければなりません。第2に、新たに備わったNetStream.useJitterBufferプロパティtrueにすれば機能が働きます。

  • フルスクリーンでテキストを入力

フルスクリーンモードのSWFで、キーボードからのキー入力をすべてサポートできます。そのためには、ふたつの設定が要ります。

第1に、新たなHTMLのパラメータを有効にします。

<param name="allowFullScreenInteractive" value="true" />

この設定は、新らしい読取り専用のプロパティStage.allowsFullScreenInteractiveで確かめられます。

trace(stage.allowsFullScreenInteractive);

フルスクリーンでキー入力できるようにするには、Stage.displayStateプロパティに新しい定数StageDisplayState.FULL_SCREEN_INTERACTIVEを設定します。

stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
  • Stage3Dでテクスチャをストリーミング

アップロードするmipレベルを、低解像度から高解像度まで自由な順序で決められます。そして、Stage3Dのテクスチャをプログレッシブローディングできます。

[例]

[Embed(source = "MipLevel9.jpg")]
var MipLevel9:Class;
var context3D:Context3D;
var texture:Texture;

stage.stage3Ds[0].addEventListener(Event.CONTEXT3D_CREATE, createdHandler);
stage.stage3Ds[0].requestContext3D(Context3DRenderMode.AUTO);

function createdHandler(e:Event) {
    context3D = stage.stage3Ds[0].context3D;
    // 512のテクスチャサイズにストリーミングレベル9を設定して1×1のmipレベルにする(mipレベル0は512でmipレベル9が1)
    texture = context3D.createTexture(512, 512, Context3DTextureFormat.BGRA, false, 9);
    var mip9:Bitmap = new MipLevel9();
    texture.uploadFromBitmapData(mip9.bitmapData,9);
}
  • Stage3Dハードウェアアクセラレーションのサポートを2006年のドライバにまで緩和する

Flash Player 11.2では、サポートするドライバは2008年1月1日以降とされました(11では2009年)。将来のリリースでは、対応するドライバを2006年1月1日以前にまで拡げる予定です。Flash Player 11.3/AIR 3.3の公開ベータでは、フィードバックを得るため、この緩和が行われました。しかし、blogの著者Thibault Imbert氏のtweetによると、つぎのリリースに持ち越されたようです。

  • context3D.driverInfoプロパティの情報がより詳細になった

Stage3Dがソフトウェアにフォールバックされたとき、context3D.driverInfoプロパティからその理由が得られるようになりました。理由には4つあり、つぎのような文字列で値が返されます。

    • "Software Hw_disabled=userDisabled"

    [パブリッシュ設定]で[ハードウェアアクセラレーション]が正しく選ばれていないため、Stage3Dでソフトウェアレンダリングされています。

    • "Software Hw_disabled=oldDriver"

    ハードウェアのグラフィックスドライバが既知の問題によりブラックリストに入れられているため、Stage3Dでソフトウェアレンダリングが用いられました。ドライバを更新すれば解決します。

    • "Software Hw_disabled=unavailable"

    ドライバの能力か一般的なブラックリスト化によりハードウェアが使えないか、ハードウェアグラフィックスの初期化で問題が生じたため、Stage3Dでソフトウェアレンダリングが用いられています。

    • "Software Hw_disabled=explicit"

    コンテンツからStage3D.requestContext3D()メソッドにより、Stage3Dのソフトウェアレンダリングが求められています。

つぎのベータでは、判別の処理が書きやすいよう、これらの戻り値には新たなクラスの定数が用意されます。

  • MouseEvent.RELEASE_OUTSIDEイベントの追加

ユーザーがInteractiveObjectインスタンスの上で押したマウスボタンを、プレスしたままインスタンスの外に出して放したときに配信されるイベントです。詳しくは、「クリックしたインスタンスの外でマウスボタンを放したときのイベント」をお読みください。

[例]

s.addEventListener(MouseEvent.RELEASE_OUTSIDE, onReleaseOutsideHandler);
  • ApplicationDomain.getQualifiedDefinitionNames()メソッドの追加

これまで備わっていたApplicationDomain.getDefinition()メソッドでは、取得したい定義の名前を文字列で引数に渡さなければならず、クラス名を予め知らないと使えませんでした。新たに加わったApplicationDomain.getQualifiedDefinitionNames()メソッドはSWFから、すべてのpublicクラスの完全修飾名が取出せます。戻り値は、完全修飾名を文字列エレメントとして納めたVectorオブジェクトです。その完全修飾名をApplicationDomain.getDefinition()メソッドに渡せば、定義の参照が得られます。

[例]

var definitions:Vector.<String> = this.loaderInfo.applicationDomain.getQualifiedDefinitionNames();
  • BitmapData.drawWithQuality()メソッドの追加

BitmapData.draw()メソッドと同じ働きをするメソッドに、描画品質の引数を加えたのがBitmapData.drawWithQuality()です。Stage.qualityプロパティでステージのレンダリング品質を変えてから、BitmapData.draw()メソッドを呼出すという手間が要らなくなります。詳しくは、「BitmapData.drawWithQuality()メソッド」をお読みください。

[例]

bitmapData.drawWithQuality(sprite, sprite.transform.matrix, null, null, null, null, StageQuality.BEST);
  • ネイティブのビットマップ圧縮 − BitmapData.encode()メソッドの追加

ネイティブのJPEG/PNG/JPEG-XR圧縮をサポートします。

[例]

var bitmapData:BitmapData = new BitmapData(640, 480, false, 0x00FF00);
var byteArray:ByteArray = new ByteArray();
bitmapData.encode(bitmapData.rect, new JPEGEncoderOptions(), byteArray);
  • その他のおもにデバイス向けの改善
    • AIRアプリケーションのバックグラウンドでの振舞い
    • Android 4.0でスタイラスをサポート
    • USBデバッグ
    • モバイルのランドスケープ(横画面)表示
    • iOSシミュレータのサポート

コメント

この記事にコメントを書く

記事に対するテクニカルな質問はご遠慮ください(利用規約)。

その他の記事