Home > Adobe Flex Archive

Adobe Flex Archive

FxUGのMax発表資料


arkwさんとTaigaさんのMAX発表資料が

Adobe MAX Japan 2009 D-4 資料



この間の東京勉強会の資料は、MAX発表の続編らしい。

Flexの基礎?
かなりよくまとまってていい資料だと思います。

すばらしい

Adobe Developer Box 開発日記(1)


Adobe Developer Connection に投稿しました。

adc_adb1.png

http://www.adobe.com/jp/devnet/air/articles/adb_howto_develop_ria.html
連載1) RIA開発どうやって進める?


「ADB」という現在開発中プロジェクトの進行について連載形式で書いています。
詳しくは直接記事を読んで下さい・・・


しかし、記事を書くってなかなか難しいですね。痛感しました。

URLエンコード


トップレベル関数 escape()
http://livedocs.adobe.com/flex/2_jp/langref/package.html#escape()
だとうまくいかない?

例えば




Wikipedia 「URLエンコード」によると、"ウィキペディア"という文字の UTF8でのURLエンコード結果は



// %E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2
が正解だと。

んじゃあ escape() の結果はなに??



という訳で、文字コード表(http://ash.jp/code/unitbl21.htm)によると、 "ウ" は、UTF8で "E382A6E3" だから、それに"%"をつけていくことで自作する。




できました。

工具の通販 MonotaRO

  • Posted by: hirossy
  • 2009年1月23日 00:27
  • Adobe Flex



monotaro.PNG

株式会社モノタロウ さん の ユーザマイページ Flex 化 のお手伝いをさせて頂きました。

http://www.monotaro.com/topic/boughtItem/

1月15日から会員向けに公開されています。


また、会員でなくても体験できるようにデモページを用意されています。(素晴らしい!)


デモページ


ぜひ一度体験してみて下さい。


Flash Player 9.0.16 のバグ


FP 9.0.16

このバージョンでFlashのサイトを閲覧すると、最初の Event.ADDED_TO_STAGE が無視されるそう。

なのでもし、ADDED_TO_STAGE をトリガーにして処理を書いているプログラムは、表示されません。



こわいね

GEMVC (Good Enough MVC)

  • Posted by: hirossy
  • 2008年12月10日 10:34
  • Adobe Flex

Googleアラートで拾いました

ActionScriptフレームワークのGEMVC、月着陸船アルタイル(Altair)に採用される


Flex用のフレームワーク


「宇宙開発で採用された」という響きがうらやましいね(笑



「ActionScriptフレームワーク」って書いてるけど、Flex用ですね。


docs に解説 pdf と実装の仕方 ppt がついてました。親切ですね。


クラス数も少なくて、すぐ使えそうですね。





やっとブログ再開でけたー

TextField の setTextFormat() と defaultTextFormat

  • Posted by: hirossy
  • 2008年9月27日 21:09
  • Adobe Flex

Flexの mx系 のクラスを使わない人には随分前から既知の話だとは思うけどぉ、
自分の発見を忘れないためにメモっとく。

setTextFormat()関数でTextFormatを設定した後にtextプロパティに文字列を設定する場合は、TextFormat のスタイルは適用されない。



で、textプロパティを変更する度に(つまり文字列を入れ替える度に)、setTextFormat()するのは大変なので
TextField の defaultTextFormat をあらかじめ設定しておくのがベター。

defaultTextFormat で設定した TextFormat が自動的に採用される。





でも、defaultTextFormat を設定する前に textプロパティに設定した文字列は、適用されない。。。





という訳で、結果として

defaultTextFormat で TextFormat を設定したら、
    それ以前に設定した文字列は適用されないが、それ以降はすべてに適用される。
   
setTextFormat() で  TextFormat を設定したら、
    それ以前に設定した文字列に対しては適用されるが、それ以降は適用されない。

となる。


最初にtextプロパティに文字列をセットするタイミングよりも前に defaultTextFormat を設定しておくのが最も楽ってこと。





mx系じゃない ActionScript はソースを追えないので現象を確認するしか手立てが無いのが厳しいところ・・・

borderStyleに対応したText, Label (3) Fleverlight勉強会


Fleverlight勉強会お疲れ様でした。

他のコミュニティさんとやるといろんな刺激があって楽しいですね。やっぱ。

ぼくの発表内容です。(Winだとフォント変わります。。)



ソースは右クリ。(Tweener使ったけど含んでない。ご自身でTweenerを足して動かしてくだされ)

以下発表内容

  • カスタムコンポーネントとSkin。
  • 1)MXML(XMLファイル)で画面を作ります。
  • 2)画面の要素(TextInputやComboBoxなど)はコンポーネントと呼びます。
  • 3)コンポーネントはFlex SDKにあらかじめ用意されています。
  • 4)コンポーネントはスタイルを設定して見た目を変更できます。
  • 5)コンポーネントはSkinを変更する事もできます。
  • 6)コンポーネントは自作することもできます。
  • 7)ふつうはFlex SDK のコンポーネントを継承して作ります。
  • 慣れると簡単に作れるのでぜひ一度作ってみてください。 以上。


