2006 年 7 月 のアーカイブ

AS3メモ Commandライブラリ欲しい

2006 年 7 月 22 日 土曜日

AS3色々触った感想としては、サクサク実験する為にはCommandパターン用のライブラリが是非とも欲しいなぁ。
些細なカスタマイズや動作の定義をするごとに、イベントリスナー割り当てたり、サブクラス作ったりするのはかったるすぎる。

Commandクラスってのは、インスタンス作成時に呼び出したい関数と引数を登録して、execute()実行時に登録した関数を実行してくれるクラスの俗称。

考えてるのはだいたいこんなの。

オーソドックスなコマンド

var command:Command = new Command( オブジェ参照, 関数参照, [パラメータ]);
command.execute()  //これで指定の関数を実行

遅延コマンド

var command:DelayCommand = new DelayCommand( オブジェ参照, 関数参照, [パラメータ], 遅延フレーム数);
command.execute()  //これでnフレーム後に関数が実行される

一括実行コマンド

var command:MacroCommand = new MacroCommand( [command1, command2, command3] );
command.execute()  //これで、一連のコマンドが順番に実行される

うーん、あと欲しいのは、なんかエクスプレッションで分岐できるコマンドとかかな・・・

こういうクラス作って、クリックしたら割り当てたコマンドを実行してくれるボタンクラスを作れば、onPressの代替としてFlash9でも結構スムーズに試行錯誤ができそう。

AS3 ライブラリアイテムに関連付けたクラスのサブクラスは、アイテムに関連づけられない

2006 年 7 月 20 日 木曜日

ふ ざ け る な 致 命 的 設 計 ミ ス だ !

どういうことかというと、FldButtonクラスを作ってライブラリのアイテムと関連づけた場合、 そのサブクラスであるFldCheckBoxをライブラリのアイテムに関連づけようとすると、

The class net.fladdict.simpleUi.button.FldCheckBox cannot extend net.fladdict.simpleUi.button.FldButton since both are associated with library symbols or the main timeline.(両方ライブラリかタイムラインに関連づけられてっから、FldCheckBoxはFldButttonを継承できないんだカス!)

といわれる。

つまり、アイテム毎に「関連付け専用」のサブクラス作っとかないと、アイテムと関連づけられるサブクラスを作れないって、これオーサリング環境でAS3組むなら致命的じゃないですかね?

これさ、FldButton作ったら、リンケージする為だけにFldButtonLinkageってクラス作って使用するようにしないとダメじゃん。そうしないとリンケージ可能なサブクラスFldCheckBoxが作れない。

Flash9のリンケージで、ダミークラスを作るときにダミークラスを一律MovieClipのサブじゃなくて、ちゃんとスーパークラスを指定できるようにしてもらえれば、問題解決なんだけどFlash9の機能要望ってどこに送ればいいんでしょ。

オーサリング環境じゃすんげぇ使いづらいよ、コレ!。

私がHatenaTubeでどれだけ儲けたか

2006 年 7 月 19 日 水曜日

HatenaTube2.0をラウンチしAmazonアフィを開始してから、はや1ヶ月。

本日は、Web2.0の本質である他人の鞘取りで、いったいどれだけボロ儲けができるのかを大公開いたします。

6月19日~7月19日の、HatenaTubeから購入された商品の総数は、な、なんと・・・

(more…)

AS3メモ AS3ボタンコンポーネントアイデア

2006 年 7 月 17 日 月曜日

にごりゆず酒を一人でガブ飲みしていたら、脳内にActionScriptの神が降臨した。

AS3の1アイテム1クラスという構造の中で、複数のスキンを適用できる再利用可能なボタンコンポーネントの作り方を考えていたのですが、ようやっと現実味のある案を思いついた。

なんていうか、解決してみればすごいシンプルな手法でいけそう。
SimpleButtonクラスを拡張してボタンコンポーネントをつくり、拡張SimpleButtonコンポーネントが親MCをスキンとして使用すればよいのではないかと。

こうすれば「ボタン」という機能は拡張SimpleButtonが1つのクラスで担当でき、拡張SimpleButtonを内包するだけであたらしい外見のボタンが作成できるので、スキン毎にasファイルを容易する必要はなくなります。

オーサリング環境で使用する場合には、拡張SimpleButtonを内包したアイテムはステージ上に置くだけで機能しますし、スクリプトからアタッチする場合はスキンとなるMCを配置すれば、ボタンとしての機能は自動的に追随します。 

あぁ、なるほど!! こうすればよかったんだ!!!!!!!!!
ちょっと酔っ払ってるけど、いまから検証しる。

読書日記

2006 年 7 月 17 日 月曜日

本日は読書デー。
四季(春), 四季(夏), 四季(秋), 四季(冬)を一気に読了。

ゴールデンウィーク初頭から読み始めて、S&Mシリーズ10冊、Vシリーズ10冊。春夏秋冬4冊まで、一応は一連の物語たちは読了。途中忙しい期間があったのをさっぴけば、2ヶ月半で26冊(上記プラス、Gシリーズ1冊と短編集1冊)は、通勤電車内の時間を有効利用できてる感じ。

しかし、やっぱり森博嗣が書く天才像はヤバイ。夜神月みたいなエセ天才とは桁が違う。デスノの最終巻も買ったんだけど、正直あのラストには失望。夜神月もニアもあの作戦は馬鹿杉。

以下、ちょっとデスノのネタバレになるので注意。

****************************************************

ラストシーンであるYB倉庫の会見では、月はXキラに対して、

「YB倉庫のドアを開く直前に、ノートの28日のページの1行目に「夜神月」という名前を書け。ただしこの人物の顔を知ってはならない」

