unknownplace.org

# 2008-01-17

Colin Moock さんのイベント

trick7.com blog: 1月16日イベント告知

いってきましたー。Flash系のイベントに参加したのははじめてだったのだけど、asよりということもあるかもしれないけど、とても面白かった。

感想など。

  • Colinさんによる ECMAScript4 の話

    • ECMAScriptの話はへーという感じである
    • 日本語うまい
    • null の発音はヌルではなくてどっちかといえばナルに近くて最初訳してくれるまで何言ってるのかわからなかった。
  • yossyさん

    • javaっぽくリフレクションできるやつ。個人的には興味ないけどすごくよくできてる感がした。
    • AS3Unit いいねー
    • as2でもaddChildとかどーのこーの。as2の話はよくわからん。addChildをアドチルドといっていたのがきになりまくる。
    • swfassistすげーー。スイフ(スウィフ?)アシストって呼んでたのもびっくりした。swf == スイフ? ってよむんだー。
  • むらゴンさん

    • タッチパネルThinkpadは思った以上によさげ。
    • 最初Flash IDEの画面出ててこれはアウェイかなーと思いきや動画にエフェクト二種類かけてその解説など。おもしろかった。
    • プレゼン画面が黒板にチョークを模したもので実際にチョークで字かいたりできた。質感もよかった。おもれー。
  • せこん

    • 多言語化の話。よかった。僕も使いたい。(機会があれば)
    • 「gettextって便利なあぷりがあるんですよぅ」とか1から説明していたりとアウェイ感でてておもしろかった。
  • むらけんさん + 寺井さん

    • バカスw
  • 岩崎さん

    • なんかフレームワークのイベントマネージャの話。よくわからなかった。
  • yu-kobayashiさん

    • HotRubyの話。こないだblog記事みたときもおどろいたけど、実際に3Dのピンボールうごいてるのみてぽかーんとした。
  • 飛び入りの人

    • ダッシュ四駆郎。その発想はなかったなぁw
  • 質疑応答

    • as3からByteArray+Socketで直接MySQL接続できるとはいってもそれを実際のサービスで使うのはねーよwww FlashPlayerからつなげる == だれでもそのMySQLにつなげる。ですからね。

本当にただの感想です。

yossyさんと話すチャンスがなかったのでsparkprojectをDISれなかったのが残念である。

# 2007-12-25

Safari3でExternalInterfaceる際のBK

as側で

ExternalInterface.addCallback("foo"...)

した場合Safariからは

document["swfid"].foo

でその関数が取れるわけですが、どうもこのオブジェクトをSafariがキャッシュしやがるらしく、二回目以降のロードで

typeof(document["swfid"].foo) == "function"

swfがロードされる前でも真になります。

上記コードでswfのロードチェックを行っていたためはまりました。。

解決法として

ExternalInterface.addCallback("ready", function():Boolean { return true });

とかを作り、typeofチェックに加えて、この関数を実際によんでちゃんとtrueが返って来るまで待つようにしたらOKでした。やれやれ。

# 2007-07-22

ustream hacks #3 publish movie from your own swf!

次、配信のほう。こいつはすこしやっかいだった。

まず接続は

nc.connect("rtmp://209.85.64.39/ustvVideo/{chid}", { id: "{userid}", sessionid: "{sessionid}", mode: "broadcast", channel: "{chid}", version: "v2.131b" });

とかいう感じ。

chid, sessionidはどちらも配信ページのswfソース部分にある。useridは配信ページを開いたときに http://www.ustream.tv/service.php とかにPOSTしててその結果に入ってる。

そんで、

ns.publish("live_channel_{chid}", "live");

すれば配信される。はずなのだけど、されない。FMSへの配信自体はうまくいっていて、#2でやった自前再生swfでは再生されるのだけど、ustreamのchannelページではoff airのままだ。

FMSのほうに配信開始用の関数がある模様。それもパケット見てたら見つけることができた。

publish後、

nc.call("channelStatus", new Responder(function ():void { }), "{chid}", "live");

とかいれたら、channelページでも見えるようになった。これでいいのかしらないけど。

ただこれだと、一定時間で接続が切られてしまう。まだなにかあるっぽい。

どうもFMS側からcallBackという名前の関数をよんできていて、それをうけてpongというFMS関数をよぶようになっているようだ。これをしないときられちゃうわけだなきっと。

ので、

nc.client = this;

とかして、thisのクラス内に

public function callBack():void {
    nc.call("pong", new Responder(function ():void {}));
}

