我在AS端注册了ExternalInterface.addCallback("setVar",onSetVar);这么一个JS回调函数HTML里面的flash代码如下
<object type="application/x-shockwave-flash" data="testCS4_1.swf" width="150" height="69" id="test">
<param name="movie" value="testCS4_1.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="wmode" value="window" />
<param name="scale" value="showall" />
<param name="menu" value="true" />
<param name="devicefont" value="false" />
<param name="salign" value="" />
<param name="allowScriptAccess" value="sameDomain" />
</object>JS代码如下:<script>
var flash_ad=new Array();
flash_ad["obj0"]=new Array();
flash_ad["obj1"]=new Array();
flash_ad["time"]=8000;
flash_ad["gotype"]="_blank";
flash_ad["obj0"]["res"]="./tempdhf1.swf";
flash_ad["obj0"]["goto"]="http://www.baidu.com";
flash_ad["obj1"]["res"]="./tempdhf2.swf";
flash_ad["obj1"]["goto"]="http://www.google.com";
document.getElementById("test").setVar(flash_ad);
</script>
现在报错说:serVar不是一个函数。悲剧啊!!!

解决方案 »

  1.   

    ExternalInterface.addCallback("setVar",onSetVar,setVar);function setVar(args){
      ...
    }
      

  2.   

    private function onSetVar(obj:Object):void
    {
    timeDelay = obj.time;
    gotype = obj.gotype;

    for (var i:int=0; i< 2; i++)
    {
    var obj:Object = new Object();
    obj.res  = String(obj["obj"+i].res);
    obj.goto = String(obj["obj"+i].goto);
    urlArr.push(obj);
    }

    firstLoader.unload();
    var urlReq:URLRequest = new URLRequest(urlArr[0].res);
    firstLoader.load(urlReq); urlReq = new URLRequest(urlArr[1].res);
    secendLoader.load(urlReq);
    }在AS里这个函数。在接收处理JS传递过来的值
    1楼的兄弟,能稍微说明白一点么??对AS我也怎么了解
      

  3.   


    <param name="allowScriptAccess" value="sameDomain" />
    改成:
    <param name="allowScriptAccess" value="always" />
    你用什么浏览器测试的?
      

  4.   

    as:
    function callMe(name:String):String
    {
        return "busy signal";
    }
    ExternalInterface.addCallback("myFunction", callMe);js:
    <script language="JavaScript">
        // callResult gets the value "busy signal"
        var callResult = flashObject.myFunction("my name");
    </script>html:
    <object id="flashObject"...>
        ...
        <embed name="flashObject".../>
    </object>按以上三步来应该不会有问题
      

  5.   

    4399某Flash游戏的Flash传值。:
    var site = {
    "4399uid":"7863"
    ,"userid":"131"
    ,"username":"mysql3306"
    ,"currurl":""
    ,"cztype":0
    ,"IsTransferScene":0
    ,"openTreasureStragety":1
    ,"isUpdataVersion":1
    ,"preventWallowTime":1000
    ,"timestamp":"1297686846"
    ,"serverid":"S26"
    ,"SourceURL":"http:\/\/yjjh26-s.my4399.com:8080\/"
    ,"AccSocketIP":"yjjh26-s.my4399.com"
    ,"AccSocketPort":"8846"
    ,"swfver":"201102146245"
    ,"rooturi":"\/"};   var swfurl = 'http://****.my4399.com:8086/GameLoader.swf?v=201102146245';
    var so = new SWFObject(swfurl, "flashobj", "1000", "580", "9", "#000000");
    so.useExpressInstall('expressinstall.swf');
    for(var i in site){
      so.addVariable(i,site[i]);
      }
    so.addParam('allowScriptAccess','always');
    so.write("flashobjdiv");