Adobe MAX 2009 LA

I’ll participate in the Adobe MAX 2009 LA next week.
Session scheduled to participate are as follows.

Monday, October 5, 2009

  • 09:30 – 11:00 General Session at Nokia Theatre L.A. LIVE
  • 11:30 – 12:30 Moving from Flex 3 to Flex 4
  • 14:00 – 15:00 Encoding Best Practices for H.264 Video Using Flash
  • 15:30 – 16:30 Effects in Flex 4
  • 17:00 – 18:00 Building Flex Collaboration Components
  • 20:00 – 21:00 Meet the Teams (Flex and Flash Builder)
  • 21:00 – 22:00 Meet the Teams (Flash Professional)

Tuesday, October 6, 2009

  • 09:00 – 10:00 Things Every Flash Developer Should Know
  • 10:30 – 12:00 General Session at Nokia Theatre L.A. LIVE
  • 13:30 – 14:30 Flash Player Internals
  • 15:00 – 16:00 XML based FLA: The New Flash File Format
  • 16:30 – 17:30 ELIPS 3.0: Mobile Flex Builder Toolkit
  • 17:30 – 19:00 Sneak Peeks and 2009 MAX Awards
  • 20:00 – 23:00 MAX Bash TBD

Wednesday, October 7, 2009

  • 09:30 – 10:30 Testing and Debugging with Flash Builder 4
  • 11:00 – 12:00 A Deep Dive into Ten Innovative Projects for Flash
  • 14:00 – 15:00 Killer Text in Flash with the Text Layout Framework (TLF)
  • 15:30 – 16:30 Social Media Experiences with Flash Media and RTMFP
  • 17:00 – 18:00 Tackling Memory and Performance in Flash, Flex, and Adobe AIR

This’s my first-ever visit to America.
So I’m really looking forward to it!

flash.accessibility パッケージの動作環境構築

Flash MX (Flash Player 6) から導入されているアクセシビリティ機能ですが、今までまともに試したことがなかったので試しました。今回試して分かったことは、Accessibility クラスと通信するスクリーンリーダーの用意が意外と手間だったということです。

たとえば、Camera クラスを使用するためには Web カメラが必要であるように、Accessibility クラスを使用するためにはスクリーンリーダーが必要で、スクリーンリーダーを動作させるためには、いくつかのラインタイムやアプリケーションをインストールをしなければなりません。

ひとまず Windows XP(32bit) かつフリーの環境で、スクリーンリーダーと flash.accessibility パッケージの動作確認をするために私が辿った手順を備忘録として残しておきます。決して下記手段を推奨しているわけではありませんので、ご注意ください。

labs.taiga.jp Index

今まで面倒くさがって放置していましたが、Flex のサンプルが増えてきたので、labs.taiga.jp のインデックスページを PHP で作りました。

http://labs.taiga.jp/

labs.taiga.jp 配下のディレクトリをほじくってリスト化しているので、今までに公開してきた画面とソースは一通り閲覧できますが、中にはベータバージョンや Nightly Build の SDK で書き出しているサンプルもありますので、参考にするときにはご注意ください。

今後、説明を端折って告知せずにサンプルを増やすこともあると思いますが、たまにこちらを覗いていただければと思います。

Flex 3.4 SDK の SystemManager バグ

Flex アプリケーションのプリローダーがローディングしているときにステージをクリックすると、SystemManager がランタイムエラーを発生する問題を発見しました。

この問題は、デフォルトのプリローダーを使用しても発生しますし、プリローダーのローディング時間が長ければ長いほど発生するリスクが増えます。

新規作成直後で最小状態の Flex アプリケーションでも、プリローダーが一瞬表示されるので、この隙にマウスを連打するなどしてステージをクリックすればアウトです。

原因は、SystemManager の 5649 行目です。

5646 : private function stageEventHandler(event:Event):void
5647 : {
5648 :     if (event.target is Stage)
5649 :         mouseCatcher.dispatchEvent(event);
5650 : }

mouseCatcher は、プリローダーのローディングが完了するまで NULL なのですが、stageEventHandler はプリローダー動作中も呼び出されます。つまり、mouseCatcher の NULL チェック漏れです。

この問題は Gumbo にもあったようで、Flex 4 では fix されています。
https://bugs.adobe.com/jira/browse/SDK-22682

当面の回避策
プリローダークラスを自作して、ステージの MouseEvent.MOUSE_DOWN イベントを SystemManager 内のリスナーより早く拾って、イベントの伝播を止める。

面倒だと感じる方は、以下のように DownloadProgressBar クラスを継承することをおすすめします。

package {
import flash.events.Event;
import flash.events.MouseEvent;
import mx.preloaders.DownloadProgressBar;
public class MyPreloader extends DownloadProgressBar {
    public function MyPreloader() {
        super();
        addEventListener(Event.COMPLETE, onCompleteHandler);
        addEventListener(Event.ADDED_TO_STAGE, addedToStateHandler, false, int.MAX_VALUE, true);
    }
    protected function addedToStateHandler(event:Event):void {
        stage.addEventListener(MouseEvent.MOUSE_DOWN, stageMouseDownHandler, false, int.MAX_VALUE, true);
        removeEventListener(event.type, arguments.callee);
    }
    protected function stageMouseDownHandler(event:MouseEvent):void {
        event.stopImmediatePropagation();
    }
    protected function onCompleteHandler(event:Event):void {
        stage.removeEventListener(MouseEvent.MOUSE_DOWN, stageMouseDownHandler, false);
        removeEventListener(event.type, arguments.callee);
    }
}
}