とかしたら大丈夫になった。OKOK。

これでとりあえず配信もできるようになった。

あと他に callBack() とおなじように viewersNum(num:Number) とか定義しておくと、接続人数がかわるたびに呼んでくれるようだ。これで今何人とか取れると。

ustream hacks #2 play movie from your own swf!

にぽたんに続き僕も解析してみました!

ustreamのFMSを自前のswfから使う方法です。#2再生、#3配信、と続きます。

再生は普通にFMSで動画再生するのとほとんど一緒です。URLとか引数とかに気をつけるだけ。その部分だけ書きます。

nc.connect("rtmp://209.85.64.39/ustvVideo/{chid}", { mode: "channel", channel: "{chid}", sessionid: "{sessionid}" });

して、

ns.play("live_channel_{chid}");

以上!

{sessionid} はプレイヤーのSWFObject部分にありますが、chidは少し見つけにくい。new videoRate('{chid}','XXXX','channel'); とかのやつ。

# 2007-03-27

asdoc

Adobe - Adobe Flex 2:インタラクティブなWebサイト、インターネットアプリケーション

ASDocが正式にサポートされ、SDKに付属するようになりました。

ってあるからためしてみたけど

Error: Could not create toplevel.xml: Unknown OS for ASDoc.  ASDoc will only run on Windows and Mac OS X.

などといわれてLinuxではうごかない。くそう。

サポートする気ないのかなー。動かなくしてる理由もよくわからん。

asdoc 自体のドキュメントも日本語のlivedocsにない模様。古いのね。

# 2007-03-22

AS3 の 未定義 int

var i:int;
trace(i); // => 0

これいやすぎrrrrrr

未定義の状態をつくれない。

これしたいときは Number つかって isNaN するしか方法ないのかなぁ。

var i:Number;
trace(i); // => NaN

Encode.as

おきた。

早く出社する人が増えてきて、9時ごろになるとうっさくて寝られなくなるなぁ。ねむい。

package {
    import flash.utils.ByteArray;

    public class Encode {
        public static function encode(encoding:String, string:String):ByteArray {
            var octets:ByteArray = new ByteArray();
            octets.writeMultiByte(string, encoding);
            return octets;
        }

        public static function decode(encoding:String, octets:ByteArray):String {
            return octets.readMultiByte(octets.bytesAvailable, encoding);
        }
    }
}

こんなんでどうか。

このコードは、perlのunicodeフラグを分かってない人に対するEncode.pmの説明にも使えそうな気がする。

ByteArray文字コード変換

sjisbytes:ByteArray を decode:

var utf8strings:String = sjisbytes.readMultiByte(sjisbytes.length, "shift_jis");

encode:

var sjisbytes:ByteArray = new ByteArray();
sjisbytes.writeMultiByte(utf8strings, "shift_jis");

おー。

サポートされている文字セット - Adobe Flex 2 リファレンスガイド

ByteArrayのデフォルトエンディアン

いまどきビッグエンディアンがデフォルトとは!

# 2007-03-07

AS3でのフルスクリーンモード

最小のサンプル。

package {
    import flash.display.Sprite;
    import flash.display.StageDisplayState;
    import flash.events.MouseEvent;
    import flash.events.FullScreenEvent;

    public class FullScreeeeeen extends Sprite {
        public function FullScreeeeeen() {
            stage.addEventListener(MouseEvent.CLICK, clickHandler);
            stage.addEventListener(FullScreenEvent.FULL_SCREEN, fullScreenHandler);
        }

        private function clickHandler(event:MouseEvent):void {
            if (stage.displayState == StageDisplayState.NORMAL) {
                stage.displayState = StageDisplayState.FULL_SCREEN;
            }
        }

        private function fullScreenHandler(event:FullScreenEvent):void {
            if (event.fullScreen) {
                trace("enter fullScreen mode");
            }
            else {
                trace("leave fullScreen mode");
            }
        }
    }
}

これだけ。あとは addParam("allowFullScreen", true) (SWFObject書式) すれば使える。

今の Flex2 SDK だったら追加のインストールファイルは何も必要ない模様。

# 2007-02-28

コンパイル時間参考

swc使用

(fcsh) mxmlc -benchmark -include-libraries=../flexunit/bin/flexunit.swc main.mxml
fcsh: Assigned 12 as the compile target id
Loading configuration file /home/typester/app/flex/frameworks/flex-config.xml
Initial setup: 62ms
Loaded 9 SWCs: 8485ms
Files: 435 Time: 21804ms
Linking... 815ms
Optimizing... 427ms
SWF Encoding... 862ms
/home/typester/tmp/flexunit/test/main.swf (241615 bytes)
Total time: 32459ms
Peak memory usage: 387 MB (Heap: 358, Non-Heap: 29)

