カンタンに固定IPでテスト

クライアントによってはIP制限をかけているため、テストサーバに固定IPでアクセスしなければいけない場合がある。そこで仕事仲間のSくんから教えてもらったのがコレ。


VPNサーバをトンネリングすることで、固定IPにするようです。月額1,000円で初期費用も不要なので、一時的に使うのに便利。早速重宝しています。丁度最大二ヶ月無料キャンペーン中でラッキー(笑)。

AS3.0でWebServiceを使う

AS3.0にはFlash Remotingも見つからないし、必要に迫られて探してみたら見つかりました。Flex SDKのライブラリとSWCにパスを通して、FlashCS4でFlex Webservice componentを使えるようにしてやればいいようです。これでmx.*クラスが使えます。関連リンクを備忘録として記します。


上記2つ目と3つ目は同じビデオですが、3つ目には動作可能なサンプルflaファイルがあります。目的のWebServiceでも動作確認済みです。[OSX10.5.8+FlashCS4]

    OSXでパケットキャプチャ

    OSXでパケットキャプチャ(パケットニスファ)できそうなソフトを物色。今まではWindowsで横取り丸InetSpyを使ってたけど、Windowsマシンの調子相変わらず悪いので、この際OSXでやろうかと。で探したのが・・・

    Wiresharkはアプリで、他の2つはFirefoxのアドオン。使った感じではHttpFoxが個人的には一番よさそう。パケットの中身だけチェックできればいいし、画面も見やすい。何よりアドオンは導入がカンタン。

    Wiresharkはターミナル使ったり、インストールが面倒。
    下記のサイトにお世話になりました。
    ウチはLepard(10.5.8)だけど、この手順でOKでした。

    Timer()で発生する誤差

    Timerクラスを使ってのインターバル処理で音を鳴らしていたら、間隔を縮めていくとタイミングがずれてきた。ググってみると、やっぱり起こるらしい。以下、関連リンク。


    ていたら、間隔ミリ秒単位の(なるべく)正確な制御は、やっぱりgetTimer()とEvevt.ENTER_FRAMEの方がいいのかな?

    Arrayの落とし穴(1) – Array.sort()

    表示リストのindexをArrayで管理していて、はまった罠。
    var list:Array = [7,8,9,10]
    list.sort()
    trace(list)
    —10,7,8,9
    var list:Array = [7,8,9,10]
    list.sort(Array.NUMERIC)
    trace(list)
    —7,8,9,10
    Array.sort()ってデフォルトだと文字扱いでソートになるのね。いつもインスタンス名とかでsortするときは、必ず「mc00」「mc01」とか文字列(主にインスタンス名など)に使ってて、あまり数値そのもののソートをしたことないってことか…。お恥ずかしい話でした(^^;。
    ※一応、カテゴリをAS3.0にしているけど、AS2.0でも同じです。
    [追記]2011.5.10
    Arrayについて整理するため、カテゴリを追加してタイトルも変更しました。

    グローとグラデーショングロー

    ある人に「MovieClipに選択表示の枠線つけるのってどうすればいいか?」と聞かれて、「フィルタでやればいいのでは?」といっていろいろいじってたときに発見。プロパティタブにあるフィルタは「グラデーショングロー(GradientGlowFilter)」だけど、スクリプトにはそれとは別に「グロー(GlowFilter)」があったのね。何でプロパティパネルにないんだろう?

    で、あるサンプルを見て単にnewしてるだけで不思議に思ったら、コンストラクタに初期値があるんですね。値を設定しないで使うという発想がなかったので、気づかなかった。
    で、枠線をつけるためのスクリプトサンプルはこちら。ちなみにグローとグラデーショングローでは、色、アルファ値のプロパティ名が微妙に違いますのでご注意。これはグローを使っています。

    btn_glow.addEventListener(MouseEvent.CLICK, onSetFilterglow);
    function onSetFilterglow(event:MouseEvent):void {
    //—枠線設定(グロー)
    var c:uint=0x00FF00;
    var a:Number=1;
    var bX:Number=6;
    var bY:Number=6;
    var st:Number=10;
    var filterglow:GlowFilter=new GlowFilter(c,a,bX,bY,st);

    //枠線適用
    mymc.filters = [filterglow];
    }