我想问一下ActionScript 3是否有一个liveconnect等效项。我知道AS3中有ExternalInterface类,但它只支持按名称调用方法。 Java和LiveConnect非常酷的一点是,您可以执行类似
的操作function jsFunc(name) = {
this.name = name;
this.talk = function(){
alert('hello world my name is ' + this.name);
}
}
javaapplet.function(new jsFunc("bob"));
以上接近伪代码,因为我从未测试过,但我已经看到了它的实际应用。在AS3中,虽然我能够将一个JavaScript“对象”的实例传递给AS,但它经常被转换为一个ActionScript对象实例,据我所知,它取消了所有的功能。
我看到了JSInterface的一个实现,但我认为它不具体。是否有任何方法可以像使用ActionScript 3一样使用Javascript?
答案 0 :(得分:1)
在Google代码上试用此库: http://code.google.com/p/jsobject/
答案 1 :(得分:0)
ExternalInterface.call("f = function() { alert('Is this like live connect?'); }");
答案 2 :(得分:0)
实际上,主要的使用场景是让JS“对象”与Flex SWF应用程序交互。因此,当JS“对象”想要等待SWF对象中发生的事情时,它会在回调中放入“this”。
经过研究,我以前通过Flex Ajax桥实现这一目标的方式。它可能不是我说出问题的方式的直接答案,但它足以满足我的需要。
基本上我所做的是通过FABridge,在初始化之后,我会将事件监听器附加到对象。
// JS
FlexApp.addEventListeners('flexDidSomething', this.doSomething().bind(this)); //using mootools;
并在Flex中,主要应用程序本身
// AS
dispatchEvent(new CustomCreatedEvent(param1, param2));
在JS函数中,我将访问事件对象的get方法来检索params。
在这种意义上存在紧密耦合,但它至少可以满足我的需要。
希望这有用!
答案 3 :(得分:0)
JSInterface正是为这些事情设计的。