2010年6月アーカイブ

今年も Adobe AIR Contest が行われます。

優秀作品には、Adobe MAX 2010 (2010 年 10 月/米国ロサンゼルス)へのご招待や Adobe Creative Suite 製品の贈呈などあるそうです。審査対象は、2009 年 9 月 1 日 ~ 2010 年 8 月 31 日までに Adobe AIR Gallery に登録された AIR アプリケーションです。あと 2 ヶ月ほどありますので、まだの方は奮って応募してください。AIR Gallery への登録申し込みフォームはこちらです。

審査には AIR Gallery の人気度や閲覧数などのユーザ評価 (閲覧数は掲載期間を考慮) も加味されるそうです。 ユーザ評価は2010年9月5日までですので、どんなアプリがあるのか興味のある方は AIR Gallery を覗いてみて下さい。

参考までに、最近正式に公開された AIR 2 の新機能はこちらです。(Adobe AIRの機能

flash.sensors は Flash Player 10.1 から追加された新しいパッケージです。

このパッケージには、デバイスのセンサーから情報を取得するためのクラスが定義されています。今のところ以下の 2 つがあります。

Creative Suite 5 から Web Premiuim と Master Collection に Flash Builder が含まれるようになりました。これらのスイートに含まれる Flash Builder はスタンダード版のため、中にはプレミアム版が使いたいんだけど、という方もいるかと思います。

その際、最初にスイート製品がインストールされていると、後から Flash Builder のプレミアム版をインストールしたのに、スタンダード版として認識されてしまう、ということがあります。これは、Flash Builder が 2 重にライセンス認証されている、という状況が起きるのが原因です。(他のケースもあるかもしれません)

本来はわざわざ Flash Builder を別途インストールする必要は無く (むしろ想定されていない?)、後述の手順でライセンス認証だけやり直すのが正しい手順のようです。

とはいえ、このような状況が起きてしまった場合には、まず Flash Builder だけがライセンス認証されている状態にしてから、スイート製品のライセンス認証を行うと良いようです。

具体的には、

  1. Flash Builder がプレミアム版のシリアル番号のみでライセンス認証されている状態にする
  • [ヘルプ] メニューから [ライセンス認証の解除] を選ぶとスイートのライセンスで認証されていた場合
    1. "ライセンス認証を完全に解除する" を選ぶ
    2. Flash Builder を再起動し、[ライセンス認証の解除] から Flash Builder 4 として認証されていることを確認する
  • [ヘルプ] メニューから [ライセンス認証の解除] を選ぶと Flash Builder のライセンスで認証されていた場合
    1. "ライセンス認証を完全に解除する" を選ぶ
    2. Flash Builder を再起動し、[ライセンス認証の解除] から再び "ライセンス認証を完全に解除する" を選ぶ (スイートのライセンス認証を解除)
    3. Flash Builder を再起動し、プレミアム版のシリアル番号を使ってライセンス認証を行う
  1. スイート製品がライセンス認証されている状態にする
    1. Flash Builder 以外のスイート内のツールを起動し、スイートのシリアル番号でライセンス認証を行う

という手順になります。

今週の Android 2.2 のオープンソース公開に合わせ、Andoroid 用の Flash Player 10.1 が正式に公開されました。これにより、いよいよスマートフォンのブラウザ内でも、デスクトップと同様の Web 体験が実現されるようになります。

Flash Player 10.1 では、デバイスをターゲットにしたパフォーマンスの最適化や、ジェスチャーによる入力、加速度計や GPS のサポートなど、Flash Player 10 からたくさんの変更が行われました。その他にも、バッテリーの消費を少なくするための機能やメモリ管理機能の改善なども行われています。

Android 2.2 の搭載されたデバイスをお持ちの方は Android Market から入手可能です。http://www.adobe.com/go/getflash_jp/ にアクセスしてみてください。

Android アプリを開発したい人には、Android 用の AIR が控えています。こちらはまだ一般公開されていませんが、プレリリースプログラムに参加すると、プログラム内での情報共有やベータ版を使ったテストができます。英語サポートのみで構わなければ、プレリリースプログラムには誰でも参加できます。サインアップはこちらから。

 

AIR 2 のランタイムに続き、AIR 2 の SDK が公開されました。Adobe のサイトからダウンロード可能です。(Adobe AIR SDKのダウンロード

AIR 2 SDK を使用するには、既存の SDK を置き換える必要があります。Flash Builder および Flash Professional CS4, CS5 の設定方法については、Adobe AIR 開発者向けリリースノートに記述されて います。(Flash Builder および Flash Professional での AIR SDK の使用

現在、Flash Professional や Flash Builder のコンパイラは、AIR API のバージョンチェック機能を持ちません。そのため、最新の開発環境である Flash Professional CS5 や Flash Builder 4 では、AIR 1.5 など古いバージョンの AIR アプリケーションを開発する場合でも AIR 2 の新しい API の参照やコンパイルができてしまいます。ですが、そのような AIR 1.5 アプリケーション (AIR 2 から追加された API を使った) の動作は、当然保障されません。

という理由から、Flash Professional CS5 や Flash Builder 4 をお使いの方には、最新の AIR SDK への更新が推奨されています。

Flash Professional CS4 で AIR 2 アプリを開発する場合は、アプリケーション記述ファイル内の名前空間を "http://ns.adobe.com/air/application/2.0" に手動で書き換える必要があります。Flash Professional CS4 の機能は今までどおりなので、その点だけご注意ください。もしかすると、Flash Professional CS4 は AIR 1.5 アプリのメンテ用に残しておくのが良いかもしれませんね。

その他詳細は、リリースノートをご覧ください。

 

残念ながら英語のみなのですが、Adobe Labs に製品へのアイデアや要望を受け付けるための新しい試みが始まっています。(Adobe Labs Ideas

アイデアを書き込める製品は、今のところ

  • Flash Professional
  • Flash Builder
  • Flash Catalyst
  • Flex SDK
  • AIR
  • LiveCycle ES
  • WorkflowLab

です。だんだんと増えてます。

「Photoshop と Flash のカーニングの標準化」 とか 「FDT のクイックフィックスが欲しい」 など、現在までに約 300 人から 80 余りのアイデアが書き込まれています。気に入ったアイデアには投票もできますのでのぞいてみるだけでも楽しいかもしれません。(「Steve Jobs の強欲を抑える機能」 なんてのも結構人気になってました...)

ここに書き込まれたアイデアやコメントは、それぞれの製品チームのプラン作りに使われるそうですので、何か良い考えが浮かんだら是非。

ちょっと時間たってますが、質問されたので念のため。

Flash Professional CS5 のアップデートが公開されています。このアップデートに含まれるのは、

  • AIR 2.0のサポート
  • フル解像度 iPad アプリケーション作成のサポート
  • Packager for iPhone のパフォーマンスの向上
  • サードパーティーコンポーネントのサポート
  • 不具合の修正

等です。

アップデート後は、iPhone 設定パネルを開くと、パネル内の [一般] タブに、新しく [デバイス] というドロップダウンが表示されるようになります。そこからパブリッシュする対象として iPad が選択できます。

アップデートを手動で行う場合は、メニューの [ヘルプ] - [アップデート] と選択して Adobe Application Manager を起動します。

アップデータは Flash のサポートページにも公開されています。(Flash CS5 Professional - ダウンロード

 

タッチシーケンスは、タッチデバイスに触れてから離れるまでのタッチポイントの一連の動きのことです。タッチシーケンスを把握すると、自前のジェスチャも実装できるようになります。

タッチシーケンスは 1 つの touchBegin イベントと、必要に応じて 1 つ以上の touchMove イベント、それから 1 つの touchEnd イベントからなります。

タッチシーケンス: touchBegin (1) → touchMove (0 以上) → touchEnd (1)

touchBegin から touchEnd までの一連のイベントを順番に並べることで、タッチポイントの軌跡が再現等ができるようになります。

タッチポイントの識別

ところで、マルチタッチをサポートするデバイスの場合は、複数のタッチシーケンスが並行して発生する可能性があります。例えば、タッチパネル上で親指と人差し指を同時に動かしている間は、両方の指から touchMove イベントが発生し続けます。

そのような場合には、それぞれのイベントがどちらのタッチポイントに属するものかを区別しないと、正しいシーケンスを把握することができません。そのため、TouchEvent を処理する際は、TouchEvent.touchPointID 属性を使って、イベントの元となったタッチポイントを判断するという処理が必要になってきます。

下のコードは、最初の touchBegin イベントで touchPointID を記録しておくことで、他の touchPointID を持つイベントは無視する、というイベントハンドラのサンプルです。オブジェクトを指でドラッグしたいときなどは、指 1 本だけでの操作なので、このようなアプローチが有効かもしれません。

Flash Player 10.1 から Sprite クラスに 2 つの新しいメソッドが追加されました。タッチ操作によるドラッグ機能を、Sprite (またはそのサブクラス) に提供するためのメソッドです。マウス操作に対する Sprite.startDrag() メソッドと Sprite.stopDrag() メソッドに相当します。

public function startTouchDrag(touchPointID:int, 
                               lockCenter:Boolean = false, 
                               bounds:Rectangle = null):void
public function stopTouchDrag(touchPointID:int):void
 

Sprite.startDrag() や stopDrag() との違いは、最初の引数に touchPointID を必要とすることです。この値は TouchEvent の touchPointID 属性から取得できます。stopTouchDrag() でドラッグを中止するには、startTouchDrag() で指定した touchPointID と同じ値を指定します。

startTouchDrag() の残り 2 つの引数は startDrag() の引数と同じで、

  • lockCenter: false の場合 Sprite 内の最初に触れた箇所が、true の場合 Sprite の基準点がドラッグする位置になる
  • bounds: Rectangle を使って親オブジェクトの座標でドラッグできる領域を指定する

です。

startTouchDrag() でドラッグできる Sprite は同時に 1 つだけです。stopTouchDrag() が明示的に呼ばれるか、他の Sprite がドラッグ可能な状態になると、ドラッグ中の Sprite はドラッグできなくなります。

Flash Player 10.1 と AIR 2 が正式に公開されました。

今回公開されたのは Flash Player, AIR どちらも Windows, Mac, Linux 版です。

Android 版については、Flash Player 10.1 は今月末を目処に公開が予定されているとのことです。AIR 2 はまだ具体的な情報が公開されていません。

Flash Player のデバッグプレーヤーとスタンドアローンプレーヤは US のサポートセンターからダウンロードできます。日本のサイトも直ぐに更新されると思いますがとりあえずはこちらをお使いください。(Adobe Flash Player Support Center Downloads

Flash Player 10.1 のベータ版をインストールしている環境では、一旦ベータ版の Flash Player をアンインストールしてからインストールする必要があるとのことです。アンインストール用のプログラムは、こちらもとりあえず US のサポートページからダウンロードできます。(How to uninstall the Adobe Flash Player plug-in and ActiveX control

それから、AIR 2 SDK は 6 月 15 日頃に公開予定とのことです。Flash Professional や Flash Builder など関連製品のアップデートも順次公開されることと思います。

新機能については、今までもお知らせしていたように、パフォーマンスや消費電力の改善、マルチタッチサポート、プライバシーモード追加、などなど盛りだくさんです。特に Mac の Flash Player は完全に Cocoa 対応になりました。Gala の機能はまだ含まれていません。

その他、詳しくはそれぞれの製品紹介ページをご覧ください。(まだ更新中みたいですが)

先日報告された脆弱性に対応した Flash Player と AIR に関する報告書が公開されました。(Security update available for Adobe Flash Player) 基本的には、本日公開された Flash Player 10.1 と AIR 2.0.2 にアップデートをするようにということです。

Solaris 版の Flash Player 10.1 はまだ公開されていませんが、Adobe Labs に公開されているプレリリース版を使用することが推奨されています。(Flash Player 10.1 for Solaris

また、Flash Player 10 のサポートしない環境のために Flash Player 9.0.277.0 も公開されました。(Flash Player 9 for Older Operating Systems

Flash Professional や Flex などの開発環境でも、Flash Player の更新が推奨されています。デバッグプレーヤーはサポートセンターからダウンロードできます。(Adobe Flash Player Support Center Downloads

TouchEvent の属性は MouseEvent と良く似ていて、殆どの属性は MouseEvent と共通です。大きく 3 つに分けて、押されているキー、操作の行われた座標、タッチイベント固有の情報、のカテゴリーで捉えることができます。

まずは、押されているキー関連の TouchEvent の属性のリストです。

  • altKey : Boolean (Windows, Linux のみ)
    Alt キーが押されているかを示す
  • commandKey : Boolean (Mac のみ)
    Control キー か Command キー が押されているかを示す
  • controlKey : Boolean
    Ctrl キー (Windows, Linux) もしくは Control キー (Mac) が押されているかを示す
  • ctrlKey : Boolean
    Ctrl キー (Windows, Linux) もしくは Control キー か Command キーのいずれか (Mac) が押されているかを示す
  • shiftKey : Boolean
    Shift キーが押されているかを示す

MouseEvent との違いは、commandKey が Flash Player からも使えるようになっている点です。ただ、現時点ではまだ Mac で TouchEvent 自体がサポートされていないので、この件については動作確認ができるようになってから信用するのがよいかもしれません。

次に操作の行われた座標関連は、

Flash Player の脆弱性関する件についての情報が更新されました。(Security Advisory for Flash Player, Adobe Reader and Acrobat

新しい情報としては、

  • Adobe Labs に公開中の Flash Player 10.1 RC7 には、問題の脆弱性が存在しないことが確認された
  • Windows, Macintosh, Linux 向けの Flash Player 10 の更新版が 6 月 10 日に公開予定 (日本時間では 11 日になるかもしれません)
  • Solaris 向け Flash Player 10 の更新はまだ公開未定

となっています。

Flash Player 10.1 から新しく TouchEvent が追加されました。これにより、指やスタイラスによるたタッチパネル操作をイベントとして扱えるようになっています。TouchEvent は MouseEvent と違い、複数の指 (タッチポイント) による操作を同時に追いかけることができます (マルチタッチのサポート)。前回まで説明した SWIPE、ZOOM 等のジェスチャーイベントは、複数の TouchEvent を 1 つにまとめて作られたものです。

TouchEvent を使うときは、Multitouch.inputmode に TOUCH_POINT を設定します。

Multitouch.inputMode=MultitouchInputMode.TOUCH_POINT;
 
var mySprite:Sprite = new Sprite();
mySprite.graphics.beginFill(0xFF6600);
mySprite.graphics.drawRect(0, 0, 80, 80);
addChild(mySprite);
 
mySprite.addEventListener(TouchEvent.TOUCH_TAP, taphandler);
 
function taphandler(e:TouchEvent): void {
  trace("touchTap");
}
 

残念ながら、TouchEvent は今のところ Mac 上ではサポートされません。

Adobe のセキュリティー広報から、Flash Player, Adobe Reader, Acrobat に関する脆弱性についての情報が公開されました。(Security Advisory for Flash Player, Adobe Reader and Acrobat

この脆弱性により、クラッシュや攻撃者がシステムのコントロールをできる可能性もあるとのことで、既に攻撃例も見つかっています。

Flash Player に関しては、影響を受けるのは Flash Player 10.0.45.2, 9.0.262 を含め 10.0.x と 9.0.x 全てのバージョンです。Windows 版、Macintosh 版、そして Linux と Solaris 版の全てが対象になります。

現在 Adobe Labs に公開中の Flash Player 10.1 RC7 では、この脆弱性は無い "らしい" ということです。

Adobe Reader と Acrobat については、バージョン 9 のみの問題で、バージョン 8 は大丈夫だそうです。

修正版の公開は決まり次第公開予定になっています。

GestureEvent に phase という属性があります。ここには、ジェスチャーのフェーズ (例えば、新しいジェスチャーが開始された、さっきのジェスチャーの続きである、等) の情報が設定されます。

設定可能な値は GesturePhase クラスに定義されていて、下の 4 つがあります。

  • ALL : String [static]
  • BEGIN : String [static]
  • UPDATE : String [static]
  • END : String [static]

一番上の ALL は、色々な段階を持たない単純なジェスチャーによるイベントに使われます。

具体的には、GESTURE_TWO_FINGER_TAP と GESTURE_SWIPE の 2 つのイベントが、phase 属性は常に ALL になります。どちらのジェスチャーも、タップする、素早く移動する、と 1 つの動作だけで終わるジェスチャーなので、細かいフェーズを管理する必要が無い、という理解でよいかと思います。

addEventListener(TransformGestureEvent.GESTURE_SWIPE, onSwipe);
 
function onSwipe(e:TransformGestureEvent):void {
  trace(e.phase); // ALL が出力される
}
 

その他の 4 つのジェスチャーについては、BEGIN、UPDATE、END が状況に応じて設定されます。

新しいジェスチャーの開始時には BEGIN、既に始まったジェスチャーの続きの場合は UPDATE、そしてジェスチャーが終了した際のイベントには END が設定されます。この情報を利用することより、オブジェクトを拡大後に回転させるといったより複雑な操作にも対応できるようになります。

下のサンプルは、phase 属性の値を使い、GESTURE_PAN が始まったら対象のオブジェクトを視覚的に変化させ、終了したら元に戻す、というものです。

GestureEvent の属性

GestureEvent クラスにはジェスチャーイベントの基本的な属性が定義されています。これらの属性はおおまかに、押されているキー、操作の行われた座標、ジェスチャー固有の情報、の 3 つのカテゴリーに分けられます。

  • altKey : Boolean (Windows, Linux のみ)
    Alt キーが押されているかを示す
  • commandKey : Boolean (Mac & AIR のみ)
    Control キー か Command キー が押されているかを示す
  • controlKey : Boolean
    Ctrl キー (Windows, Linux) もしくは Control キー (Mac) が押されているかを示す
  • ctrlKey : Boolean
    Ctrl キー (Windows, Linux) もしくは Control キー か Command キーのいずれか (Mac) が押されているかを示す
  • shiftKey : Boolean
    Shift キーが押されているかを示す
  • localX : Number
    イベントの発生したオブジェクトを基準としたイベント発生位置の x 座標
  • localY : Number
    イベントの発生したオブジェクトを基準としたイベント発生位置の y 座標
  • stageX : Number [read-only]
    グローバルなステージの座標を基準としたイベント発生位置の x 座標
  • stageY : Number [read-only]
    グローバルなステージの座標を基準としたイベント発生位置の y 座標
  • phase : String
    ジェスチャーの進行状況を示す値

最後の phase 属性以外は MouseEvent にあるものと基本的に同様に考えてよさそうです。その他の主な MouseEvent との違いは buttonDown 属性が無いこと (当たり前ですが) や、controlKey 属性が Flash Player からも利用可能になっていること (MouseEvent では AIR からのみ) あたりです。

今回は、Flash Player 10.1 のサポートするジェスチャーの種類と使い方について、簡単に説明してみます。

ジェスチャーイベントの種類

Flash Player 10.1 が提供するジェスチャーイベントクラスは 3 種類存在します。基本になるのは GestureEvent クラスです。MouseEvent クラスとは近からず遠からずという感じのクラスです。

GestureEvent クラスのサブクラスとして、更に PressAndTapGestureEvent と TransformGestureEvent の 2 つのクラスがあります。

flash.events.GestureEvent
flash.events.PressAndTapGestureEvent
flash.events.TransformGestureEvent
 

これらのうち TransformGestureEvent だけは 4 種類のイベントがあるため (他は 1 つだけ)、利用できるジェスチャーイベントは全部で 6 種類になります。ただし、OS によって利用できるイベントが異なります (6 種類全てが利用できる OS は今のところ無い)。

以下は各イベントの簡単な説明です。

  1. GestureEvent.GESTURE_TWO_FINGER_TAP: (Windows7 のみ)
    操作: 2つの指を同時にタップ
    用途例: ダブルクリックの代わり
  2. PressAndTapGestureEvent.GESTURE_PRESS_AND_TAP: (Windows7 のみ)
    操作: 1つ目の指が触れた状態で2つめの指をタップ
    用途例: メニューを開いてからアイテムを選択
  3. TransformGestureEvent.GESTURE_SWIPE:(Mac OS X, iPhone OS のみ)
    操作: 複数の指が触れた状態で全ての指を平行に動かす
    注: Mac OS X では 4 本指のスワイプが利用できるが、Flash ランタイムは 3 本指まで
    用途例: アイテムの削除、画面の切り替え
  4. TransformGestureEvent.GESTURE_PAN:
    操作: 指を触れたまま移動させる(例えば左から右)
    用途例: スクロール、ドラッグ
  5. TransformGestureEvent.GESTURE_ROTATE:
    操作: オブジェクト上で2つの指を円を書くように動かす
    用途例: オブジェクトを回転
  6. TransformGestureEvent.GESTURE_ZOOM:
    操作: 2つの指が触れた状態で指をそれぞれ遠ざかる (または近づく) 方向に移動
    用途例: 表示を拡大 (縮小)

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