他の方の発表資料は SilverlightSquareさんところに集まるっぽい。 しっかしライブコーディングがヤヴァかった。お二人とも。

OSFlash本



Book Release: The Essential Guide to Open Source Flash Development


なにかとお世話になっているOpen Source Flash。からの本。

borderStyleに対応したText, Label (2)


Skin を指定できるようになった Label に対して borderSkin を作って指定してみる。


Using TextFields and Bitmaps in a programmatic skin ( n-kawaiさんのblog )


こちらで文字付き Skin の作り方が紹介されてたので
同じようなのを違ったアプローチで作る。


ソースは右クリ。

Skin が使える Label に Skin を作って適用してみました。
もっとFlexっぽくいくなら、HaloBorder ベースで作ったほうがいいかもですね。

borderStyleに対応したText, Label (1)


mx.controls.Label や
mx.controls.Text に

backgroundColor や borderStyle , borderSkin を。

Canvas と TextInput のソースから移植して実現。




ソースはこちら

source

Flex SDK の defaults.css で global に borderStyle : "inset" が設定されてるので本来の素のデフォルトは枠線がつきます。
なのでそれが嫌な場合は、css で borderStyle : "none" を書いてやって下さい。

さて、スタイルでいろいろ装飾できるので便利やけど
ただでさえ重いFlexなだけに、単純に文字だけでいい場合はこういうの使わない方がいいと思う。

何がどう入力されたのかがわかるTextInput


TextInput のカスタムコンポーネントを作りました。




概要
・テキストがどう編集されたのかがわかる。
・でもInsertキーを無効にしておく必要がある。


source

基本的には、TextEvent.TEXT_INPUTのイベントハンドラにてDispatch。
BackSpaceキーとDeleteキーの場合は、KeyboardEvent.KEY_DOWN。
という KEY_DOWN と TEXT_INPUT の両イベントの組み合わせ。

まあ、ニッチですわな。

入力項目つきTextInput


TextInput のカスタムコンポーネントを作りました。




概要
・入力項目名(かまたは入力書式など)を内包してるので、レイアウトスペースが節約できるかもしれない。
・何を入力したらよいのかすぐわかるかもしれない。
・focusIn で消す。
・focusOut で未入力なら再表示。


source


exampleTextColor というスタイルで色指定できるようにしたんやけど、
updateDisplayList で exampleTextField の色を設定してるのが自分で気になってる。
ほんとは createChildren で一回だけ色指定したいんですがー。


DataGrid のレンダラーとしては試してないからどうなるかわからない。


FlexでInsertキーによる上書きモードをスルーする。

Insertキーを無効にする。



ニッチな要件だと我ながら思う。

stage,systemManager,root,application (2)

