ActionScript:执行非图形操作



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

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

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

以下可能吗?

  • 在HTML按钮按下时运行ActionScript
  • 是否从HTML/JavaScript将信息发送到ActionScript
  • 在ActionScript中处理没有任何图形输出的信息
  • 是否将ActionScript中的信息转换为HTML/JavasScript

我想知道ActionScript是否能实现我的愿望。

我会有一张可以调用的正确函数的图片。

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

使用ExternalInterface时的一些提示:

  • 在html嵌入代码中将allowScriptAccess设置为"始终">
  • 确保flash在你的html代码中有一个id

一些简单的例子:

1.从javascript中获取一个值以闪烁

// 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对象在屏幕外或非活动(即在非活动选项卡中)时以某种睡眠模式(较慢)运行

您不能真正用actionscript替换javascript,但您可以与之交互。

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

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

"在ActionScript中处理没有任何图形输出的信息?"-这是一种编程语言,当然。你在想什么?

"是否将ActionScript中的信息转换为HTML/JavasScript?"-是的,也可以通过ExternalInterface。

最新更新