ActionScript:执行非图形操作

时间:2012-09-16 10:05:34

标签: actionscript-3 web-applications file-upload actionscript

据我了解,ActionScript主要用于控制Flash网站上的图形输出:例如基于Flash的游戏。

但是,我希望ActionScript能够执行与图形输出无关的任务。出于浏览器兼容性原因,任务更适合ActionScript:例如文件上载。

因此可以使用ActionScript而不是JavaScript来完成JavaScript无法完成的任务,例如文件上传吗?

以下是否可能?

  • 在HTML按钮上运行ActionScript按?
  • 从HTML / JavaScript向ActionScript发送信息?
  • 在ActionScript中没有任何图形输出的处理信息?
  • 从ActionScript到HTML / JavasScript的Ouptut信息?

我想知道,如果ActionScript可以做我想做的事。

我将有一张正确的电话功能图片。

2 个答案:

答案 0 :(得分:1)

你无法用动作脚本替换javascript,但你可以与它进行交互。

“在HTML按钮上运行ActionScript按?” - 是的,这可以通过ExternalInterface.registerCallback来实现。但是,许多操作(iirc,打开文件浏览器)只能在flash中的用户交互中完成,因此您需要一个flash按钮。

“从HTML / JavaScript向ActionScript发送信息?”也可以通过externalInterface或flashvars(但仅在启动时)。

“在ActionScript中没有任何图形输出的情况下处理信息?” - 这是一种编程语言,所以肯定。你有什么想法?

“从ActionScript到HTML / JavasScript的Ouptut信息?” - 是的,也可以通过ExternalInterface。

答案 1 :(得分:1)

ExternalInterface是你的朋友: http://help.adobe.com/nl_NL/Flash/CS5/AS3LR/flash/external/ExternalInterface.html

使用ExternalInterface时的一些提示:

  • allowScriptAccess设置为"始终"在html嵌入代码中
  • 确保Flash在您的html代码中有一个ID

一些简单的例子:

<强> 1。从javascript获取值到flash

// actionscript 3 code
if (ExternalInterface.available)
{
  var url:String = ExternalInterface.call("document.location");

  // output to textfield
  var t:TextField = new TextField();
  addChild(t);
  t.text = url;
}

<强> 2。使用flash中的参数调用函数

// actionscript 3 code 
if (ExternalInterface.available)
{
   var result:String = "Flash rocks"
   ExternalInterface.call("alert", result);
}

第3。从javascript调用带参数的函数到Flash:

// javascript
window.onLoad = function()
{
   document.getElementById('flashId').doSomething("javascript rocks");
}

..和

// actionscript 3

if (ExternalInterface.available)
{
   ExternalInterface.addCallback("doSomething", handleSomethingFromJavascript);// links js function to as3 function
   function handleSomethingFromJavascript(value:String):void
   {
      // output to textfield
      var t:TextField = new TextField();
      addChild(t);
      t.text = value;
   }
}

你可以在flash和javascript之间做很多事情,因为你可以看到整合几乎是无痛的!唯一需要注意的是,在Flash中,ExternalInterface不可用,因此您必须在浏览器中进行测试。您可以使用wmode="transparent"创建透明Flash对象。您不能使用display:nonevisibility(css),因为闪存未执行或行动较慢。要确保它继续运行,请将其position:fixed(css)放在页面的某个角落或其他位置。浏览器使flash对象在屏幕外或非活动时(即在非活动选项卡中)以某种睡眠模式(较慢)运行