詳細は Change Log をご覧ください。
選択中のオブジェクトとルートノードへのアクセスが scenegraph を使ってできるようになりました。つまり、引数としてこの 2 つを渡す必要がなくなったということです。
XD 14 からは、以下のように記述することが可能です。
function someAction() {]]> Text スタイルにアクセスできる属性
const { selection, root } = require("scenegraph");
/* ... */
}
Text ノードに対して、直接スタイルの取得と設定ができるようになりました。fill や fontFamily といったおなじみの属性を使ってスタイルを指定できます。
// テキストノードが選択されていると仮定
const text = const text = selection.items[0]; text.fill = new Color("Purple");
text.fontFamily = "Helvetica";
text.paragraphSpacing = 10;
テキストエリアを新規に作成して、大きさを指定することも可能です。
const text = new Text();
text.areaBox = {width: 100, height: 100};
ドキュメントのズームやパンが可能な Viewport が追加されました。引数にノードを指定してビューの中央に表示したり、座標と領域の大きさを指定して XD ドキュメントの表示領域を変更することができます。
下の例は、選択されているオブジェクトにビューポートが移動します。
const viewport = require("viewport");
viewport.scrollIntoView(selection.items[0]);
現在のビューポートの境界や、拡大倍率を取得することもできます。
const bounds = viewport.bounds;
const zoom = viewport.zoomFactor;
cloud の getSharedArtifacts() メソッドにより、最近共有されたリンクを取得できるようになりました。プロトタイプとデザインスペックの選択は、cloud に定義されている ArtifactType (PROTOTYPE, SPECS) を使います。
下は、最近共有されたデザインスペックのリンクを取得するサンプルです。リンクの状況は取得できないため、サーバー側で削除されたリンクが含まれている可能性がある点には注意です。
// Get design specs data var sharedArtifacts = cloud.getSharedArtifacts(); var specs = sharedArtifacts.filter(artifact => (artifact.type === cloud.ArtifactType.SPECS) ); specs.forEach(artifact => {console.log("Design Spec URL: ", artifact.url); });
ノードにプラグインのメタデータを保管するための属性 pluginData が追加されました。root ノードに保管すれば、ドキュメントのどこからでも参照可能です。ただし、プラグイン間でのデータ共有には使えません。
扱えるメタデータは文字列だけです。そのため JSON データは JSON.stringify などを使って変換することになります。
]]>
新しい SWF のバージョンは 43 です。
バージョン 32 の主な変更点は、以下の 2 つです。
flash.system.Capabilities クラスに新ししく追加された cpuAddressSize 属性は、実行環境が 32 ビットか 64 ビットかを表し、32 と 64 のどちらかの値をとります。
また、新しい iPhone に対応するために追加された画像のサポートは以下の通りです。
]]>機種
解像度 (ピクセル)
画像名
向き
iPhone X, XS
1125×2436
Default-812h@3x~iphone.png
縦長
iPhone X, XS
2436×1125
Default-Landscape-812h@3x~iphone.png
横長
iPhone XR
828 × 1792
Default-896h@2x~iphone.png
縦長
iPhone XR
1792 × 828
Default-Landscape-896h@2x~iphone.png
横長
iPhone XS Max
1242 × 2688
Default-414w-896h@3x~iphone.png
縦長
iPhone XS Max
2688 × 1242
Default-Landscape-414w-896h@3x~iphone.png
横長
それから、AIR ランタイムは iOS 12 SDK でビルドされているため、iOS 12 の API を使用した ANE を利用可能です。
以前のバージョンの iOS で構築された ANE を利用するには、-platformSDK に iphoneOS バージョン 12.0 を指定します。iOS 12 から削除された libstdc++ を使用している ANE や、変更されたシンボル定義を参照している ANE は再パッケージが必要です。
AIR 32 から、バックグラウンドで実行されているときも、位置情報が取得できるようになりました。従来は、バックグラウンドで実行されると位置情報の取得が中断されて、再開するにはアプリの再起動が必要でした。
Geolocation クラスに新しく追加されたのは、バックグラウンドでの実行中も位置情報を取得するかを示す属性と、情報の正確性を指定する属性です。位置情報を取得し続けるとバッテリーの消費に影響します。情報の精度を下げることで、影響を減らせるというわけです。
pausesLocationUpdatesAutomatically 属性の値が true だと、しばらく使用されていないアプリは位置情報の取得を中断します。これがデフォルトの値です。false に設定すると、バックグラウンドでも位置情報を取得し続けるようになります。
位置情報の精度を指定するための属性が desiredAccuracy です。指定可能な値は以下のようになります。
これらの値は、位置情報の使用許可が出るまでは指定できません。また、アプリケーション記述子に以下の記述が必要です。
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
]]>
新しい SWF のバージョンは 42 です。
今回の更新のタイミングに合わせて、Google Play から AIR ランタイムをダウンロードできなくなりました。これはバージョン 26 から共有ランタイム機能が廃止されたことに伴う措置ということです。
バージョン 31 の主な変更点は、以下の 2 つです。
Firefox の最新版 62 から、Mac 環境では NPAPI 向けのサンドボックスが有効になっています。これにより、以下の動作がブロックされるようになります。
]]>サンドボックスを無効にするには、about:config ページ内の "dom.ipc.plugins.sandbox-level.flash" の値を 0 にしてから、ブラウザを再起動します。
ActionScript から表示されている画面の解像度や表示幅を取得するクラス ScreenMode が追加されました。特に、高 DPI の画面におけるパフォーマンスの最適化を念頭に追加されたクラスのようです。属性は以下の 4 つです。いずれも読み取り専用です。
width : int // 表示幅のピクセル数 height : int // 表示高のピクセル数 refreshRate : int // 表示画面のリフレッシュレート(単位は hz) colorDepth : int // 色深度のビット数
ScreenMode のオブジェクトを取得するために Screen クラスに 2 つの新しい属性が追加されました。ひとつは、画面の現在のモードを取得する mode 、もうひとつは、画面がサポートするモードの一覧を取得する modes です。
mode : ScreenMode // 現在の画面モードの取得と更新
modes : Array // サポートされる画面モードの配列 (読み取り専用)
modes で得られた任意のモードを選択して、mode に設定することが可能です。ただし、設定できるのはフルスクリーン表示のときだけです (取得は常に可能です)。画面の解像度を変更したいときに使用する機能ということなのでしょう。
下は、簡単なサンプルコードです。
import flash.display.Screen; import flash.display.ScreenMode; var mainDisplay:Screen = Screen.mainScreen; // メイン画面の現在のモードを取得する var mainScreenMode:ScreenMode = mainDisplay.mode; var allScreenModes:Array = mainDisplay.modes; // 配列の最初の画面モードをメイン画面に設定する mainDisplay.mode = modes[0];
]]>
新しい SWF のバージョンは 41 です。
バージョン 30 の新機能は以下の通りです。
Intel の CPU に対して Spectre / Meltdown と呼ばれる脆弱性が報告されています。これに対応するため、ActionScript の ByteArray クラスの shareable 属性のデフォルト値は false になりました。
これを変更するには、mms.cfg ファイルを変更します。つまり、システムの管理者権限が必要です。関連する項目は以下の 4 つです。
]]>
新しい SWF のバージョンは 40 です。
バージョン 29 の新機能は、ベータ版の記事で紹介したものに 2 つ追加されています。どちらもデスクトップ版 AIR への機能拡張です。
AIR 28 まで、フレームバッファの描画レートはディスプレイの リフレッシュレートと同期されていました。AIR 29 からは、ディスプレイのレートとの同期と非同期を切り替える機能が追加されています。
この機能が利用可能な環境では、stage オブジェクトが発行する VsyncStateChangeAvailabilityEvent イベントの available 属性の値が true になります。stage オブジェクトの vsyncEnabled の値に true/false を設定することで、同期と非同期を切り替えられます。
Windows 7 環境では、vsyncEnabled に true を設定すると、Event.CONTEXT3D_CREATE イベントが再発行され、画面にちらつきが起きる場合があります。他の環境では、この現象は見られないとのことです。
ARI 29 から、GPU メモリの上限がこれまでの 512 MB から 2048 MB に拡大されます。Stage 3D のプロファイルに、Standard_Extended または Enhanced を指定するとこの値が適用されます。
ただし、AIR 64 bit 限定です。また、この GPU メモリが利用できるのは 2D のテクスチャ (Texture, RectangleTexture) で、 CubeTexture が利用できるメモリ上限は以前と変わらず 256 MB です。
]]>
今回の主な追加機能、および変更点は以下の通りです。すべて AIR 関連の機能です。
HIDPI サポートの拡張は、AIR 23 で追加された機能を、非クライアント領域まで対象に広げたもので、ダイアログボックスやタイトルバーなどが含まれます。Windows 10 (Redstone 1) バージョン 1607 以降で利用できます。
また、AIR 26 出追加された ENHANCED プロファイルがデスクトップ環境でも利用できるようになりました。対象の OS は、Windows8.1 以降と Mac OS 10.9 以降です。これにより、デスクトップ環境でも AGAL4 が利用できます。最新の AGALMiniAssembler はこちらです。
Android SDK は AIR 28 SDK に続き、AIR 29 SDK でも連続で更新されました。各ツールのバージョンは以下の通りです。
]]>TextField と StageText の softKeyboard 属性に新しく 2 つの選択肢が追加されました。
AIR 29 からは、ユーザーに電話番号や数字を入力させたいとき、専用のキーボードを表示できます。以下がそのサンプルです。
var tfKeyBoard:TextField=new TextField(); tfKeyBoard.softKeyboard=SoftKeyboardType.DECIMAL; var stKeyBoard:StageText = new StageText(); stKeyBoard.softKeyboardType=SoftKeyboardType.PHONE;
AIR 21 で追加された、モバイル環境におけるメディアの自動再生機能が更新されました。StageWebView での自動再生を指定できる mediaPlaybackRequiresUserAction 属性が StageWebView に追加されています。デフォルト値は true で、明示的に false を指定すると StageWebView 内のメディアが自動再生されるようになります。
下の例のように、コンストラクタの 2 つ目の引数として指定できます。
public function StageWebView(useNative:Boolean = false, mediaPlaybackRequiresUserAction:Boolean = true)
Android では、後から属性を指定して振る舞いを変更できますが、iOS では後からの変更は無視されます。そのため、自動再生を指定したければ StageWebView インスタンスの生成時に行う必要があります。
iOS での位置情報の利用に際して、「使用中のみ許可」と「常に許可」の許可を求めるための新しい属性 locationAlwaysUsePermission が追加されました。
デフォルト値は false、つまり、従来どおりの動作ですが、locationAlwaysUsePermission に true を設定してから requestPermission() を実行すると、両方のオプションから許可を求めるようになります。
private var geo:Geolocation = new Geolocation(); geo.locationAlwaysUsePermission = true; //WHEN_IN_USEとALWAYSをリクエスト geo.requestPermission();
iOS 11 では、先に「使用中のみ許可」を確認していた場合に、後から「常に許可」を求めることができます。これは1回だけ行うことが可能で、それ以降の requestPermission() は無視されます。アプリケーション記述ファイルに、適切なキーが記述されている必要があります。
iOS 10 以前の OS ではこの属性は機能しません。requestPermission() は 1 度だけ呼ぶことができ、「使用中のみ許可」と「常に許可」の選択は、アプリケーション記述子に書かれたキーに依存します。
これまで、Windows の 32 ビットアプリと 64 ビットアプリには、それぞれ別の AIR SDK が提供されていました。AIR 29 からは、ひとつの SDK で 32 ビットと 64 ビット両方のパッケージに対応します。
32 ビットと 64 ビットから対象とするアーキテクチャを指定する方法は、Flash Builder、Animate CC、 adt で異なります。
Animate CC と adt の場合:
アプリケーション記述ファイルに <architecture> タグを追加し、32 か 64 を値に指定します。それぞれ、32 ビットか 64 ビットの AIR アプリをパッケージするという指定になります。
<architecture> タグは <application> タグ下に記述します。以下は app.xml ファイルのサンプルです。
<?xml version="1.0" encoding="utf-8" standalone="no"?> <application xmlns="http://ns.adobe.com/air/application/29.0"> <id>Sample</id> <filename>Sample</filename> <architecture>64</architecture> <name>Sample</name> <versionNumber>0.0.0</versionNumber> <initialWindow> ... </initialWindow> </application>
Flash Builder の場合:
環境変数 AIR_WIN_ARCH に 32 か 64 を指定します。<architecture> タグへの指定は無視されます。
共有ランタイム形式、またはネイティブアプリとしてパッケージする場合は、引き続き 32 ビットのみがサポートされます。
]]>
新しい SWF のバージョンは 39 です。
バージョン 28 の新機能は、ベータ版の時点の記事で紹介したとおりです。
Android 4.0 以前のバージョン向けに Google Play ストアで提供されている AIR ランタイムの提供が 2018 年 3 月 13 日に終了することが発表されています。影響を受けるアプリは、期限までにキャプティブランタイムを使ってパブリッシュするよう推奨されています。
]]>
今回の主な追加機能および変更点は以下の通りです。
Android SDK の各ツールのバージョンは以下の通りです。
AIR ランタイムは iOS 11 SDK にアップグレードされました。これにより、いくつかアイコンをアプリに追加で含めることが必要になります。以下は、Xcode 9 を使って、Assets.car ファイルを準備する手順です。
上記手順について、詳しくは、 こちらのページ (Add an App Store icon) をご覧ください。
追加したアイコンは App Store 用を除き、icon タグで app.xml に記述します。なお、iOS 11 をターゲットにした場合、生成される IPA は 64 ビットのみになります。
AIR デスクトップ版に 2 つの新機能が追加されました。
まず、オーディオデバイスマネージャー API は、Flash Player 27 から追加された機能を AIR に実装したもので、オーディオ出力デバイスをアプリごとに選択できます。デスクトップ版のみで利用可能です。
その際、デバイス選択画面はアプリが提供する必要があります。また、再起動するとシステムデフォルトに戻るため、前回の選択を保管しておく仕組みの実装が必要になる場合もあるでしょう。
もう一つの新機能は、複数の GPU を搭載するシステムで、使用したい GPU を指定する機能です。<gpuPreference> 要素を、アプリケーション記述子に追加することで指定できます。これもデスクトップ版 AIR だけの機能です。
<application> <gpuPreference>(discrete|integrated)</gpuPreference> </application>
discrete はパフォーマンス重視 、integrated はバッテリー重視の選択という位置づけです。
AIR 28 から、アプリに必要な許可を求める際に、ローカライズされた文章を使えます。 ローカライズした文は、決められたフォーマットで XML ファイルに記述する必要があります。AIR SDK にサンプルファイル SDK/samples/purposeStrings-sample.xml が提供されています。
アプリケーションからファイルを参照できるよう、パッケージする際、以下のようにコマンドラインに XML ファイル名を記述します。
adt -package -target <target> -provisioning-profile <provisioning profile> -storetype pkcs12 -keystore <certificate> -storepass <password> <ipa> <application.xml> <swf> purposeStrings.xml
AIR 28 からは iOS/tvOS 向けに、Swift ベースの ANE が利用できます。ダイナミックフレームワークも利用できます。フレームワークへの署名はアプリのパッケージングのタイミングで行われます。
Swift ANE を利用する手順は以下の通りです。
1. platform.xml ファイルにダイナミックフレームワークの情報を記述
<?xml version="1.0" encoding="utf-8" ?>
<platform xmlns="http://ns.adobe.com/air/extension/28.0">
<linkerOptions>
<option>-rpath @executable_path/Frameworks</option>
</linkerOptions>
<packagedDependencies>
<packagedDependency>
<dynamic_swift_framework_path>
</packagedDependency>
</packagedDependencies>
</platform>
2. ANE ファイルをパッケージ
下の例の iPhone-ARM フォルダと appleTV-ARM フォルダは、それぞれの platform_xml ファイルに記述された、ダイナミックフレームワーク等の環境に依存するライブラリを含む場所です。
adt -package -target ane <ane_file> <extesionxml_file> -swc <swc_file> -platform iPhone-ARM -platformoptions <platformxml_file> -C iPhone-ARM/ . -platform appleTV-ARM -platformoptions <tvOS_platformxml_file> -C appleTV-ARM/ .
3. IPA ファイルをパッケージ
adt -package -target <target> -provisioning-profile <path-to-profile> -storetype pkcs12 -keystore <certificate> -storepass <password> <ipa_file> <appxml> <swf> Frameworks -extdir extension
Swift ダイナミックフレームワークのファイルは Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos for iOS に含まれています。以下が必要なファイルのリストです。
Xcode 9 および Swift 4 には以下のファイルも必要です。
MinimumOSVersion のデフォルトは、iOS が 8.0、tvOS が 9.0 です。
ADT でビットコード埋め込みができるようになりました。パッケージの際、embedBitcode の値に yes を指定するとこの機能が有効になります。 AppStore 用のアプリ (ipa-app-store をターゲットにする場合) は、この指定が必須になります。
下の例のように、署名関連のオプションの前に -embedBitcode yes を指定します。
adt -package -target <target type> <other options> -embedBitcode yes -provisioning-profile <SampleProvisioning.mobileprovision> -storetype pkcs12 -keystore <SampleCertificate.p12> -storepass <password> Example.ipa Example-app.xml Example.swf
このオプションを利用する場合、使用する ANE も全てビットコードに対応していることが必要です。対応していない ANE が使われるとパッケージエラーが発生します。
]]>
新しい SWF のバージョンは 38 です。
バージョン 27 の新機能は、ベータ版の時点の記事で紹介したとおりです。
macOS 10.11 から導入された ATS (App Transport Security) により、アプリがサイトを参照する際に使えるプロトコルが HTTPS のみに制限されました。影響が大きな変更であるため、現在は NSAllowsArbitraryLoads の値を設定することによる HTTP 接続が許可されています。
AIR SDK 27 は、このキーの値を true とするため HTTP 接続が可能ですが、将来ポリシーが変更される、あるいはキーの使用が無効になる可能性があるため、早めに HTTPS のみを使用するようにアプリを修正することが推奨されています。
]]>
今回の主な追加機能および変更点は以下の通りです。
AIR 27 では、デスクトップ環境の AIR アプリで非同期のテクスチャアップロードがサポートされたことで、描画処理中に他のテクスチャをアップロードすることができるようになりました。
DirectX 11 サポートは、Windows 8 以降の環境で有効になります。SWF バージョン 38 以降のアプリが対象です。Windows 7 以前の環境では、引き続き DirectX 9 が使用されます。
]]> AudioDeviceManager クラスFlash Player 27 から新しく AudioDeviceManager クラスが追加されました。これを使うと、オーディオの出力先をスクリプトから指定できるようです。主要な属性は以下の2つです。
AudioDeviceManager.deviceNames AudioDeviceManager.selectedDeviceIndex
deviceNames 属性からは、利用可能なデバイスのリストが取得できます。型は Array です。現在選択されているデバイスは、以下のように selectedDeviceIndex を使って取得できます。
var adm:AudioDeviceManager = AudioDeviceManager.audioDeviceManager;
var deviceArray:Array = adm.deviceNames; var selected:String = deviceArray[adm.selectedDeviceIndex];
プライバシーの観点から、フルスクリーン表示の切り替えなどの機能と同様、ユーザー操作以外によって AudioDeviceManager の API を呼び出すことはできません。そのため開発者が、ユーザーにデバイスを選択させるためのボタン等の UI を作成する必要があります。ユーザーの操作無しに呼び出されたときは、ランタイムエラーとなって動作しない仕様になっています。
それから、オーディオ出力デバイスの変更を通知するイベントが新しく追加されました。ユーザーが Flash Player の UI からデバイスを変更したり、スクリプトが selectedDeviceIndex の値を変更したり、システムにデバイスが追加/削除されると、AudioOutputChangeEvent.AUDIO_OUTPUT_CHANGE イベントが発行されます。
イベントの理由は、AudioOutputChangeEvent.reason の値から知ることができます。以下の 2 つのコードが存在します。
function aocHandler(evt:AudioOutputChangeEvent):void { if (evt.reason == AudioOutputChangeReason.USER_SELECTION) { // ユーザーが異なるデバイスを選択 } else if (evt.reason == AudioOutputChangeReason.DEVICE_CHANGE) { // デバイスに変更があった } }
]]>
新しい SWF のバージョンは 37 です。
バージョン 26 の新機能は、ベータ版の時点の記事で紹介した時点から、もうひとつ追加になりました。
従来、Windows 8.1 以上の環境において ActiveX の Flash Player は、ベクターの印刷には GDI、ビットマップの印刷には Direct2D が使われていました。Flash Player 26 からは、Microsoft Edge と Windows 8.1 上の IE からのベクター印刷のときも Direct2D が使用されます。これにより、印刷速度の高速化と、必要なリソースの削減が実現されているとのことです。
]]>
今回の主な追加機能および変更点は以下の通りです。モバイル AIR アプリに関連する機能ばかりです。
バージョン 26 からは、Android向けのアプリが、ランタイムを埋め込むキャプティブ (apk-captive-runtime) だけになります。モバイル用のアプリでは、共有ランタイムを選択するケースが殆ど無いため、開発の集中を図るための選択とのことです。
また、iOS 向けには StageWebView の描画エンジンが WKWebView に変更されました。これにより、Safari の Web インスペクタを使った StageWebView コンテンツのデバッグも可能になっています。
Stage3D の Enhanced プロファイルは AGAL 4 の新しいオプコードとレジスタをサポートする新しく追加されたプロファイルです。最新の AGAL ユーティリティは GitHub の adobe-flash/graphicscorelib から入手できます。
]]> モバイル環境の DeviceRotation イベントAIR 26 では、デバイスが回転した時、3 軸それぞれに対する変化量をイベント経由で取得できます。例えば、360° ビデオをデバイスの回転に応じて再生するアプリなどに役立ちそうです。
サポートされる環境は、iOS 4.0 以降、または Android 4.3 以降で、加速度計と角速度計が付いているデバイスです。スクリプトからは、DeviceRotation.isSupported() メソッドで確認できます。戻り値が true なら利用可能です。
回転量を取得するには、DeviceRotation オブジェクトを作成し DeviceRotationEvent.UPDATE イベントハンドラを設定します。イベントハンドラに渡される DeviceRotationEvent イベントオブジェクトは、以下の属性値を持っています。
timestamp:Number - アプリ起動からの時間、単位はミリ秒 pitch:Number - X軸回りの回転の度数 roll:Number - Y軸回りの回転の度数 yaw:Number - Z軸回りの回転の度数 quaternion:Array - 四元数の配列として値を取得 [w, x, y, z]
イベントが発行されるタイミングは、以下の 3 つの場合のどれかです。
DeviceRotationEvent イベントの間隔は、DeviceRotation オブジェクトに setRequestedUpdateInterval () メソッドを使用して指定できます。ただし、デバイスがサポートする最短時間より短い間隔は指定できません。最短の間隔を指定したい場合は、引数に 0 を渡せば良いようです。
]]>
新しい SWF のバージョンは 36 です。
バージョン 25 の新機能は、ベータ版の時点の記事で紹介した通りです。引き続き、Apple TV や Android TV のサポートは開発中で、Adobe Labs から提供されるベータ版では試すことができます。
Apple TV サポートに関しては、詳しい資料が PDF(英語) として提供されています。
]]>
今回の主な追加機能および変更点は以下の通りです。
最後の HTTP と HTTPS 個別のアクセス許可設定の機能自体はバージョン 24 から追加されたものですが、バージョン 25 では、グローバル設定に加えて、ローカルのコントロールパネルからも設定できるようになっています。
]]> また、AIR 20 からモバイル環境では利用できた、Stage3D でインスタンス化させたオブジェクトを描画する機能が、デスクトップ環境でも利用できるようになりました。Standard Extended プロファイルをサポートする全ての環境の AIR アプリで createVertexBufferForIntance() と drawTriangleInstanced() が利用できることになります。そして、Android 向けの AIR アプリケーションで、MultiDex が利用できるようになりました。AIR 25 からは、64K を超えてメソッドを参照するアプリのパッケージが可能になります。ANE を使用している場合、含まれているライブラリが MultiDex に対応していないと、パッケージ時にエラーになることがあるため要注意とのことです。
NativeApplication クラスに新しいメソッド isCompiledAOT() が追加されました。以下の AOT をターゲットとしてコンパイルされたときのみ値が true になります。
上記以外をターゲットにする iOS 向け AIR アプリ、およびその他のプラットフォーム向けの AIR アプリでは false が返されます。
AIR 25 からは、Android 環境で StageWebView 内に表示された HTML 文書からのローカルストレージ利用が可能になりました。HTML 文書内に以下の様なスクリプトを記述できます。
<html> <!-- 以下の様なスクリプトを記述できる function sampleStore(){ localStorage.setItem("set", "ローカルストレージに保存"); } --> <body> ... </body> </html>
ビデオ処理を旧来の処理パイプラインにフォールバックするオプションが提供されました。これは、AIR 22 で刷新された Android 環境での新しいビデオ処理パイプラインが原因で問題が起きている場合に対応するためです。新しく追加された <disableMediaCodec> タグの値を true にすることで、AIR 21 以前と同様に OpenMax AL によるビデオのデコードが行われます。下はそのサンプルです。
<android> <manifestAdditions><![CDATA[ ... ]]></manifestAdditions> <disableMediaCodec>true</disableMediaCodec> </android>
バックバッファのデータを描画するメソッド drawToBitmapData() の引数にオフセットを指定できるようになりました。従来はバッファの内容全てを書き出す動作のみでしたが、引数にオフセットを指定することで、一部の矩形のみを切り取ってビットマップ上の任意の位置に出力できます。
オフセットを指定するために 2 つの引数が追加されています。最初の引数は従来通りで、データのコピー先となる BitmapData オブジェクトを指定します。
drawToBitmapData(destination:BitmapData, srcRect:Rectangle = null, destPoint:Point = null)
2 つめの引数には、バッファから切り取る領域を Rectangle オブジェクトで指定します。矩形で指定された領域がバッファからはみ出ている場合、バッファ外の領域を切り取った状態の矩形が返されます。
3 つ目の引数には、切り取った矩形を配置するビットマップ上の座標を指定します。矩形がビットマップからはみ出た場合、ビットマップ外の領域は無視されます。
指定されたオフセットでコピーできる領域が存在しない場合はエラーが返されます。2 番目と 3 番目の引数に null を指定した (もしくは両方とも未指定の) 場合は、従来通りの動作になります。
]]>
新しい SWF のバージョンは 35 です。
バージョン 24 の新機能は、ほぼベータ版の時点での記事のとおりで盛り沢山ですが、Apple TV のサポートは見送りになったようです。
一方、Android の App Links サポートが追加されました。ユーザがリンクをクリックした時に、それが開発者が管理するドメインへのリクエストであれば、要求を処理する標準アプリとして自作の (AIR) アプリを指定できる機能です。
]]> <manifestAdditions> <![CDATA[ <manifest android:installLocation="auto"> ... <application android:enabled="true"> <activity android:excludeFromRecents="false"> ... <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" android:host="www.example.in" /> <data android:scheme="https" android:host="www.example.in" /> </intent-filter> </activity> </application> </manifest> ]]> </manifestAdditions>
Web サイト側には、同様の記述を含む assetlinks.json ファイルを配置します。手順の詳細は、Request App Links Verification に説明があります。
デバッグ用の情報は NativeApplication からの InvokeEvent を経由して取得できます。
]]>