ActionScript 3中类似JSObject的东西?

时间:2009-09-17 08:52:17

标签: javascript actionscript-3

我想问一下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?

4 个答案:

答案 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正是为这些事情设计的。