在游戏中可以考虑数据由javabean保存,逻辑方法由JS提供。

  1. public class Bean4JS {
  2.  
  3. private int id;
  4. private String name;
  5. private int age;
  6.  
  7. public Bean4JS(int id, String name, int age) {
  8. super();
  9. this.id = id;
  10. this.name = name;
  11. this.age = age;
  12. }
  13.  
  14. public int getId() {
  15. return id;
  16. }
  17.  
  18. public void setId(int id) {
  19. this.id = id;
  20. }
  21.  
  22. public String getName() {
  23. return name;
  24. }
  25.  
  26. public void setName(String name) {
  27. this.name = name;
  28. }
  29.  
  30. public int getAge() {
  31. return age;
  32. }
  33.  
  34. public void setAge(int age) {
  35. this.age = age;
  36. }
  37.  
  38. public boolean isAdult() {
  39. if (this.age >= ) {
  40. return true;
  41. }
  42. return false;
  43. }
  44.  
  45. }
  1. import javax.script.ScriptEngine;
  2. import javax.script.ScriptEngineManager;
  3. import javax.script.ScriptException;
  4.  
  5. public class JsUseBean {
  6.  
  7. public static void main(String[] args) {
  8. Bean4JS bean = new Bean4JS(0, "adware", 19);
  9.  
  10. ScriptEngineManager eManager = new ScriptEngineManager();
  11. ScriptEngine engine = eManager.getEngineByName("JavaScript");
  12.  
  13. engine.put("bean", bean);
  14. try {
  15. //这种方式调用js属于直接解析js公式
  16. System.out.println("he is adult?" + engine.eval(getIsAdultScript1()));
  17. System.out.println("he is adult?" + engine.eval(getIsAdultScript2()));
  18.  
  19. //改变bean的某一个属性
  20. engine.eval(getSetSmallerAgeScript());
  21. System.out.println(bean.getAge());
  22. System.out.println("he is adult?" + engine.eval(getIsAdultScript1()));
  23.  
  24. } catch (ScriptException e) {
  25. e.printStackTrace();
  26. }
  27. }
  28.  
  29. private static String getIsAdultScript1() {
  30. return "var age = bean.getAge();" +
  31. "if(age >= 18){flag = true} else {flag = false}";
  32. }
  33. private static String getIsAdultScript2() {
  34. //return "var flag = bean.isAdult();"; //这样是没有返回结果的
  35. return "flag = bean.isAdult();";
  36. }
  37.  
  38. private static String getSetSmallerAgeScript() {
  39. return "bean.setAge(17)";
  40. }
  41.  
  42. }

运行结果:

  1. he is adult?true
  2. he is adult?true
  3. 17
  4. he is adult?false

理想要的效果又进一步了

6.游戏特别离不开脚本(3)-JS脚本操作java(2)(直接解析JS公式,并非完整JS文件或者函数)的更多相关文章

  1. 6.游戏特别离不开脚本(3)-JS脚本操作java(3)(直接操作JS文件或者调用函数)

    java直接运行JS脚本文件的语句,游戏开发时,策划的配置文件什么的就可以分开管理了,游戏逻辑也是一样,比如:一个功能一个脚本或者一个系统一个脚本. import java.io.FileNotFou ...

  2. 6.游戏特别离不开脚本(3)-JS脚本操作java(直接解析JS公式,并非完整JS文件或者函数)

    engine.put("usList", us); engine.put("obj", new JSModifiedJava()) ;  取个变量名就put进去 ...

  3. 6.游戏特别离不开脚本(4)-应该避免将集合框架对象传给JS

    java map  传给 javascript 不是自动关联的,最好别传啊,遍历起来也麻烦(尽量避开集合框架吧),用数组或者自建一个对象.这里虽然有种方法: // build a Map Map< ...

  4. 折腾一两天,终于学会使用grunt压缩合并混淆JS脚本,小激动,特意记录一下+spm一点意外收获

    很长时间没有更新博客了,实在是太忙啦...0.0 ,以下的东西纯粹是记录,不是我原创,放到收藏夹还担心不够,这个以后常用,想来想去,还是放到这里吧,,丢不了..最后一句废话,网上搜集也好原创也罢,能解 ...

  5. 脚本AI与脚本引擎

    Scripted AI and Scripting Engines 脚本AI与脚本引擎 This chapter discusses some of the techniques you can us ...

  6. 建站有很多技术,如 HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、http://ASP.NET、Web Services、浏览器脚本、服务器脚本等。它们的区别是什么?新手一点不懂,想理清所有这些技术之间的关系和应用范围。

    先普及用户通过 浏览器 访问网页 的过程: 网页内容是通过服务器运算得出的结果,将结果(网页代码)传输给浏览器,网页代码再通过浏览器运算(计算.渲染),最终展示在用户的眼前的. 至此,我们知道了有2个 ...

  7. 省市区联动JS脚本

    省市区联动JS脚本 /* ***说明:省市区联动JS脚本 ***作者:Jerry Yuan  */ var province=[{id:0,name:'选择省'},{id:11,name:" ...

  8. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

  9. js脚本语言在页面上不执行

    转换原理:// 编码原理就是创建TextNode节点,附加到容器中,再取容器的innerHTML.(将脚本编码) // 解码原理是将字符串赋給容器的innerHTML,再取innerText或text ...

随机推荐

  1. 解决safari里面淘宝京东页面无法打开以及打开后乱码的问题!

    sqlite3 ~/Library/Keychains/*/ocspcache.sqlite3 'DELETE FROM responses WHERE responderURI LIKE " ...

  2. 【06】sass编译工具(弃)

    [06]编译工具(弃) SASS转译工具 除了使用sass命令来转译SASS文件之外,还可以借助第三方工具完成,目前世面上较为流行的转译工具主要有: Compass.app Scout Codekit ...

  3. hdu3376 Matrix Again

    最大费用最大流 咋写?取个相反数就可以了-- #include <iostream> #include <cstring> #include <cstdio> #i ...

  4. jquery获取ul中li的值

  5. hexo干货系列:(五)hexo添加站内搜索

    前言 本来想用百度站内搜索,但是没成功,所以改用swiftype,用起来还是很棒的,这里分享一下我的安装步骤 正文 注册 去swiftype官网注册个账号,然后登陆,对了不要去在意30天试用,30天过 ...

  6. hihoCoder#1127 二分图三·二分图最小点覆盖和最大独立集

    原题地址 主要是介绍了两个定理: 1. 二分图最大匹配数    = 二分图最小点覆盖数 2. 二分图最小点覆盖数 = 二分图顶点数 - 二分图最小点覆盖数 注意,都是二分图 代码:(匈牙利算法) #i ...

  7. C#中对字符串的加密和解密

    加密: /// <summary> /// 对字符串进行加密 /// </summary> /// <param name="proclaimText" ...

  8. 售货员的难题(codevs 2596)

    题目描述 Description 某乡有n个村庄(1<n<=15),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0<s<1000)是已知的,且A村到B村与B村到A村 ...

  9. js9:设置cookie,读取cookie,删除cookie,保存cookie时间,String,Date对象

    原文发布时间为:2008-11-11 -- 来源于本人的百度文章 [由搬家工具导入] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...

  10. 【git】git分支的合并

    原文: http://gitbook.liuhui998.com/3_3.html http://gitbook.liuhui998.com/5_3.html 一.如何分支的合并 在git中,可以使用 ...