+ -
当前位置:首页 → 问答吧 → ExternalInterface.call缓存问题

ExternalInterface.call缓存问题

时间:2010-12-28

来源:互联网

我使用ExternalInterface.call()方法执行页面的JS。但是因为缓存的问题。每次返回的值都是一样的!怎么做才可以防止缓存呢?
AS:
import flash.external.*;

var greeting:String;
var btn:MovieClip = createButton(100, 30, 0xCCCCCC);
btn.onPress = function() {
    greeting = String(ExternalInterface.call("sayHello", "browser"));
    this.mcTxt.text = greeting; // >> Hi Flash.
}

function createButton(width:Number, height:Number, color:Number):MovieClip {
    var depth:Number = this.getNextHighestDepth();
    var mc:MovieClip = this.createEmptyMovieClip("mc_" + depth, depth);
    var mcFmt:TextFormat;

    mc.beginFill(color);
    mc.lineTo(0, height);
    mc.lineTo(width, height);
    mc.lineTo(width, 0);
    mc.lineTo(0, 0);

    mcFmt = new TextFormat();
    mcFmt.align = "center";
    mcFmt.bold = true;

    mc.createTextField("mcTxt", depth, 0, 0, width, height);
    mc.mcTxt.text = "Call JS Function";
    mc.mcTxt.setTextFormat(mcFmt);

    return mc;
}



JS:
<script>
    function sayHello(name) {
        alert(">> Hello " + name + ".");
        return ">> Hi Flash.";
    }
</script>
万分感谢!

作者: v6goodv6good   发布时间: 2010-12-28

AS与JS通信 不会有缓存问题 (当然JS的处理方法和AS一样)

AS与JS通信不推荐使用返回值,因为返回值很多时候会获取失败。

作者: flash023   发布时间: 2010-12-28

谢谢版主!
不用返回值。那我采用SetVariable应该会好很多吧?我没有测试过返回的成功率!
JS:
function  hao(){
   var result=["a","b"]
   window.document.mobileStore.SetVariable("myresult", result);
}

AS:
ExternalInterface.call("hao()");
var cj_result:Array = _root.myresult.split(",");


这样读取数据不知道效率及成功率如何?或者有什么更好的方法提供?

一直担心数据会缓存。而帮助并没有这方面的介绍。

感谢!

作者: v6goodv6good   发布时间: 2010-12-28

我是用互相调用函数来传递的
比如FLASH要从JS中取一个变量 A

先FLASH调用JS中的函数      XXX
JS中在XXX函数中调用FLASH的函数YYY ,调用时把A传递过去 

作者: flash023   发布时间: 2010-12-28

没看明白
第一个例子你js函数里返回的是固定字符串,每次返回本来就应该一样啊

作者: rukey67   发布时间: 2010-12-28

版主的是一种方法!
但是我需要的是传递多个变量。
不知道是否支持多个形参?

就是
先FLASH调用JS中的函数      XXX
JS中在XXX函数中调用FLASH的函数YYY ,调用时把A,B,C,D...传递过去 

作者: v6goodv6good   发布时间: 2010-12-28

yyy(A,B,C,D,N...);

也可以直接传递对象YYY({a:A,b:B,n:N..});

作者: flash023   发布时间: 2010-12-28

现在明白了。我试试看!
感谢版主!

作者: v6goodv6good   发布时间: 2010-12-28