stage, systemManager, root, applicationの実験の続き。

実験2




上からベースアプリ、ModuleLoaderでロードしたモジュール、SWFLoaderでロードした別アプリ。

それぞれのtoolTIpで各プロパティの値がわかる。


ベースアプリの情報
■ stage :
[object Stage]
■ systemManager :
[object _BlogSample2_mx_managers_SystemManager]
■ root :
[object _BlogSample2_mx_managers_SystemManager]
■ Application.application :
BlogSample2_0

 Moduleの情報
 ■ stage :
[object Stage]
 ■ systemManager :
[object _BlogSample2_mx_managers_SystemManager]
 ■ root :
[object _BlogSample2_mx_managers_SystemManager]
 ■ Application.application :
BlogSample2_0


 ロードした別アプリの情報
 ■ stage :
[object Stage]
 ■ systemManager :
[object _BlogSample2_OtherApplication_mx_managers_SystemManager]
 ■ root :
[object _BlogSample2_OtherApplication_mx_managers_SystemManager]
 ■ Application.application :
BlogSample2_0



なんか予想を裏切られたなー

stage
みんな同じ


systemManager
ベースアプリとモジュールは同じ。別アプリは別アプリのsystemManager


root
ベースアプリとモジュールは同じ。別アプリは別アプリのroot(systemManager)


Application.application
みんな同じ(BlogSample2_0 : ベースアプリのApplication.mxmlのこと)



うーん。。。


実験ソースはこちら
ベースアプリのプロジェクト(Module含む)
ロードされる別アプリ




ところで全然関係ないけどModuleLoaderってswfファイルからの相対パスじゃなくてURLの相対パス入れないと駄目なのね

stage, systemManager, root, application (1)



stage, systemManager, root, application

表示のルートっぽいプロパティがいっぱいでどれを使えばいいのかを悩むことが多い。


stage

言わずと知れた最上位。
他のアプリケーションからロードされた場合、ロードした側のアプリでもロードされた側のサブアプリでも stage は同一を指す。
stage プロパティは、自分自身が表示リスト上に addChild() されるまでは nullになっている。
前回のApplication(またはWindowedApplication)のcreationComplete()でstageがnullになってるのは、Application自身が表示リスト上にまだAddChild()されていないから。

systemManager

systemManager プロパティは、他からロードされた場合、ロードされた側のサブアプリでは、そのサブアプリ内での SystemManager インスタンスを指す。
ちなみにApplication (AIRではWindowedApplication)は、SystemManager によってインスタンス化される。

root

SWFファイル内での最上位を指す。
FlexアプリケーションのSWFでのrootはSystemManagerになる。
Bitmapオブジェクトのみを持つSWFファイルなら、rootはbitmapオブジェクトを指す。
但し、stage の root は stage 自身を指す。
Moduleの場合、SWFファイルは別になるけどrootは親SWFと同一。

application
Application.application

メインのMXMLインスタンス(ApplicationクラスまたはWindowedApplicationクラス)を指す。
ロードされた場合も、そのサブアプリ内のメインのMXMLインスタンスを指す。
Moduleの場合、SWFファイルは別になるけどrootは親SWFと同一。


実験1



やっぱややこしいってば。

blogにFlexサンプルを貼るテスト

  • Posted by: hirossy
  • 2008年6月 9日 21:00
  • Adobe Flex






せっかくドメイン取った訳だし。



しかし、

未だに前のブログ(はてなダイアリー)の方が断然アクセスが多いっちゅうのは悲しい。


Cairngormについて書いてた時みたく、体系立てて書かんと誰も読まんのかも。

いや、


読む人を意識して書くと続かんだろうし。



メモ書きスタイルでいいよね

creationComplete()だとstageがnullで困る

アプリの初期化時に stage プロパティにアクセスしたいときは多々ある。
でもApplication(メインのMXML)の creationComplete() ではまだ null で困る。



