Hatena::Groupsubtech

#生存戦略 、それは

-> 07 { 02 / 19 }

AS3 でどこからでも log();

17:13 | はてなブックマーク - AS3 でどこからでも log(); - #生存戦略 、それは

ちょさんの log 関数を持ってきてどこかに log.as という名前で保存

Object#inspect ぽくして表示するようにした

package {
  import flash.external.ExternalInterface;
  import flash.utils.getQualifiedClassName;

  public function log(... args):void {
    var inspect:Function = function(arg:*, bracket:Boolean = true):String {
        var className:String = getQualifiedClassName(arg);
        var str:String;

        switch(getQualifiedClassName(arg)) {
            case 'Array':
              var results:Array = [];
              for (var i:uint = 0; i < arg.length; i++) {
                  results.push(inspect(arg[i]));
              }
              if (bracket) {
                str = '[' + results.join(', ') + ']';
              } else {
                str = results.join(', ');
              }
              break;
            case 'int':
            case 'uint':
            case 'Number':
              str = arg.toString();
              break;
            case 'String':
              str = arg;
              break;
            default:
              str = '#<' + className + ':' + String(arg) + '>';
        }
        return str;
    }

    var r:String = inspect(args, false);
    trace(r)
    ExternalInterface.call('console.log', r);
  }
}

その log.as が置いてあるところを flex-config.xml の source-path に追加

      <source-path>
        <path-element>/home/gorou/svn/flex2/libs</path-element>
      </source-path>

その後普通に log() 関数をを使ってコンパイル(import の必要なし)で使えるように。

fublogfublog2007/02/19 12:05すいません、アーカイブは置いておきました。アップデートできなかった理由は分かりませんが、バージョンを見ているわけではないので、古いのを置いておいても更新可能なわけではありません。up2date/rss.*を削除すると全て最新化できます。

secondlifesecondlife2007/02/19 12:16up2date/rss.* を削除して最新化できました。
ありがとうございます。

nitoyonnitoyon2007/02/21 01:55> AS3 で Singleton
完全 singleton にするなら
public function Singleton()
{
if(__instance)
{
throw new ArgumentError("");
}
}
とするのがお薦めです。

AS3 のコンストラクタは private にできないのが悲しいところです。

secondlifesecondlife2007/02/21 13:47oh, そうですね>シングルトン
コンストラクタの存在をすっかり忘れてました。