という指示をすべきだったと思うんだよね。

デスノートが他人に渡ったときの最大の武器は、過去に記された名前の人物が本当に死んでいる/死ぬとは限らない(その名前が顔を知っている状態で書かれたかどうかを、事後判別できない)、という点にあったのに・・・

だから、はじめから倉庫でXキラに顔を晒すつもりだったのなら、事前に名前を教えるべきだった。そうすれば、すり変え以前に、ニアの作戦はどう転んでも無意味になったのに。

その場合、逆にニアの方がこの会見中に「月=キラ」の証拠を見つけなければ、後日名前を書かれて死ぬ、というギリギリの接近戦になったんだけど・・・

結局デスノは最後が盛り上がらないまま終わってしまったのが非常に残念。

****************************************************

とりあずGシリーズの2冊目以降に突入しようと思うのだけど、1冊目を読んだ感想ではGシリーズはあまり期待できなさそうな気も。他の作家に移動しようかな。 オススメあったら教えてください。

AS3 XMLにネームスペースがあると普通には値が取得できない2

2006 年 7 月 17 日 月曜日

色々実験して、一応、正しい(?)対処方法を発見。
なんかXMLが大嫌いになった僕がいました。

amazon apiの場合、ネームスペースが

xmlns="http://webservices.amazon.com/AWSECommerceService/2005-10-05"

なので、

ns = new Namespae("http://webservices.amazon.com/AWSECommerceService/2005-10-05")

var isValid = xml.ns::Items.ns::Request.ns::IsValid

という風に、どうやらE4Xでエレメント毎に「ネームスペースの参照 ::」をつけてやらないといけないらしい。

どういうことかっていうと、AS3でXMLノードを他の関数とかに渡す場合には、一緒にネームスペースも渡してやらんと、関数で値が取得できないんじゃないか、ということ。最悪、XMLの種類毎にパーサ用意して随時オブジェクト化するように心がけないといけないかもしれない。

っていうか、パース前にストリング弄くってネームスペース削るほうが絶対楽だなぁ・・・・
こういう場合、removeNamespaceとか使って、ネームスペース殺せばいいんでしょうかね。

教えてエロイ人。

AS3 XMLにネームスペースがあると普通には値が取得できない

2006 年 7 月 17 日 月曜日

今まで、どうして誰もAS3でアマゾンのサンプルを作らないのか、ずっと疑問だった・・・
というかFlex2ベーダで3回ぐらい挑戦して、全部挫折していたのだけどようやっと原因が判明。

新しいXMLクラスのE4Xで、amazon apiのエレメント取得できねぇでやんの。

xml.Items.Item とかやっても常に空っぽ。

で、仕方なくxmlをローカル保存して、1行づつ削って検証した結果、どうやらItemResponseにあるネームスペース、xmlnsを削除すればxmlの値が取れるようになった。

純正Flash使いにとって未知の概念なので、多分99.9%の人はつっかえるよココ。
上条先生のブログでは多少説明されてるけど、既存のFlashユーザーが概念を理解するには、ちょっと前提知識が省略されてる感じ。

名前空間( dc: みたいなの)がXMLにある場合には、 NamespaceオブジェクトやらQNameオブジェクトやらが必要みたい。しかし、AmazonのItemResponseにはxmlns以下にアドレスはあれど、空間の名前が書いてない。こういう場合はどうやって取得するんでしょう。

現状、戻り値からリプレイスで、名前空間を無理矢理に削除してしてから、XMLパースしてるけど、明らかに誤った解決方法だからなぁ。正しい方法見つけなくちゃ。
上条先生、是非是非トラックバック有効にしてください(涙)

AS3メモ 無名オブジェクトの構造体って使えるん?

2006 年 7 月 17 日 月曜日

AS2では、オブジェクトに名前と値のペアをつっこんだ構造体を、すんごい多様してたけど、これってAS3でありなん?

var obj:Object = {hoge:1, hoge:2, hoge:3}
for(var i in obj){
trace( “name:” + i)
trace( “value:” + obj[i])
}

一応、動くみたいだけど。厳格じゃないっていうかAS3のコンセプトからは逸脱しているような・・・
AS3で、これに対応するデータ管理方法ってなんなんだろう。 Dictionaryなんすかね?

無名オブジェクトでの連想配列使っていいのかどうかよくわからんち。

なんかAS3勉強会してぇ

2006 年 7 月 16 日 日曜日

したくね?
1日ガッツリやった感想としては、言語は独学で理解できても、ノウハウ1人で作るの無理だこりゃ。
オーサリング時のMCの構造とかのノウハウが、大幅に変わりそうなんだもん。

OOP勉強会みたいなタイプじゃなくて、5~6人の少数精鋭で喫茶店とか誰かの家とか集まって、実際にコードかきながらペアプログラミングみたいのするだけの奴。自分の作りたいもの作って、途中でつっかえたらコード見せ合って情報交換する感じ。 Noテキスト、Noティーチャー、Noプレゼンテーションの奴。
メッセ+FCSのお絵かき掲示板でもいいや。

誰かやりません?

AS3メモ AS3用コンポーネントのアイデア

2006 年 7 月 16 日 日曜日

AS3で、Flash上でオーサリングしたMCをUIコンポーネントとしてどうすればいいのかな?
っと昨日のよるずっとvoidさんとチャットしてた。

ライブラリのアイテムとClassが一対一の関係なので、UIの外見の数だけサブクラス作るような事態は避けたい感じ。

んだけど、そんで考えた自分なりのアイデア。

(more…)