龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

浅析J2ME Snake脚本引擎用法(1)(2)

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
三、J2ME Snake脚本引擎之脚本虚拟机(SVM) 1,虚拟机的执行是基于字节码的,只有一个寄存器_RetVal用来存放返回值,运行时堆栈是用来进行函数调用的大

三、J2ME Snake脚本引擎之脚本虚拟机(SVM)

1,虚拟机的执行是基于字节码的,只有一个寄存器_RetVal用来存放返回值,运行时堆栈是用来进行函数调用的大小默认是512K,可以自己更改比如在低级代码上头部加入关键字SetStackSize1024虚拟机会根据设置来修改堆栈大小

2,和主游戏引擎通信是基于方法调用,需要自己写方法库类,这个类需要继承Lib.class,在自己的方法库中实现方法,考虑到效率,没有通信是没有用到对象,并且也不是基于RTTI机制,所以使用时务必要注意2点,这两点写在测试包里,可以去看一下。

3,错误处理也是考虑到效率没有基于java的异常,而是只打印错印并且虚拟机会正常运行,可是一旦打印出错误,需要做的就是停下运行的程序检查脚本有没有,或者是虚拟机的核心执行单元有没有BUG如果不这样做,那么后面的脚本数据已经成脏数据,会对游戏逻辑造成潜在的危险。

4,多线程:J2ME Snake脚本引擎能加载多个脚本并发执行,并且每个线程有个优先级,优先级高的脚本能分到更多的时间片,SVM来管理这些线程的运行,并且主游戏引擎能方便的操作脚本虚拟机加载,暂停,停止,恢复这些脚本线程。(0.8版提供多线程功能)

5,运行方式:主游戏引擎在while循环中,每次调用虚拟机的runScript(inttime)方法,通过传入时间片来决定虚拟机在这个循环周期运行多长时间,所以脚本里就可以写这样的循环while(true)也就是脚本有自己的逻辑死循环,但是它不会干扰主引擎的逻辑死循环,因为在传入的时间片运行完时,脚本引擎会自动跳出来让主引擎继续运行下一个循环,而这些对编程人员都是透明的。


 

精彩图集

赞助商链接