1

我正在尝试从 actionscript 调用 javascript 函数。

截至目前,我正在使用“ExternalInterface”并且可以取得部分成功。

我可以调用函数(没有任何范围解析),例如“scanDNA()”,这对所有人都是可见的。但我无法调用像“Eukarya.Animalia.Chordata.Vertebrata.Gnathostomata.Tetrapoda.Mammalia.scanDNA()”这样的函数(指定范围)。

请让我知道,我怎样才能做到这一点。

谢谢并恭祝安康,

萨钦贾达夫。

4

3 回答 3

0

我从来没有注意到这有什么问题。您的 javascript 范围结构是如何设置的?

也许在 ExternalInterface 调用中省略“()”可以解决问题..

如果我做

var animals = {}
animals.mammals = {}
animals.mammals.test = function() {
  return "whee";
}

并在闪存中(CS4)

var x:String = ExternalInterface.call('animals.mammals.test');
trace(x);

我得到正确的结果。

于 2009-11-05T12:27:30.367 回答
0

使用 javascript 伪协议效果很好。

于 2009-11-17T10:43:36.663 回答
0

在 JS 中创建一个方法来调用函数怎么样?

function scanDNAinSomeScope(){
    Eukarya.Animalia.Chordata.Vertebrata.Gnathostomata.Tetrapoda.Mammalia.scanDNA();
}

scanDNAinSomeScope使用ExternalInterface.

更新:

是的,在这种情况下,您需要为每个范围创建一个函数。但是,您实际上只为需要调用的函数创建。我相信不会有很多情况下您需要从 Flash 调用不同范围的函数。

还有一种解决方法,使用 JS 函数,例如:

function evil(str){
    eval(str);
}

这可能是一个安全漏洞。但我不是安全专家,所以我不知道它实际上有什么问题......我只知道“eval 是邪恶的”:P

于 2009-10-23T12:44:27.563 回答