从动作脚本中调用ExtJS函数

时间:2013-05-17 13:21:35

标签: javascript flash extjs actionscript

我想知道是否可以从动作脚本调用ExtJS函数?
例如,我们在ExtJS上编写了以下代码:

Ext.define('utils', {
    singleton : true,
    alert : function (message) {
            Ext.MessageBox.alert(Ext.locale.error, message);
    }
});  

可以从动作脚本中调用吗?我知道可以使用ExternalInterface()调用普通的java脚本函数,但它不适合我。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我不知道Extjs,但是documentation表示Application类设置了一个带有应用名称的全局变量。如果您向该类添加公共方法,则应该可以使用ExternalInterface从Flash中调用它(请参阅docs),这是在Flash和JavaScript之间进行通信的标准方法。

<强> EXTJS:

Ext.application({
    name: 'MyApp',
    launch: function() {
        Ext.create('Ext.container.Viewport', {
            items: {
                html: 'My App'
            }
        });
    },
    // Public method to receive external interface calls from Flash
    alert: function(message) {
        // Call alert method on utils
    }
});

<强>的ActionScript:

ExternalInterface.call('myApp.alert', 'Hello JavaScript. Love from Flash');   

答案 1 :(得分:1)

我不太详细了解ExternalInterface方法,但是使用Ext.define只需使用给定的方法定义一个javascript对象(因为它是一个单例)。所以在javascript中你可以简单地调用

utils.alert('Hello World');

所以不应该使用以下简单的调用

ExternalInterface.call('utils.alert', 'Hello World');