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

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

    public class Bean4JS {
    
        
        private int id;
        private String name;
        private int age;
        
        public Bean4JS(int id, String name, int age) {
            super();
            this.id = id;
            this.name = name;
            this.age = age;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
        
        public boolean isAdult() {
            if (this.age >= 18) {
                return true;
            }
            return false;
        }
        
    }
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;
    import javax.script.ScriptException;
    
    
    public class JsUseBean {
    
        public static void main(String[] args) {
            Bean4JS bean = new Bean4JS(0, "adware", 19);
    
            ScriptEngineManager eManager = new ScriptEngineManager();
            ScriptEngine engine = eManager.getEngineByName("JavaScript");
    
            engine.put("bean", bean);
            try {
                //这种方式调用js属于直接解析js公式
                System.out.println("he is adult?" + engine.eval(getIsAdultScript1()));
                System.out.println("he is adult?" + engine.eval(getIsAdultScript2()));
                
                //改变bean的某一个属性
                engine.eval(getSetSmallerAgeScript());
                System.out.println(bean.getAge());
                System.out.println("he is adult?" + engine.eval(getIsAdultScript1()));
    
            } catch (ScriptException e) {
                e.printStackTrace();
            }
        }
        
        private static String getIsAdultScript1() {
            return "var age = bean.getAge();" +
                    "if(age >= 18){flag = true} else {flag = false}";
        }
        private static String getIsAdultScript2() {
            //return "var flag = bean.isAdult();"; //这样是没有返回结果的
            return "flag = bean.isAdult();";
        }
        
        private static String getSetSmallerAgeScript() {
            return "bean.setAge(17)";
        }
        
        
    }

    运行结果:

    he is adult?true
    he is adult?true
    17
    he is adult?false

    理想要的效果又进一步了

  • 相关阅读:
    Unity场景加载完成回调
    UnityShader 一些算法总结
    Unity ugui 的 Button 组件的 点击、按下、抬起等按钮事件(eventTrigger)
    Unity 鼠标拖拽旋转物体
    JVM
    JVM
    JVM
    JVM
    JVM
    JVM
  • 原文地址:https://www.cnblogs.com/booke/p/3199593.html
Copyright © 2011-2022 走看看