Label クラスの styleSheet プロパティ

今までアクセス制御の属性が mx_internal だった Label クラスの styleSheet プロパティが、Flex 3.4 から public に変更されました。

地味な変更ですが、地味に嬉しいことです。

早速サンプルを作りました。Label クラスのサブクラスである Text クラスを使用しています。

詳細!ActionScript 3.0 入門ノート [ 完全改訂版 ]

ありがたいことに、著者の大重さんから 『ブログの更新ちょっと止まってるみたいだし、Flex ユーザー向けに紹介しない?』 …と、今月発売されたばかりの著書を頂戴しました。

ブログの更新を滞らせて良かった♪…という冗談はさておき、真面目に紹介します。

2 冊の既刊 [*1] と大きく異なる点は、Flash Player 10 で使用できる型やクラスについて書かれている点です。現状… Flex 3 の場合、アプリケーションのターゲットプレイヤーのバージョンを意図的に 10 にしない限り、Flash Player 10 の機能は使えません。そのため Flash Player 10 の機能とは無縁…という開発者も多いと思います。

ですが、近い将来 Flex 3 から Flex 4 に開発の主流が移ったとき、Flex 4 アプリケーションは、Flash Player 10 以上のプレイヤーでないと動作しないため、Vector, Matrix3D, TextLine など、新しく用意されたクラスについての知識も必要になってきます。

これらの知識をゼロから学習するのに、この本は入門書として適切だと思います。

個人的には、「 Chapter06 Point クラスと Rectangle クラス」が一押しです。 Flex 開発者でも、少し変わったカスタムコンポーネントを作るときには、結局 UIComponent をベースにフルスクラッチしなければならないので、この手のネイティブな Flash のクラスの知識も必要になるんですよね。

興味のある方は是非。

*1 : 既刊

ちなみに、2 冊の既刊と新刊との比較について、カヤックさんが素敵にまとめています。
http://level0.kayac.com/2009/08/actionscript30.php

TLF (Text Layout Framework) と戯れる #08

Linked Containers サンプル

Linked Containers と呼ばれる機能のサンプルをアップしました。 TextFlow.flowComposer プロパティに、表示オブジェクト情報を持った複数の ContainerController インスタンスを登録することにより、柔軟なレイアウトを作ることができます。

これはなかなか面白いです。

[告知] Adobe AIR クックブックの監訳を担当しました

Adobe AIR クックブック
オライリー・ジャパン : Adobe AIR クックブック

オライリー・ジャパンから Adobe AIR の本が、2009 年 8 月 1 日 ( 土 ) に発売されます。
ヒム・カンパニーの永井勝則さんが邦訳されている書籍ですが、私も FxUG の一員として、監訳作業に携わらせていただきました。

AIR アプリケーション未経験者でも読みやすい内容になっていると思いますので、興味のある方は手に取っていただけると幸いです。

TLF (Text Layout Framework) と戯れる #07

オープンソースになった TLF ですが、FLash Builder 4 Beta 上で「定義へ移動」を実現させるためには、下記手順が必要です。

必要なもの

  1. Flash Builder 4 Beta
    ( Flex Builder 3 では動作しません。Flash Builder 4 Beta のシリアルは、Flex Builder 3 のライセンスを持っている方のみ、こちらから入手できます。 )

  2. Flex SDK
    ( 4.0.0.8702 以降のバージョン )

手順

  1. <Flash Builder 4 Beta のインストールフォルダ>sdks\4.0.0\frameworks\libs\netmon.swc を、<自分で用意した Flex SDK>\frameworks\libs にコピー

  2. 新規 Flex プロジェクトまたは、AcrionScript プロジェクトを作成

  3. 作成したプロジェクトのライブラリパスの設定で、textLayout.swc の参照を削除

  4. <自分で用意した Flex SDK>\frameworks\projects\textLayout 配下にある下記 4 つのフォルダをマージした flashx フォルダを新規に作成
    ( 下記プロジェクトをすべて結合したものが textLayout.swc として利用されています )

    • textLayout_conversion\src\flashx
    • textLayout_core\src\flashx
    • textLayout_edit\src\flashx
    • textLayout_textField\src\flashx
  5. 作成した flashx フォルダを、作成したプロジェクトのデフォルトパッケージにコピー

  6. 設定ファイル (flex-config.xml) を定義
    (TLF のソースに条件付きコンパイル用の定数が記述されているので、下記内容の設定ファイルを作成して、load-config オプションで指定します。個人的にはローカル設定ファイルをお薦めします。 )

    <flex-config>
        <compiler>
            <define>
                <name>CONFIG::debug</name>
                <value>false</value>
            </define>
            <define>
                <name>CONFIG::release</name>
                <value>true</value>
            </define>
        </compiler>
    </flex-config>

これで、TLF を使ったコンテンツを作ってデバッグするとき、内部の動作が確認できます。

Flash Builder Beta が修正されバージョンアップすれば、上記手順はすべて不要になると思うのですが、当面はこれでしのげれば…といったところでしょうか。

TLF (Text Layout Framework) と戯れる #06

TLF のオープンソース化が決定し、さっそく Flex SDK 4.0.0.8702 にソースが同梱されています。 バグに関しても、JIRA に投稿できるようです。

Text Layout Framework Team: The Text Layout Framework is now Open Source!
http://blogs.adobe.com/tlf/2009/07/the_text_layout_framework_is_n.html

面白くなってきましたね。