‘flash’ タグのついている投稿

ExternalInterface

2009年9月12日 土曜日

一つ前のエントリで取り上げたlog.asの実装のこの部分。

25
26
27
28
29
30
31
32
33
34
35
36
37
        try {       
          ExternalInterface.call(<><![CDATA[
              (function(obj, klassName) {
               obj.toString = function() { return klassName };
               console.log(obj);
               ;})  
              ]]></>.toString(),
              ObjectUtil.clone(arg),
              getQualifiedClassName(arg)
              );    
        } catch(e:Error) {
          ExternalInterface.call('console.log', r);
        }

ExternalInterface.callの第一引数がなんか見慣れない書式。
なんかオブジェクトつくってtoStringしてる?
調べてみた。

package {
  import flash.display.*;
  public class Hello extends Sprite {
    public function Hello(){
      var hoge:Object = <><![CDATA[
        (function(obj, klassName) {
         obj.toString = function() { return klassName };
         console.log(obj);
         ;})
        ]]></>;
      log(hoge);
      log(hoge.toString()); 
    } 
  }
}

ピクチャ 3
なるほどー。CDATAセクションのみのXMLListオブジェクトつくってtoStringしてるんですね。それにしても変わった書式。

というか、ExternalInterface.callの第一引数、evalしたときに関数になってたら何でもokなんすね。
これならjs,flashの連携が楽にできそ。