Saqoosha

カラリオからの新提案!「3D年賀状」

Blog

2009120701-Colorioar

よくできた AR 年賀サイトですねー。
さーて、これからうちの会社の年賀サイトを作りますよっと、、、

FDT で 1 プロジェクトやってみたわけだが

BlogFlash

先日の .fla2 トークイベント来てくれた方、あざっした。で、そのライブコーディングで使っていたのは FDT っていう Flash 開発環境。AS3 になって Flex Builder 使うようになってからはまーたく使ってなかったんだけど、AS2 時代は FDT 以外にまともな AS エディタがなかったから使ってました。最近また FDT の名前をよく聞くようになってきたり、オープンソースライセンスをもらったり、こないだの Adobe MAX で FDT の中の人に会ったり、だったので某プロジェクトを FDT でコーディングしたりしていて、んで、ライブコーディングにも使ってたと。いまんとこメイン開発環境かな。実戦投入してみないとわからないこともいろいろあるわけで、以下、気付いた点とか。購入検討しているひとは参考にどぞ。

よい点。


コードアシスト
まー、FDT つかうのはほぼこのためだっていうぐらい重要なポイントですな。デフォルトだとそんなにアシストしてくんないけれど、ここの Code Assist んとこの設定をするとウザいぐらいアシストしてくれる。ぼかー、Delay 50 でやってる。

Quick Fix
これは言葉で説明するのは大変なので詳細はこっち見てもらうとして、そーんなに頻繁にはつかわないけどトップダウンでコードを作っていくときは結構つかえる。

Refactoring。
リファクタリングつってもそんな高度なもんじゃーない。変数名とか関数名のリネームとかファイル移動したときの関連ファイルの修正とかそんなん。だけど、結構つくってる最中にパッケージ構成変えたり名前変えたりってのはしたくなるので、これがさくっとできるのは便利。ただしファイル名変更いがいのリファクタリング機能は Enterprise 版しかできない。なんだそりゃ。

参照元検索。
このメソッドをちょっと修正しようと思うんだけど、いったいどこから呼ばれてるんだっけ?とかってのが検索できる。変数とかも。割とよくつかう。

Organize Imports。
コードアシストの次に重要なポイントだなー。基本的に AS 書いていくと import 文は自動的に追加されていく(違うパッケージの同名クラスは選択ダイアログが出る)んだけど、てきとうにコピペして他からもってきたコードでも Organize Imports するとほぼ一発で import 文書いてくれる。不要な import 文は削除される。きれいにパッケージ順にソートしてくれる。Flex Builder にも似たような機能あるけどそれより賢い。

・・・

わるい点もいろいろあるんだけど書くの疲れたので軽くリスト。一番大きいのは AIR 開発系が弱いことだなあ。これがだめなせいで結局 Flash Builder が必要になるっていう。Flex Builder の倍ぐらい値段するんだからそのへんも対応してほしい。

わるい点。
・SDK の設定わかりにくい。
・Build 設定いちいちめんどい。
・指定したファイルだけで SWC つくりたい。
・mxlm いじるんはやっぱビジュアルエディタ必要。
・Cocoa 版はスクロールもっさり。Eclipse Cocoa 版がそうみたい。
・Run とか Debug とかの対象がわかりにくい。
・Plugin はいりすぎ。
・バグ多め。
・高い。

・・・

まー、AS エディタとしては素晴らしい環境なのでお金に余裕があるかたはお試しアレ

Categories: Flash

Ustream Flash Client API で IRC してみる

Blog

こないだのてら子では中継に初めてニコ生を使ってみたんだけど、初めてすぎて途中でいろいろめんどくなっちゃって Ustream に切り替えちゃった。お金もかかるしねー。まーでもあのコメントがだーって流れるのはそれはそれでおもしろい。で、前にもそんあことを思ったことがあって、Ustream のチャットをニコニコ風にオーバーレイして流すニコニコ Ustream ってのを作ったことがありました。(わー、2 年も前だわw。超絶おもしろかったなあ)そんときは、Ustream のプレイヤー swf から FMS とのやりとりをこっそり拝見させていただきまして、ストリームをぶっこぬいてたのですが、まー、そんな手がいつまでも使えるわけもなく、まったく動作しなくなっておりました。んで、最近 @hoehoe 氏のブログで Ustream Flash Client API とかいうのがあるのを知りまして、じゃー、また作れるやん?ってことでちょっと試したっていう話。実はてら子中に作っていた。前置き長い。

結論から言うと、すげー簡単にできた。大変だったのは API の使い方がわからんというところだ。API ドキュメントがあるんだけど無いに等しい内容でこれだったら FDT とかで SWC 見る方が早い、ってか実はそっちのが正しいみたいな。まー、↓みたいにすれば IRC つながりますので、@hoehoe 氏のやりかたで映像ひっぱってきてのっければニコニコ Ustream 完成ですなー。

package {
    import tv.ustream.irc.Channel;
    import tv.ustream.irc.Chat;
    import tv.ustream.irc.Irc;
    import tv.ustream.tools.DynamicEvent;

import flash.display.Sprite;
import flash.events.Event;

public class IrcTest extends Sprite {

private var _irc:Irc;
private var _channel:Channel;
private var _chat:Chat;

public function IrcTest() {
_irc = new Irc('username', 'password');
_irc.addEventListener('connect', _t);
_irc.addEventListener('connected', _t);
_irc.addEventListener('ready', _t);
_irc.addEventListener('motd', _onMotd);
_irc.addEventListener('createChat', _t);
_irc.addEventListener('createChannel', _onCreateChannel);
_irc.addEventListener('disconnected', _t);
_irc.addEventListener('ioError', _t);
_irc.addEventListener('securityError', _t);
}

private function _t(...args):void {
trace('******', args);
}

private function _onMotd(e:Event):void {
_t(e);
_irc.join('HogeChannel');
}

private function _onCreateChannel(e:DynamicEvent):void {
_t(e);
_channel = e.channel;
_channel.addEventListener('message', _onMessage);
_chat = new Chat('#HogeChannel', _irc);
_chat.send('Uryaaaaaa!!!');
}

private function _onMessage(e:DynamicEvent):void {
_t(e.from + ': ' + e.message);
}
}
}

この IRC クラス、Ustream だけに使えるとか制限あるわけじゃないので freenode とか別の IRC サーバーにも普通につながる。IRC クラスのコンストラクタの第 3 引数にサーバー名渡すだけ。ライセンスは確認してないけど。