(名古屋1人反省会)ただいま

名古屋の勉強会に行ってきました。そしてただいま。

名古屋って近いと思ってたけど、近鉄特急で2時間以上かかるとは。。。
次からは泊まりで行くべきだな。うん。

勉強会のちゃんとした報告は、WCANのサイトを見て頂くことにして、
個人的な復習と宿題をいくつかやっておきますね。

(名古屋1人反省会)mxmlでUIComponentを継承しないクラスの使用

mxmlでTextFieldなどのUIComponentを継承しないクラスをどうやって使うのか?
という質問がありましたので調べてみました。

とりあえず、

<mx:Application ・・・ xmlns:txt="flash.text.*" ・・・>
<txt:TextField id="hoge" text="あああ" />
・・・

では何も表示されません。

で、今のところよくわからんので、調べたら、ここにそれっぽい事が書かれてました。

フォーラム - Flex User Group

UIComponentにたくさんのSpriteを追加する実験 - chisa-to あれこれ

なるほど。
UIComponentベースのコンポーネントクラスを作って、その中で使用するのが正しい作法のようです。

(名古屋1人反省会)スキンを変える&CSSでどの程度まで出来るのか?

Flex2のデフォルトのスキンでは満足しない」という声は、第二回寺子屋(仮)でも挙ってましたが、
今回もでましたので少し調べました。

まず、Flexのデフォルトのスキンについて、
Adobe上条さんという方が詳しく書かれてましたので、それを読みます。

http://weblogs.macromedia.com/akamijo/archives/2007/01/halo_aeon.cfm

次にSaqooshaに個人的に教えてもらった、スキンを変える方法について書かれたサイトを読みます。

On Reflexion

上記サイトのサンプル
http://www.thebetterside.com/scrawl/ScrawlExample1.html
http://www.thebetterside.com/scrawl/ScrawlExample2.html
http://www.thebetterside.com/scrawl/ScrawlExample3.html
http://www.thebetterside.com/scrawl/ScrawlExample4.html

ちょっと読んでみたので、簡単に内容を紹介します。

Flexアプリケーションのスキンをイジる方法を実験したらしく、3ステージに分けて説明しています。

最初のステージでは、アプリケーションにCSS stylesとgraphicalスキンを追加する方法。
次のステージでは、プログラマティックな方法。
3つ目のステージでは、FlexFramework classesのサブクラスとして作成する方法。
を紹介しています。全てソース付きサンプルが用意されています。

ソースを読む

ScrawlExample1.mxmlは、無加工の素のmxml

ScrawlExample2.mxmlは、
Firstステージで説明されてる方法。
のみが追加されている。
scrawl2.cssでは、フォントや色の指定がCSSで記述されている。画像はEmbedで指定されている。

ScrawlExample3.mxmlは、
次のステージのプログラマティックな方法。
mxml上ではのみが追加されている。
scrawl3.cssでは、
ClassReference("hoge");が記述されている。"hoge"の部分にはパッケージ付きクラス名が指定されている。
そのクラスを見てみる。
全てのクラスが、mx.skins.Borderなど、mx.skins系のクラスをextendsしている。
overrideして、再定義している模様。

ScrawlExample4.mxmlは、
最後のステージの、コンポーネントを継承する方法。
mxml上では、
Applicationタグ内のxmlnsに作成したコンポーネントのパッケージを指定している事と
タグが自作コンポーネントに変わっている。
前のステージのClassReference()も使用しているが、ComboBoxやList,DataGridを継承したクラスを実装している。

・・・とこんな感じです。

スキンについてlivedocsでも見つけました

http://livedocs.adobe.com/flex/201_jp/html/wwhelp/wwhimpl/js/html/wwhelp.htm?href=Part3_CreateComps_135_1.html

パッと見のイメージが大きく変わっていますが、
よく見ると、ComboboxもDataGridも外枠やスクロールバーは標準と同じ形をしています。
mxmlベースでの限界はこのあたりなのかも。。

(名古屋1人反省会)Flash8でAMFPHPをやる方法

私がお話しさせて頂いた中で、
Flex2において、AMFPHP+S2Flex2-componentsでAMFする方法をご紹介したのですが、
Flash8ではどうやるんだ?という質問を頂いたので、私が参考にしたサイトを紹介します。

http://www.loveloveheart.com/flash/flashremoting/amfphp.php

Flash側にFlash Remotingコンポーネントを入れる必要があります。

http://www.adobe.com/jp/products/flashremoting/downloads/components/

AS2は残念ながら私の守備範囲を超えますので深くは調べませんが、
この辺の情報が良いのではないでしょうか

http://www.transcw.com/blog/archives/000245.html

AMFPHP側(サーバー側)は、クライアントがAS2であってもAS3であっても同じなので、
AMFPHPについての記事は別途書きますんで、少しお待ち下さい。

ちなみにうちの会社でもFlash8+AMFPHPをガンガン使っていますので、業務でも十分使えると思います。

(名古屋1人反省会)mxmlで作るか、as3で作るか

livedocsに記事がありました。

MXML または ActionScript のどちらでコンポーネントを作成するかの決定
http://livedocs.adobe.com/flex/201_jp/html/wwhelp/wwhimpl/js/html/wwhelp.htm?href=Part5_ProgAS_155_1.html

以下引用。参考になるとおもいます。

* MXML コンポーネントActionScript コンポーネントはどちらも新しい ActionScript クラスを定義します。
* カスタム ActionScript コンポーネント内で実行できるほとんどのことは、カスタム MXML コンポーネント内でも実行できます。ただし、既存のコンポーネントのビヘイビアを変更したり、基本機能を既存のコンポーネントに追加したりする単純なコンポーネントの場合は、MXML 内で作成した方が早くて簡単です。
* 新しいコンポーネントが他のコンポーネントを含む複合コンポーネントで、Flex レイアウトコンテナのいずれかを使用して他のコンポーネントの位置とサイズを表現できる場合は、MXML を使用してコンポーネントを定義します。
* コンテナが子をレイアウトする方法など、コンポーネントのビヘイビアを変更する場合は、ActionScript を使用します。
* UIComponent のサブクラスを作成して、ビジュアルコンポーネントを作成する場合は、ActionScript を使用します。
* フォーマッタ、バリデータ、エフェクトなどの非ビジュアルコンポーネントを作成する場合は、ActionScript を使用します。
* コントロールにログのサポートを追加する場合は、ActionScript を使用します。詳細については、『Flex 2 アプリケーションの構築とデプロイ』のログ機能を参照してください。

ちなみに、
「ビヘイビア」は、トリガにエフェクトを組み合わせたものです。
トリガ:マウスクリック,フォーカスの移動,不可視状態から可視状態への変更などのコンポーネントに対して行われる操作を特に指す。
エフェクト:ターゲットコンポーネント上で一定時間 (ミリ秒単位) に発生する視覚的または聴覚的変化のこと。
エフェクトには、コンポーネントのフェード、サイズ変更、移動などがあります。

(名古屋1人反省会)プレゼン

これが一番勉強になりました。
みなさんパワポ(やと思う)で資料作って、デモ&パワポできっちり進めておられました。(当たり前か)

勉強会なので
私としては、

「あまり一方的に喋らず、ディスカッションのきっかけを作るような喋りをする。」

という事をやりたかったのですが、なかなか難しいですね。。。

他のプレゼンターさんのプレゼンを見てすんごく勉強になりました。


最後になりましたが
運営者/参加者 名古屋でお会いできた皆様。どうもありがとうございました!