preinitialize()〜creationComplete() の時点でstageを利用できる方法を思いついたので書いてみる。



結論
systemManager.stage としてアクセスすれば良い

発見!

stopPropagation()とstopImmediatePropagation()

メソッド名読めます?


イベントの伝播を止める

public function preventDefault():void

イベントに関連付けられたデフォルトの動作をキャンセルする。
但し、Event オブジェクトの cancelable プロパティが true のものだけ有効。

public function isDefaultPrevented():Boolean

既にデフォルトの動作がキャンセルされているかどうか。
戻り値が true なら既に preventDefault() が呼ばれている。

public function stopPropagation():void

そのメソッドを呼び出したイベントリスナーが登録されているオブジェクトでイベントリスナーの呼び出しを終了させる。
※ 現在イベントを処理中のオブジェクトにまだ実行待ちのイベントリスナーが登録されていたら、それは実行する。
※ 有効な対象は自分で追加したリスナーに限定される。
2008/6/20 追記:"自分で追加した"は、ActionScript3のデフォルト以外でという意味。mx.〜系のFlex Framework にて追加されている分は含まれる。みたい。


public function stopImmediatePropagation():void

そのメソッドを呼び出したイベントリスナーが登録されているオブジェクトでイベントリスナーの呼び出しを終了させる。
※ 自身が登録されているオブジェクトを含め、以降のイベントリスナー呼び出しを行わない。
※ 有効な対象は自分で追加したリスナーに限定される。
2008/6/20 追記:"自分で追加した"は、ActionScript3のデフォルト以外でという意味。mx.〜系のFlex Framework にて追加されている分は含まれる。みたい。


上記すべて akihiro kamijoさんのブログの December 09, 2005 の記事から抜粋


さて、問題なのは自分の英語力の無さだったりする。

上記メソッドは、
DataGridなどの複雑にコンポーネントが入り組んだコンポーネントにさらにたくさん手を加える時などによく使っている。

でも

メソッドが読めない。

ペアプロしてても
「ストップなんとかって書いたらええんちゃう?」
で通じ合う(笑)


なので、メソッド名から振る舞いのイメージが全く沸かない。


prevent [ぷりヴぇんと] 妨げる,防ぐ.

preventDefault は デフォルトの(イベントリスナ)を妨げる。

propagate [ぷらぷぁげぃと] 伝播する.

stopPropagate は 伝播を止める。

immediate [いみでぃえっと]直接の, すぐ近くの; 即時の; 当面の; 一番近い.

stopImmediatePropagate は 直接の伝播を止める。

ということなんですね。



あーすっきりした。

Yahoo!メールやっときた

  • Posted by: hirossy
  • 2008年5月 8日 21:26
  • Adobe Flex
Flex版のYahoo!メールの招待がやっときた。。

yahoomail.png


りゅうたろうより2ヶ月以上遅れてきた気がするけど。。

EventDispatcherのtoString()

  • Posted by: hirossy
  • 2008年5月 3日 20:04
  • Adobe Flex

Objectクラスにprototypeプロパティがある。

で、


toString()とvalueOf()は

prototypeプロパティ、つまりプロトタイプオブジェクトのメソッド


なので普通のクラス継承ではないと。


だから

サブクラスでtoString()とvalueOf()を再定義する場合は「override」は書かない。


でも、flash.events.Eventクラスなど、toString()を実装しているクラスのサブクラスの場合で、toString()を再定義する場合は当然「override」する。



んでこっから本題



flash.events.EventDispatcherクラスはリファレンスを見る限りtoString()の実装は行ってない。&EventDispatcherの親クラスはObjectなので親の誰かがtoString()を実装することもない。


でも

EventDispatcherのサブクラスでtoString()をoverrideできる。。。

なんで?



EventDispatcherって、ほんとはtoString()を実装してるんやろ?って疑ってしまう。


まあ

いずれにしてもそんなに重要な話ではない(笑)



