Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 ActionScript 3-动态编写函数_Actionscript 3_User Defined Functions_On The Fly - Fatal编程技术网

Actionscript 3 ActionScript 3-动态编写函数

Actionscript 3 ActionScript 3-动态编写函数,actionscript-3,user-defined-functions,on-the-fly,Actionscript 3,User Defined Functions,On The Fly,我正在寻找以下JavaScript代码的AS3等价物: var funcName = "foo();" var fHandler = new Function("a",funcName + "return a + 1"); fHandler // now equals a function like function(a){ foo(); return a + 1 } 好的,这是一个非常简单的例子 更大的图景是: 我有一个与JavaScript客户端一起工作的服务器。此服务器给出的每个响

我正在寻找以下JavaScript代码的AS3等价物:

var funcName = "foo();"
var fHandler = new Function("a",funcName  + "return a + 1"); 

fHandler // now equals a function like function(a){ foo(); return a + 1 }
好的,这是一个非常简单的例子

更大的图景是: 我有一个与JavaScript客户端一起工作的服务器。此服务器给出的每个响应都是对JavaScript函数的回调,提供服务器响应的参数

因此,它不使用combersome strict JSON协议(在属性名称周围加引号,不要求这样的引号是有效的对象文字,等等,在AS3中仍然是有效的对象文字的其他一些小差异),并且服务器已经实现了100多个API

然而,现在有一个为移动设备生成Air客户端的请求

如果我能做到以下几点,那就太好了。 它是有效的EMCA脚本,但不适用于AS3

public function responseFromServer(String:s){
    s = chopCallbackWrap(s); //strips the 'myCallback(' and ')' parts
    //s is now always a string describing a valid Object-Literals not necessarily JSON
    return new Function("", " return " + s ) ();
}
另一个方面是使用从服务器实时分发的通用客户端算法进行处理


在AS3中怎么做?

这在AS3(或2)中是不可能的,因为运行时中没有内置脚本编译器(意味着AS3程序中没有AS3代码的动态解释)。也没有eval函数(或者更确切地说,它不做javascript eval所做的事情)


您可能需要为flash版本制作另一个API,或者以某种方式插入外部javascript引擎。

这在AS3(或2)中是不可能的,因为运行时中没有内置脚本编译器(这意味着AS3程序中没有对AS3代码的动态解释)。也没有eval函数(或者更确切地说,它不做javascript eval所做的事情)


您可能需要为flash版本制作另一个API,或者以某种方式插入外部javascript引擎。

我看到了两种解决方案:

首先是在运行时使用所需的脚本创建新的swf文件,并将其加载到
Loader.loadBytes()

我建议您检查此库,并。我没有使用它们的经验,但它们都可以在运行时创建和发布swf(可能有些不支持在已发布的swf中编写脚本,所以这是一项实验任务)

第二个是通过
ExternalInterface
执行JS,并在as3中使用结果


UPD:为AS3-增加一个AS2
eval
模拟库。

我看到了两种解决方案:

首先是在运行时使用所需的脚本创建新的swf文件,并将其加载到
Loader.loadBytes()

我建议您检查此库,并。我没有使用它们的经验,但它们都可以在运行时创建和发布swf(可能有些不支持在已发布的swf中编写脚本,所以这是一项实验任务)

第二个是通过
ExternalInterface
执行JS,并在as3中使用结果


UPD:AS2
eval
模拟AS3-。

感谢您提供的信息-非常好。它可以用于第一个场景-我们将研究它。至于另一个——在iPhone air编译中加载更多的SWF不会暴露它的功能,只会显示图形(或者我做错了什么吗?)是的,由于iOS for air,它在iOS下无法工作。谢谢你提供的信息——这太棒了。它可以用于第一个场景-我们将研究它。另一方面,在iphoneair编译中加载更多的swf不会暴露它的功能,而只会显示图形(或者我做错了什么吗?)是的,由于iOS for air,它在iOS下无法工作。