用户操作
[即时聊天] [发私信] [加为好友]
不会飞的鱼ID:isaaq
18032次访问,排名6636好友75人,关注者71
以前做过程序员,
也做过项目经理,
还做过技术总监,
目前在做总经理。
isaaq的文章
原创 29 篇
翻译 2 篇
转载 1 篇
评论 17 篇
不会飞的鱼的公告
本博客文章可以任意转载
转载时请标明原始出处和作者信息
谢谢合作
最近评论
isaaq:如果想弄明白ABC code和OP code先看看Tamarin系列的其他文章吧
jix:如果不引入就不能操作页面元素了,过于独立,我很想用类似javascript的eval功能,另外如你所说"
也就是说脚本引擎引入的ABC文件里需要有这个this对应的类的ABC code"我不太明白,如何将this编译为abc code,并引用呢?我看官方也没有这样的例子

还有一个问题关于import的
import mx.controls.Aler……
isaaq:最好不要把大对象传入脚本引擎,脚本引擎主要是灵活方便和动态地执行某些简易方法,其本身功能目前还是十分弱。如果你想把this传入,那么this属于的类必须得是脚本引擎的支持范围之内。也就是说脚本引擎引入的ABC文件里需要有这个this对应的类的ABC code。
如果这样的话,就是把这个类编译为ABC code再加入到引擎中,这样反而不是很灵活了
jix:可以看出Util.print来自eval外部,但是测试通过,说明eval脚本引擎可以与外部类和方法进行沟通。

请问如何将this传给eval
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"……
nhconch:有意思!
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 [tamarin系列之6] tamarin外篇---As3Eval收藏

    新一篇: [tamarin系列之7]客户端脚本引擎axscript | 旧一篇: [tamarin系列之5] 植入本地方法实现

    1、As3Eval简介

        这是一个由Tamarin衍生出的as3库,作者把Tamarin的思想融合到了as3的库中。支持as3和ES4两种格式的动态编译、运行,有AS3来解释AS3或ES4,是不是很神奇呢?

       这是一个不折不扣的AS3写的AS3脚本引擎。可以编译很多AS3代码,包括类、方法等。同时也可以融合JS和abc文件,进行多方面编程。

        这里是DEMO。此库提供在线源码源码下载,还提供编译好的SWC组件

     

     2、简单测试As3Eval

          首先我们新建一个Script类

    package util.script {     import com.hurlant.eval.ByteLoader;     import com.hurlant.eval.Debug;     import com.hurlant.eval.Evaluator;     import com.hurlant.test.ILogger;          import flash.utils.ByteArray;     public class Script     {                  public function eval(src : String) : void {             var evaluator:Evaluator = new Evaluator                                                    var bytes:ByteArray = evaluator.eval(src);                                                    ByteLoader.loadBytes(bytes);         }              } }

    这样,我们就可以使用动态的脚本来工作了

    比如令var str : String = "function test() : String {" + "return 'test';  " +"};";

     然后new Script().eval(str);

    这样我们就eval了这个test方法

    3、自定义外部方法

    之后我们可以建立一个实现类,为了方便,我们选择在顶层包建立

    package {     public class Util     {         public static function print(str : String):void {             trace(str);         }     } }

    然后我们来扩展实现这个test

    new Script().eval(str + "  var temp =  test();  Util.print(temp)");

    就相当于

    function test() : String {     return 'test'; } var temp = test(); Util.print(temp);

    可以看出Util.print来自eval外部,但是测试通过,说明eval脚本引擎可以与外部类和方法进行沟通。

    =========================================

    那么还等什么,为脚本引擎发愁的各位,尽情地发挥自己的想象,享受动态脚本带来的好处吧。

    关于深入as3eval,请继续关注tamarin系列文章

    发表于 @ 2008年04月27日 12:27:00|评论(loading...)|收藏

    新一篇: [tamarin系列之7]客户端脚本引擎axscript | 旧一篇: [tamarin系列之5] 植入本地方法实现

    评论

    #jix 发表于2008-09-19 14:59:40  IP: 192.193.245.*
    可以看出Util.print来自eval外部,但是测试通过,说明eval脚本引擎可以与外部类和方法进行沟通。

    请问如何将this传给eval
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="absolute">
    <mx:Script>
    <![CDATA[
    public function test2(){
    Alert.show("test2");
    }
    public function eval(src : String):void{
    var evaluator:Evaluator = new Evaluator;
    var bytes:ByteArray = evaluator.eval(src);
    ByteLoader.loadBytes(bytes);
    }
    ]]>
    </mx:Script>
    src="function test():void{test2();}; test();"
    不能调用到test2()

    期待回复
    #isaaq 发表于2008-09-19 15:10:29  IP: 119.119.63.*
    最好不要把大对象传入脚本引擎,脚本引擎主要是灵活方便和动态地执行某些简易方法,其本身功能目前还是十分弱。如果你想把this传入,那么this属于的类必须得是脚本引擎的支持范围之内。也就是说脚本引擎引入的ABC文件里需要有这个this对应的类的ABC code。
    如果这样的话,就是把这个类编译为ABC code再加入到引擎中,这样反而不是很灵活了
    #jix 发表于2008-09-19 17:19:25  IP: 192.193.245.*
    如果不引入就不能操作页面元素了,过于独立,我很想用类似javascript的eval功能,另外如你所说"
    也就是说脚本引擎引入的ABC文件里需要有这个this对应的类的ABC code"我不太明白,如何将this编译为abc code,并引用呢?我看官方也没有这样的例子

    还有一个问题关于import的
    import mx.controls.Alert;
    public class Example{
    function Example(){
    test();
    }
    function test():void{
    Alert.show("test success");
    }
    }
    new Example();
    import mx.controls.Alert
    可以,输出test success
    但是import flash.display.Sprite,则会找不到Sprite

    搞不太明白as3eval如何编译的

    我试着输出this 为[gloabl object],不知道应该如何与其它类交互
    #isaaq 发表于2008-09-19 18:09:47  IP: 119.119.63.*
    如果想弄明白ABC code和OP code先看看Tamarin系列的其他文章吧
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 不会飞的鱼