Saqoosha

  1. About
  2. Archives
  3. Search
  4. Say
Language:

FLARToolKit が wonderfl に!

wonderflFLARToolKit がはいってないのが不思議でしたね。いや、まあ、不思議でもないんだけど。ライセンスが Flash 用ライブラリとしてはめずらしく GPL なのでいろいろと面倒なんだろうなあとは思ってました。が、諸々調整の上、ようやくいれていただけました。ありがと @maaash ! あ、サンプルはここ

4 月のてら子

今月のてら子はなんかちょっといつもと違う。しかも 2 回もある。

ひとつめ。

お花見勉強会 2010
毎年やってて 3 回目ぐらい? 去年はぼくは社員旅行で海外いってた参加できなかったんだけど、てら子 (@teraco_osaka) + FxUG (Flex User Group, @fxug_osaka) + 関西ライフハック研究会、の合同イベント。お花見ってついてるけど 4/17(土)なのでお花はもうないと思われますが、まあ、食べながら飲みながら屋外でプロジェクタ用意してなんかやる。場所は靱公園。

ふたつめ。

GEEKs in OSAKA
Flash モーションプログラミング + 大阪てら子

4/25(日)に ROXIK 城戸さん (@roxik) と alumican.net の奥田さん (@alumican_net) が大阪にくるよー。ロクナナのワークショップ (@67ws) がついに大阪でも! せっかくなので大阪てら子も枠もらってなんか話すことになりまして、半分は僕が Flash サウンドプログラミング周りの話、New Year Sonata とかの内部の話をして、あとはてら子組がいつものように gdgd やりますw ワークショップなので有料イベント (¥3,800) だけどてら子枠は Ustream 中継する予定 (?)。(回線状況によっては録画になるかも?)

つーわけで、イベントでまた会いませう。

radiko オリジナルプレーヤーを作る

正月からずーっと仕事しかしてない気がするけど、たまにはこういうコード書きたい! ということで書いた。これでみんな自分オリジナルの radiko プレーヤーが作れるね!


(※あたりまえだけど公式プレーヤーで聞ける範囲の人しか聞けないよー)

package {
    import com.bit101.components.HBox;
    import com.bit101.components.Label;
    import com.bit101.components.PushButton;
    import com.bit101.components.VBox;
 
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.events.NetStatusEvent;
    import flash.net.NetConnection;
    import flash.net.NetStream;
 
    public class radiko extends Sprite {
 
        private static const STATION_CODE_OSAKA:Array = ['FMO', '802', 'CCL', 'OBC', 'MBS', 'ABC'];
        private static const STATION_CODE_TOKYO:Array = ['TBS', 'QRR', 'LFR', 'INT', 'FMT', 'FMJ'];
 
        private var _conn:NetConnection;
        private var _stream:NetStream;
 
        public function radiko() {
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
 
            var vbox:VBox = new VBox(this, 10, 10);
            var osaka:HBox = new HBox(vbox);
            new Label(osaka, 0, 0, 'OSAKA');
            for each (var name:String in STATION_CODE_OSAKA) {
                new PushButton(osaka, 0, 0, name, _onSelectStation).width = 50;
            }
            var tokyo:HBox = new HBox(vbox);
            new Label(tokyo, 0, 0, 'TOKYO');
            for each (name in STATION_CODE_TOKYO) {
                new PushButton(tokyo, 0, 0, name, _onSelectStation).width = 50;
            }
        }
 
        private function _onSelectStation(event:Event):void {
            if (_stream) _stream.close();
            if (_conn) _conn.close();
 
            _conn = new NetConnection();
            _conn.client = {onBWDone: trace};
            _conn.addEventListener(NetStatusEvent.NET_STATUS, _onNetStatus);
            _conn.connect('rtmpe://radiko.smartstream.ne.jp/' + event.target.label + '/_defInst_');
        }
 
        private function _onNetStatus(event:NetStatusEvent):void {
            switch (event.info.code) {
                case 'NetConnection.Connect.Success':
                    _stream = new NetStream(_conn);
                    _stream.client = {onMetaData: trace};
                    _stream.bufferTime = 1;
                    _stream.play('simul-stream');
                    break;
            }
        }
    }
}

SoundMixer.computeSpectrum でサウンドビジュアライズ的なものもくっつけようとしたら、セキュリティエラーでできなかった。。。まー、いつまでこのコードが動くかわかんないので、できるうちに遊んどくのが吉。あ、これ、リファラーチェックしてないんだったらそのまま Wonderfl で動くやん、、つーことで置いときました