2008年8月 Archives

« 2008年7月 2008年9月 »

TextFieldのEvent.CHANGEメモ

2008/08/26 追記
このエントリーの後、よりスマートな方法でTextField内の画像を監視できる方法に気がついたので
コチラを是非ご覧ください。


textField.htmlText でhtml文書をFlash内で表示させるわけですが、html文書中にimgタグが含まれている場合、この画像のロードを監視することは困難です。(多分不可能だと思うけどどうかな?)

場合によっては完全にtextFieldが整形されてから表示させたかったりするのでこれは結構やっかいな問題です。しかも画像がロードされたあと若干レンダリングにズレが生じたりするので更に大変。

で、どうしようかと悩んだ末に「Event.CHANGE」をaddEventListenerすることにしました。

ここでの懸念は、そもそもhtmlText自体は何も変更されておらず、果たしてトリッガされるのか、という点でしたが、なんとばっちりトリガリング!(←こんな英語は多分ない)

多分文字組が変更されるから「Event.CHANGE」がdispatchされるのでしょう。

ソースはこんな感じです。 それでは。


tf.addEventListener(Event.CHANGE,changeHandler)

private function changeHandler(e:Event):void {
 trace("-----------[changeHandler]")
}

bug

誰が言ってたか忘れちゃったけど、エレクトロニカとかを作っているアーティストが「アナログサウンドはノイズにこそ魂が宿るんだ」って言ってた。

そういえば最近買った「大人の科学」でも中田ヤスタカが「ラジオのノイズがノスタルジクに愛されるならMP3で圧縮した音源もそうなるんじゃないの?」とインタビューで答えていた。


ある種アニミズム信仰を感じさせるこれら言葉は、日本人ならではの言語化なのかもしれないが、アナログサウンドに限らず愛されるノイズは意外に多い。

いや、それどころか無数にある。

本来忌避されるべき要因が愛される、これは「あばたもエクボ」だったり単純なカウンターカルチャーではなく、深遠にして広大なヒトの本質なのかも。

美男美女は三日で飽きるが醜男醜女は咬めば咬むほど味が出るのだ。。

違うか。

そんなわけで自分の世界においてノイズを「バグ」と解釈した場合、

果たして我々はバグを愛せるだろうか。

超個人的開発スタヰル

最近、デザインパターンとかUMLとか、ウオーターホール的に言えば「上流」に近い事柄に対して感心が大きい。

ごりごりにコーディングとかも楽しいんだけど、ノート上にクラス図みたいなのを書いてるときも結構楽しい。ちなみに自分のスタイルは、初めは深く考えずコーディングしてみてラピッドプロトみたいなものができあがって来たところで「設計」みたいな事をする。

今のところ、UMLツールとかは使わずにマインドマップで書き起こしてみたり、ポストイットで家の襖にべたべた貼って、おお!Googleみたいだ!とか一人で喜んでいます。

ウオーターホールの教義に則れば設計から入るのが筋かもしれないが、いきなり設計から入るには設計力不足だし、第一楽しくない。正直プロジェクトの一番楽しい時期ってのは初期の気楽なコーディングとラピッドプロトまでが最高潮かもしれないと思う。ただ、この段階は「本当にうまくいくのかなあ~」みたいな不安も常に付きまとうので疲れるのも確か。

ついでに言うとラピッドプロトが上がってきた段階でデザインをアタッチするのも楽しい。ただこれはあくまでもデザインを発注されていればの話。

で、そこからはコードを見やすくしたり、可能な限りカプセル化したり、継承可能なクラスをまとめてスーパークラス作ったりする。パッケージなんかも一貫性を保つために整える。displayパッケージだったけど、これどう考えてもdataパッケージだよな~とか。他にSingletonクラスを作ったり、ミディエイタクラスを作るのもこの辺のフェーズ。ここら辺のデザインパターンの利用は、既に「それ」として機能しているものをより一層明確化するためにFogeMannagerとかHoo.singletonとか命名してやる。名前変更はトータスSVNでやって、うっかりsvn上での家系図が途切れないように留意、といいつつお家断絶しちゃったまま気付かず進めてしまう事多し。


みたいな感じで個人的には進めています。世の中のFlasherないしはASerもこんな感じなんだろうか。書いてみて思ったのは、つくづく自分はAS1、AS2、AS3と遷移してきたんだなと言うこと。もっと言えば「クリップアクション」→「タイムラインアクション」→「クラススタイルコーディング」と遷移してきたんだな~と感じた。ま、あくまでも個人的な感想だけど。でも、もし「その気持ちわからんでもないな~」という人がいればウレシイ。


