カテゴリー別アーカイブ: Flex 3

Adobe MAX 2010 RETWEET 発表資料

参加された皆様、お疲れさまでした。
私が担当したセッションの発表資料とサンプルをアップしましたので、下記 URL よりご覧下さい。

FxUG 全国ツアー 2010 発表資料

FxUG 全国ツアー 2010 で発表した資料をアップしました。

熊本、沖縄 ( スライドとデモ )
http://labs.taiga.jp/presentationMaterial/FxUG/FxUG11520100703Slide.pdf
http://labs.taiga.jp/presentationMaterial/FxUG/FxUG11520100703Demo.zip

東京 ( スライド )
http://labs.taiga.jp/presentationMaterial/FxUG/FxUG11920100728Slide.pdf

フォントのライセンスや大人の事情により、公開しているデモは Ajax 版のソースのみです。ご了承ください。

@IT Flex 開発記事

@IT さんに寄稿した記事が本日公開されました。
http://www.atmarkit.co.jp/fwcr/rensai2/flex4_04/01.html

「 Flex アプリケーション開発で実際に使用されているライブラリを紹介してください」というお題をいただいて書いています。

自分の携わる仕事は、大抵自前で車輪づくりから始めたり、「非公式なライブラリの使用は禁止」などといった制約が設けられたりしている関係で、あまり人さまが公開しているライブラリを使うことがありません。

そんな中、実用的なものを選んだ結果が記事の内容…と解釈していただければと思います。

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

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

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

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

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 クラスを使用しています。

datavisualization.swc のソース

Flex SDK 3.3 がリリースされて、Flex Builder 3 Professional のライセンスを持っている人のみ使用できる datavisualization.swc も修正されました。ただし、修正内容を確認する場合、ソースコードは自力で解凍しなければなりません。

あと、私が Chart 系のコンポーネントをあまり使用していないので今まで気付けなかったのですが、Flex Builder 3 Plug-in をアンインストールして再インストールすると、ライセンス認証はパスされますが、”Flex Builder 3 Plug-in/sdks/3.x/fbpro” フォルダが消えてしまうようです。困りますね。そんな場合にも下記手順は必要です。

手順

  1. Flex 3 Data Visualization Components をダウンロード
    http://www.adobe.com/products/flex/flexdownloads/#flex_DataVisualization

  2. ダウンロードした ZIP を解凍

  3. SDK 3.3 フォルダに解凍したデータをコピー

  4. "{SDK 3.3 フォルダ}/lib" にコピーされた DMV-source.jar からソースを抽出

    ソースを抽出するとき、実際自分が実行したコード (Windows XP)

    C:\FlexSDKs\3.3.0\lib>java -jar DMV-source.jar "C:\Documents and Settings\All Users\Application Data\Adobe\Flex" "C:\FlexSDKs\3.3.0"

参考サイト

Adobe – Flex 3 SDK Release Notes
Using Datavisualization with the Flex SDK 3.3

Flex Doc Team
Extracting data visualization source code

Shigeru Nakagaki
Flex 3.1.0 : Chart や AdvancedDataGrid のソース

Constraints Layout

昨日の Flex 3 勉強会で、ライブコーディングするつもりが、ど忘れにより断念してしまった制約レイアウトのサンプルを作成しました。

ConstraintLayoutSample ( 画面とソース : Flex SDK 3.2 にてビルド )
http://labs.taiga.jp/flex3/ConstraintLayoutSample/
http://labs.taiga.jp/flex3/ConstraintLayoutSample/srcview/

constraintColumns, constraintRows プロパティは、IConstraintLayout インターフェースに基づいて Application, Panel, Canvas に実装されており、layout プロパティが absolute のときのみ使用できます。

テーブルレイアウトを組むとき、Grid, GridRow, GridItem を使用するとコンテナのネストが深くなりがちですが、これらを使用することにより余計なコンテナのネストが削減でき、アプリケーションのパフォーマンスを向上させることができます。

Flex 3 勉強会 第 64 回@東京 発表資料

参加された皆様、お疲れさまでした。
勉強会で使用した発表資料をアップしましたので、下記 URL よりご覧下さい。
http://labs.taiga.jp/presentationMaterial/FxUG/FxUG06420090219Slide.pdf
http://labs.taiga.jp/presentationMaterial/FxUG/FxUG06420090219Demo.zip

MAX で公開した資料はこちらからどうぞ。
http://blog.taiga.jp/archives/2009/02/02/081500/

おまけ
taiga & arkw 勉強会後の反省会@新宿の某寿司店
taiga & arkw 勉強会後の反省会@新宿の某寿司店

Adobe MAX Japan 2009 D-4 資料

参加されたみなさま、お疲れ様でした。
そして、D-4 セッションにお越しの方、ありがとうございました。

taiga & arkw 講演中
写真提供 : DNP ゆかりさん

当日使用したスライドとサンプルをアップしましたので、下記 URL よりお持ち帰りください。
http://labs.taiga.jp/presentationMaterial/FxUG/AdobeMAX2009JapanD4Slide.zip
http://labs.taiga.jp/presentationMaterial/FxUG/AdobeMAX2009JapanD4Demo.zip

ところで、セッションは 17:10-18:10 の 1 時間喋る予定でしたが、運営都合で講演中に時間を 10 分カットされるという事態に遭い、尻切れトンボで終わってしまいました。申し訳ありません。

なので、再来週… 2/19 ( 木 ) の FxUG 東京勉強会で補講する予定です。 興味のある方は参加していただけると幸いです。

< 追記 > 一緒に喋る予定だった杉浦さんですが、直前に L-2 セッションで話すことになり、欠員となりました。( 事後報告になってしまい申し訳ありません )