2013-05-17 77 views
0

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

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

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

在此先感谢您的帮助!

+0

为什么外部接口不适合你?外部接口是用于在ActionScript和JavaScript之间进行通信的标准方法。 –

+0

@ net.uk.sweet,说实话我不知道如何使用'ExternalInterface()'调用Extjs函数。你有什么样的例子吗?正如我所说,调用普通的JS函数非常简单,但我不知道如何调用extjs之一。 –

回答

1

我不知道详细ExternalInterface的方法,但使用Ext.define你简单地定义一个JavaScript对象(因为它是一个单身人士)与你的方法。因此JavaScript,你可以简单地调用

utils.alert('Hello World'); 

所以它不应该有可能使用以下简单的通话

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

嗯,那有效。我的错,我不尝试最简单的方法。谢谢! :) –

1

我不知道ExtJS的,但documentation指出Application类设置了一个全局变量与您的应用程序的名称。如果向该类添加公共方法,则应该使用ExternalInterface(请参阅docs)从Flash中调用该方法,这是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'); 
+0

应用程序设置了全局变量,但事实并非如此。但是,就我而言(使用define而不是应用程序),这种方法也适用。 –