おそらくJavaの人とかPHPの人とかRubyの人とかCの人とかはこういうスタイルは取らないんじゃないだろうか。ひょっとするとFlasherの中でも自分だけかもしれないけど。

Good by D&F.

今月末くらいにMacに環境を移行(戻す)しようと思う。

なんでわざわざ(戻す)と書いたかと言うと元々はMacを使っていたから。もう6~7年前の話だけど、「いや~初めからwinじゃなくてmacだったんすよ。だから昨今のmacブームに流された訳じゃなく~云々」というエクスキューズを入れたいわけです。我ながら小さい人間だ。

ところでどうしてmacからwinに移ったかと言うと雷が落ちてマシンがつぶれたから。

まあ、その話は今度詳しくと言うことで、問題はマシンを買い換えたらソフトも買い直さねばならない。Flashは言うに及ばず、Photoshopやらillustratorやら仕事環境を整えるのに結構な投資が必要になる。幸いStudio8が残ってるのでアップグレードが可能になる。それだったらデザインプレミアムかwebプレミアム買えばいいかな~と思ったけどフト疑念がよぎった。


それは、プロダクションプレミアムの方がいいんじゃないの?ということ。


プロダクションプレミアムはstudio8からのアップグレードだと20万弱だけどその後のアップグレードは10万を切る。webプレミアムとあんまり変わらない。むしろ安い。当然そうするとAcrobatとかDreamweaverとかFireworksが付いてこなくなるけど、代わりにPremireとかAfterEffectsとかSoundboothが付いてくる。これは後者の方が断然「買い」ではなかろうか。個人的には「買い」どころか「買うしかない」というイキオイに達している。


これは長年連れ添ったFireworksとDreamweaverとの決別を意味する。

しかし、シビアな話PremireとAfterEffectsという両雄の前に最早どうしようもない。AcrobatとInDesignに至っては残念ながら全く食指が動かないが、Fireworksの使いやすさは認める。だがPhotoshopがあれば問題はないし、Dreamweaverに関してもエディタとFirebugとFileZilaがあれば代替えできる。だけどPremireとAfterEffectsに関しては代替えがない。もちろんFinalCutとか競合代替えの話ではなく。


この二択を目前にしてプロダクションプレミアムを選ばないヤツがいるだろうか。
いないに違いない!浮気者とは呼ばせないぜ!


さらばDreamweaver。
いい夢をありがとう。

さらばFireworks。
ホットな仕事をありがとう。

Progression 3 launch party

いや~とうとう出るね!Progression 3!

実は個人的にはbetaが出る前くらいから実戦投入して使っています。ロクな検証もしないで、「ん、どうなってんだ?教えてnium先生!」とtwitter上で焦ってたのはボクです。ホント申し訳ありません。

他にも無理難題な追加機能を提案してみたり穴があったら入りたいですね。

そんなわけで今月下旬にリリース予定のProgression 3 のラウンチパーティーが9月4日に銀座アップルストアで行われるそうです。
詳しくはこちらhttp://event.progression.jp/


ちなみにどうでも良いけどその日はボクの誕生日です(...言っちゃた)

行きたいけど言ったら流石に家族のヒンシュクを買いそう。

TextField内の画像のロードを監視するメモ

ちょっと前のエントリーで、「TextField内にロードした画像ってロード状況を監視出来なくて困ったもんだ」という旨の発言をしてしまったけど、実は間違いでした。スミマセン。

なんと、TextField内でもロードを監視できるようです。

大まかな流れは、Textfieldインスタンスから「getImageReference()」を使って<img src="foo.jpg" id="foge" />によって指定した表示オブジェクトを取得。更にLoaderクラスにキャストし、後は普通のLoaderと同じ。

具体的にはこんな塩梅です。

var tf:TextField = new TextField()

tf.htmlText = '<img src="img.jpg" id="img" />';

addChild(tf);

var loader:Loader = tf.getImageReference("img") as Loader
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,comp)
function comp(e:Event):void {
    var loaderInfo:LoaderInfo = e.target as LoaderInfo
    trace(loaderInfo.content.parent.parent)
    //[object TextField]   
    trace("complete")
}

RSS + Contuct

  • rss
  • email

Credit

Copyright (C) 2007 kappa-lab.com.
All Rights Reserved.