ソースから

(fcsh) mxmlc -benchmark -source-path=../flexunit/src/trunk/src/actionscript3 main.mxml
fcsh: Assigned 13 as the compile target id
Loading configuration file /home/typester/app/flex/frameworks/flex-config.xml
Initial setup: 66ms
Loaded 8 SWCs: 3169ms
Files: 433 Time: 57148ms
Linking... 25ms
Optimizing... 394ms
SWF Encoding... 297ms
/home/typester/tmp/flexunit/test/main.swf (239897 bytes)
Total time: 61109ms
Peak memory usage: 399 MB (Heap: 371, Non-Heap: 28)

長すぎる。VMだからメモリ足りないからかもしんない。

AS3のテスト

Adobe - Developer Center : Unit testing and Test Driven Development (TDD) for Flex and ActionScript 3.0

これ試してみた。

Flex Builder 2 がいるとか書いてあるけど、Flex2 SDK でも使えた。

この記事の例のをコンパイルするには

mxmlc -include-libraries=../flexunit/bin/flexunit.swc main.mxml

こんな感じでいいよう。

-include-libraries の代わりに -source-path で as ライブラリの位置指定してもいけるけどコンパイル時間がすげー長くなってしまう。

てか、swc 使っても長いんですけど。fcshつかった二回目以降のコンパイルでもおっせぇのでFlexって大変だなぁとか思ったり。

このテストアプリはFlexで作られているけど、テストは普通のAS3クラスに対して行えるので、まぁ一応使えるかなぁと言う印象。

作ってるアプリディレクトリに test.mxml、Test.as を置く感じになるかなぁ。

めんどいなー。誰かがasだけでテストクラス書いてくれるのを待とう。

# 2007-01-11

as2(MTASC) -> as3(Flex2 SDK) の印象

as2もjsコンポーネントとして使うとか変な使いかたしかしていなかったけど、それと比較したas3のぱっと見の印象。

Socketクラス

バイナリ通信用のSocketクラスができたらしい。これはアツイ。

あとas2+XMLSocketのときの1024以上のポートしか通信できないという制限もなくなっているようだ。

正規表現

つかえるーー。//x とかもつかえる

リファレンスはオンラインのみ?

Adobe Flex 2 リファレンスガイド

しかないのかな? 今までのlivedocsと比べるとまぁ許せる範囲だけど。

Flex2 SDK いれた

as3関係スルーしていたけど、なんか公式でFlex2 SDKとか言うのが無償で公開されていてMTASCライクにコマンドラインからas3アプリを作成できる環境があるようなのでためしてみた。@ colinux (Debian etch)

Flex2 SDKはjava製なのでまずJavaのRuntimeを入れる必要がある。

etchにはnon-freeにsun javaが入ってるのでそれを入れる

$ sudo aptitude install sun-java5-jre
Reading package lists... Done
Building dependency tree... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
Building tag database... Done
The following NEW packages will be automatically installed:
  defoma gsfonts gsfonts-x11 java-common libfontenc1 libfs6 libft-perl libttf2 libxext6 libxfont1 libxi6 libxp6
  libxtst6 odbcinst1debian1 sun-java5-bin unixodbc xfonts-encodings xfonts-utils xutils xutils-dev
The following NEW packages will be installed:
  defoma gsfonts gsfonts-x11 java-common libfontenc1 libfs6 libft-perl libttf2 libxext6 libxfont1 libxi6 libxp6
  libxtst6 odbcinst1debian1 sun-java5-bin sun-java5-jre unixodbc xfonts-encodings xfonts-utils xutils xutils-dev
0 packages upgraded, 21 newly installed, 0 to remove and 0 not upgraded.
Need to get 36.5MB of archives. After unpacking 96.5MB will be used.
Do you want to continue? [Y/n/?]

X関係のパッケージが山のように入って多少なえるけど続ける。

あとは Flex 2 SDK をダウンロードして適当なところに解凍。

$ unzip -d ~/app/flex flex_sdk_2.zip

で、もう使える。

$ ~/app/flex/bin/mxmlc -help
Adobe Flex Compiler (mxmlc)
Version 2.0.1 build 155542
Copyright (c) 2004-2006 Adobe Systems, Inc. All rights reserved.

Page 1 of 1: 1