気になっただけ。


GWに。


asDoc いえいえ aasDoc



AIRのasDoc作成ツールは asdoc じゃなくて aasdoc だから気をつけろっ




一行で終わるのも何なので
以下知ってると思うけどasDocに関する補足情報まとめ。



1) asDoc作成ツール


flex sdk の bin の中にある。

AIRなら
aasdoc.bat ( for Windows )
aasdoc ( for Mac )

Flexなら
asdoc.exe ( for Windows )
asdoc ( for Mac )



2) Eclipse上からant実行するほうが楽かも

コマンドラインから実行してもいいけど
FlexBuilder使ってる人はEclipse上からAnt実行できたほうが断然楽やと思う。

build.xmlは

http://blog.bittube.com/ さんが公開してる asdoc作成build.xml をベースに作る。

(情報元 ASDocのAnt用build.xml satoshiさん)

出来上がったHTMLもsvnで管理してる場合は
asDocフォルダを丸ごと消さずに
defaultexcludesを書くか、「**/.svn」「**/.svn/**」を除外して
古いdocをdeleteするなどの工夫が必要。



3) その他情報


BeInteractive! [AsDoc]

BeInteractive!さんのところに
「ADOBE FLEX 3 アプリケーションの構築と展開」の第13章のところに載っていないことが載っている。


でも @includeExample は今は使えないようになっていると思われる。




以上 enjoy aasdoc !

SWFLoaderでhoge-debug.swfをロードすると

  • Posted by: hirossy
  • 2008年4月21日 03:51
  • Adobe Flex



ロードされる側のブレークポイントも止まるから便利だよ





同じワークスペースの場合に限ると思うけど。






ちなみにSWFLoaderよりもModuleLoaderのほうがオプティマイズしてくれる分、良いと思うよ


Error: Could not find resource bundle formatters

  • Posted by: hirossy
  • 2008年4月21日 03:39
  • Adobe Flex

こんなエラーが出たら


Error: Could not find resource bundle formatters
at mx.resources::ResourceBundle$/getResourceBundle()
at mx.formatters::DateBase$cinit()
at global$init()
at mx.formatters::DateFormatter/format()
at packagename::ClassName/onLabelFunctionFormatDate()
at mx.controls.dataGridClasses::DataGridColumn/itemToLabel()
at mx.controls.dataGridClasses::DataGridBase/makeListData()
at mx.controls.dataGridClasses::DataGridBase/makeRowsAndColumns()
at mx.controls::DataGrid/makeRowsAndColumns()
at mx.controls.listClasses::ListBase/updateDisplayList()
at mx.controls::DataGrid/updateDisplayList()
at mx.core::UIComponent/validateDisplayList()
at mx.managers::LayoutManager/validateDisplayList()
at mx.managers::LayoutManager/doPhasedInstantiation()
at Function/http://adobe.com/AS3/2006/builtin::apply()
at mx.core::UIComponent/callLaterDispatcher2()
at mx.core::UIComponent/callLaterDispatcher()



initializeとかで意図的にDateFormatterのインスタンスを生成してやると直るよ




Loader使ったときとか。ね。
  • Comments (Close): 0
  • TrackBack (Close): 0

AS3のSingletonの書き方をちょっと変えた。リベンジ。


こないだのSingletonがうまく動かなくて自分でへこんでたからリベンジだこのやろう。


というわけで、さかっさんとの合作で出来上がった新しいSingleton。



コペルニクス的逆転の発想。


パッケージ外クラスでインスタンスを取得してやるのさっ


これでget instance の度にnewするべきかどうかチェックしなくていい。

Wicked南海謹製なり。

ModuleLoader,SWFLoader。そしてやはりSingleton。


ModuleLoaderやSWFLoaderを利用してアプリケーションを分割するのは規模が大きいときはマスト。


でも各モジュール間や各SWF間でのデータ連携は大変!!ではない。


絵で説明する。
2.png

こうしてやってBindingしてやれば簡単っしょー。


でもこれやるにはひとつだけポイントがあるのね。


呼び出し元(ロードする側)でSingletonのインスタンスを先に一回取得しておいてやること


そうすればもうあんた、
アプリケーションだろうがモジュールだろうがドンと来いだっつうの



という一年前のスレッドに対する答え。。

AS3のSingletonの書き方をちょっと変えた



何かを管理するクラスを作るときはSingletonを多用する。とにかくよく使う。


で、ずっとこう書いてきた

つかいかた


2008/04/02:新しいSingletonを書いてたけどちゃんと動作しないから削除。した。ごめん。
2008/04/04:リベンジした。AS3のSingletonの書き方をちょっと変えた。リベンジ


ちなみに、一応書いておくと、

パッケージの外にクラスを書く(上記HogeSingletonInternal,MogeSingletonInternal)と、
このファイル内からしかアクセスできないので、上記クラス以外からシングルトンをnewしようとしてもErrorがスローされるYO!



Adobe Flex in The Underground

  • Posted by: hirossy
  • 2008年3月31日 08:35
  • Adobe Flex


アングラそしてマディなライブイベントにいってきた。


平野先生はMax/MSP,Flash,Flexで音と映像を奏でるアーティスト。
昨年NYでぶっ飛んだプレイを披露してるやゔぁい人。



200803302125000_hirano.jpg

200803302127000_hirano.jpg

200803302124000_hirano.jpg

画質荒いのはごめん。

ビデオカメラをぐりぐり撮影するだけで音と映像がリアルタイムに生成,出力されてる様子。

全部自作アプリで、既製のDJ/VJソフトなど一切無し(笑)
本番直前までAdobe AIRでも作ってたっぽいけど、どうなったのかは不明。




ワールド炸裂
リスペクトっす

Photoshop Express beta

  • Posted by: hirossy
  • 2008年3月28日 00:13
  • Adobe Flex





PhotoshopExpress.png

http://www.photoshop.com/express/




Flexで作られたそうな。
ソース見てみたいなー

Adobe AIR 1.0 を透明かつ好きな形にって

  • Posted by: hirossy
  • 2008年3月23日 13:03
  • Adobe Flex

Apollo 〜 β版んときは、
ウィンドウを透明にかつOSのクロームを無くして完全自由な外観にするには

gihyoのAIRのページ

ってやってたのに

AIR1.0だとうまくいかんと悩む事1ヶ月ちょい。

やっとわかった(汗



1.Hoge-app.xmlにこれ書くっしょ



2.WindowedApplicationのタグ内でこれをつける




これであんたもうなんにも見えないよ。うん。


絶対見えない。


あとはpng画像でもaddChildして好きな形にしておくれ。



こんなに簡単やったとは・・・



RubyIZUMI (MP4/H.264 RTMP Server) 0.01 released

  • Posted by: hirossy
  • 2008年3月22日 22:29
  • Adobe Flex

OSFlashより


Ruby製(H.264対応の)RTMPストリーミングサーバーだとさ
今後が楽しみすね

rubyizumi


rubyizumi.JPG
これデモサイト




Flex3 Compiler APIを試してみたのさっ

  • Posted by: hirossy
  • 2008年3月22日 19:20
  • Adobe Flex

Flex3 SDK(or Flex Builder3)に flex-compiler-oem.jar っつうのがついてて、
これを使うとJavaからFlexアプリケーションやswcライブラリを作る(コンパイル)することができるらしい。


じゃあMingみたいな使い方ができるやん

ということで試しに

動的に画像(サムネイルとか)を埋め込んだswcライブラリを動的に作るようなのを作ってみたのさっ。


1.flex-compiler-oem.jar をビルドパス(クラスパス)に通す。
※ flex-compiler-oem.jar はBuilderの flex_builder_root/sdks/3.0.0/lib にある。

2.javaクラスを作る


動的にtest.Thumbクラスを作って、そのクラスの中で埋め込み画像を。
んで、コンパイルするとswcができあがる。


3.検証用のFlexアプリを作る

※作ったswcをライブラリパスに含める。



おーおもろい!!


ソースはこちらから
javaのほう(※jarファイルは入ってないす)
検証用Flexのほう



ちなみに
Adobe Flex 3コンパイラAPIユーザガイド(pdf)に詳しく日本語で説明してるのでそれを読めば簡単に作れるYO。



忙しいときほどこういうの試したくなるんねー

Custom Metadata の続き

  • Posted by: hirossy
  • 2008年3月18日 09:06
  • Adobe Flex

たとえばこんなメタをつける

[MetaName(keyName="test")]

コンパイラオプションに

-keep-as3-metadeta MetaName

ってつけてコンパイル。


んで

var xml:XML = describeType(new Hoge() );
var value:String = xml.metadata.(@name=="MetaName").arg.(@key=="keyName").@value;

こんな感じでメタの値をゲットできる。そもそもFlex2.0.1でもできる。


Custom Metadata in AS3
swcライブラリとしてコンパイラオプション付きで作成すれば、以降そのswcを利用する場合、コンパイラオプションなしでカスタムメタが使えるという話。


んで、yui-frameworksを利用する際に、コンパイラオプションに

-load-config+=metadeta-config.xml

(metadeta-config.xml:メタ定義ファイル。上記コンパイラオプションと同じ)

を毎回つける必要があったけど、今ならもういらないよということ。

Custom Metadata in AS3

  • Posted by: hirossy
  • 2008年3月18日 03:39
  • Adobe Flex


Using Your Own Custom Metadata in AS3


Flex2だとカスタムMetadataタグを使う場合、
プロジェクト毎にコンパイルオプション(-keep-as3-metadata)が必要だったのが、
Flex3だとswc作るときにコンパイルオプションをつければ、
(swcを)使う方はコンパイルオプションいらないよって話。


カスタムメタの使い方は↓が参考になる。

Annotating ActionScript Classes with Custom Metadata + Simple ORM Framework for AIR

いや、yui-frameworksのソースが一番参考になる。


  • Comments (Close): 0
  • TrackBack (Close): 0

どのリクエストに対するレスポンス?

  • Posted by: hirossy
  • 2008年3月12日 23:57
  • Adobe Flex
RemoteObjectでサーバーにリクエストすると

resultEventやfaultEventに非同期で応答が
帰ってくる。



(ほぼ同時に)複数の同一メソッドにリクエストすると

どのリクエストに対するレスポンス(resultEvent or faultEvent)なのかわからなくなってしまう。



そんなときは


リクエスト送信時のInvokeEventをとって(Listenして)

InvokeEventの

token.message.messageId

をどこかに保持しておいて、

ResultEvent(またはFaultEvent)の

token.message.messageId

とを照合するとどのリクエストに対するresultEvent(またはfaultEvent)なのかがわかる。


よな?


ASTRA: ActionScript Toolkit for Rich Applications

  • Posted by: hirossy
  • 2008年3月12日 22:21
  • Adobe Flex



Yahoo! Flash Developer Center



Flash Components beta
Flex Components beta
Badge Kit
Web APIs Library



ちょこっと便利なコンポーネントとか、大量に。


BSDライセンスで。





ところでこないだ申請したFlex版Yahoo!メールまだ?
りゅうたろうはもうとっくにFlex版Yahoo!メールなのに...



  • Comments (Close): 0
  • TrackBack (Close): 0

AIRでコマンドライン引数をとるときの注意メモ

  • Posted by: hirossy
  • 2008年3月12日 04:32
  • Adobe Flex


Flexのコンポーネント生成時に発生する主なイベントは以下の順番。


PREINITIALIZE :コンポーネントの初期化シーケンスの始め
INITIALIZE :コンポーネントの構築と初期化プロパティの設定が完了したとき
CREATION_COMPLETE :コンポーネントの構築,プロパティ処理,測定,レイアウト,および描画が完了したとき
APPLICATION_COMPLETE :アプリケーションが初期化されLayoutManager によって処理され,表示リストに追加された後

UPDATE_COMPLETE :オブジェクトの commitProperties(),measure(),updateDisplayList()が必要に応じて呼び出されたとき


InvokeEvent.INVOKE : アプリケーションが起動されたとき


で、


AIRで起動時のコマンドライン引数が取得できるのはInvokeイベント。




順番的に、生成時の一連のイベントが発生した後にInvokeイベントが発生するのでそこんとこ注意したい。っつうメモ。




LCDSでjava.net.BindExceptionが出たら。

  • Posted by: hirossy
  • 2008年3月11日 22:06
  • Adobe Flex


LCDSを使っててTomcat起動時にこんなんが出たら



[Flex] RTMP-Server on port: 2038 failed to start up.
java.net.BindException: Address already in use: bind
    at sun.nio.ch.Net.bind(Native Method)
    at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source)
    at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
    at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
    at flex.messaging.endpoints.rtmp.BaseNIORTMPServer.run(BaseNIORTMPServer.java:155)
    at java.lang.Thread.run(Unknown Source)



services-config.xmlの以下の部分のRTMPのポート番号を2038から2039とかに変えてあげる


<channel-definition id="my-rtmp" class="mx.messaging.channels.RTMPChannel">
<endpoint url="rtmp://{server.name}:2038" lass="flex.messaging.endpoints.RTMPEndpoint"/>



複数のLCDSアプリを作成するとポートがかぶるんすね。



FDSの時と一緒やね

FDSの設定



ちなみに
BlazeDSにはRTMP実装が含まれてないだろうから関係ない。と思う。

javaの...とas3の...

  • Posted by: hirossy
  • 2008年3月10日 09:31
  • Adobe Flex

Tiger(java1.5)から使えるようになった可変長引数「...」と

ActionScript3の「...」は同じように見えて若干違った。あぶねえ。


public void hoge( String ...args)

javaの場合は、引数の型指定があるので上記のようなメソッドにStringの配列でも渡せる。

ふつうにStringの引数をいくつか渡してもいいし、Stringの配列で渡してもいい。
どっちの方法でもhogeメソッド内で受け取った引数の値はStringの配列。


public function hoge( ...args):void

ActionScript3の場合は「...」の場合引数の型指定がないので
たとえばStringの配列を渡すと第一引数として扱われる。

だからhoge関数内で引数の値は配列の0番目にStringの配列が入ってる。



ややこしや




ちなみに
as3は「arguments」でも引数がとれる。らしい。
argumentsと...の併用は不可能。らしい。

FlexBuilder3β3からFlexBuilder3へ

  • Posted by: hirossy
  • 2008年3月 6日 09:58
  • Adobe Flex

FlexBuilder3正式版が出たのでベータ版をUnInstallして正式版へ入れなおし。


ベータ版で作ったAIRプロジェクトを正式版で開くと、Runしない・・・


んで


[ProjectName]-app.xml 2行目の<application>タグのネームスペースのURIに差異発見。

ベータ版
<application xmlns="http://ns.adobe.com/air/application/1.0.M6">
正式版
<application xmlns="http://ns.adobe.com/air/application/1.0">


動いた。

NPSWF32.dll

  • Posted by: hirossy
  • 2008年3月 5日 21:38
  • Adobe Flex

flex_error.jpg



ちょっと古いネタかもですが、

FlexBuilder(プラグイン)のインストール直後のRunってこうなりません??


C:\WINDOWS\system32\Macromed\Flash\NPSWF32.dllをコピーしてFireFox\pluginsにペーで解決ですが、面倒くさいですよね。


Index of all entries

Home > Adobe Flex Archive

HIROSSY BLOG
Feeds

Return to page top