root/as3/E3Engine/E3Test.as

リビジョン 568, 1.5 kB (コミッタ: gyuque, コミット時期: 7 ヶ月 前)

direct invocation

Line 
1 package
2 {
3         import flash.display.*;
4         import flash.text.*;
5         import e33.*;
6
7         public class E3Test extends Sprite
8         {
9                 private static var theInstance:E3Test;
10                 private var mTxOut:TextField;
11
12                 function E3Test()
13                 {
14                         mTxOut = new TextField();
15                         addChild(mTxOut);
16                         mTxOut.width = 640;
17                         mTxOut.height = 480;
18                         mTxOut.textColor = 0xffffff;
19
20                         if (!theInstance)
21                                 theInstance = this;
22
23                         var src:Array = [
24 "function putline(){ var a=[]; for(var i = 0;i < 50;i++) a.push('-'); trace(a.join('')); }",
25 "function fibo(n, a){",
26 " trace('called fibo('+n+', ['+a.join(',')+'])');",
27 " if (n == 0) {a.push(0); return;}",
28 " else if (n == 1) {fibo(n-1, a); a.push(1); return;}",
29 " fibo(n-1, a);",
30 " a.push(a[a.length-1] + a[a.length-2]);",
31 "}",
32 "function do_test(n){",
33 " putline();",
34 " var fibo_nums = [];",
35 " fibo(n, fibo_nums);",
36 " putline(); trace('result: '+fibo_nums.join('  '));",
37 " return 'OK';",
38 "}"
39                         ]
40
41                         puts( src.join("\n") );
42
43                         var lx:Scanner = new Scanner(src.join("\n"));
44                         var psr:Parser = new Parser(lx);
45                         var bc:Array = psr.parse();
46                         var vm:VirtualMachine = new VirtualMachine();
47                         vm.setByteCode(bc);
48
49                         vm.getGlobalObject().trace = puts;
50                         vm.execute();
51
52                         var rval:Object = vm.invokeScriptFunction("do_test", [10]);
53                         puts("retval: " + rval);
54                 }
55
56                 public static function puts(s:*):void
57                 {
58                         if (s == null)
59                                 theInstance.mTxOut.appendText("(null)\n");
60                         else
61                                 theInstance.mTxOut.appendText(s+"\n");
62                 }
63         }
64 }
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。