据我了解,ActionScript主要用于控制Flash网站上的图形输出:例如基于Flash的游戏。
但是,我希望ActionScript能够执行与图形输出无关的任务。出于浏览器兼容性原因,任务更适合ActionScript:例如文件上载。
因此可以使用ActionScript而不是JavaScript来完成JavaScript无法完成的任务,例如文件上传吗?
以下是否可能?
我想知道,如果ActionScript可以做我想做的事。
我将有一张正确的电话功能图片。
答案 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嵌入代码中一些简单的例子:
<强> 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:none
或visibility
(css),因为闪存未执行或行动较慢。要确保它继续运行,请将其position:fixed
(css)放在页面的某个角落或其他位置。浏览器使flash对象在屏幕外或非活动时(即在非活动选项卡中)以某种睡眠模式(较慢)运行