6.游戏特别离不开脚本(3)-JS脚本操作java(直接解析JS公式,并非完整JS文件或者函数)
engine.put("usList", us);
engine.put("obj", new JSModifiedJava()) ;
取个变量名就put进去
import java.util.ArrayList;
import java.util.List; import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException; public class JSModifiedJava { public void sayHello(String name){
System.out.println("*************Hello***************"+name);
} public static void main(String[] args) { //创建 List对象,并添加3个原用户
List<String> us = new ArrayList<String>();
us.add("JLee 1");
us.add("JLee 2"); //获得JS引擎
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByExtension("js");
String script = "";
//把List对象加入JS引擎
engine.put("usList", us); {//用JS输出java对象的数据
System.out.println("用JS输出java对象的数据");
script = "var index; " + "var usname = usList.toArray(); "
+ "for (index in usname) { "
+ "println('原用户='+usname[index]); " + "}"; //执行脚本
try {
engine.eval(script);// 通过引擎调用getScript()
} catch (ScriptException e) {
e.printStackTrace();
}
} {//JS可以对对象进行修改在,java代码可以得到修改后的
System.out.println("JS可以对对象进行修改在,java代码可以得到修改后的");
script = "usList.add(\"JLee 3\"); "
+ "usList.add(\"JLee 4\"); "; //执行脚本
try {
engine.eval(script);// 通过引擎调用getScript()
} catch (ScriptException e) {
e.printStackTrace();
} //java代码显示被JS修改后所有用户
for (String usname : us) {
System.out.println("所有用户 = " + usname);
}
} //将要操作的对象加入引擎
engine.put("obj", new JSModifiedJava()) ; {//在JS中甚至可以调用对象的方法
System.out.println("在JS中甚至可以调用对象的方法");
script = "obj.sayHello('JLee')" ; //执行脚本
try {
engine.eval(script);// 通过引擎调用getScript()
} catch (ScriptException e) {
e.printStackTrace();
} } // //根据JavaScript名获取一个脚本引擎实例
// ScriptEngine engine2 = manager.getEngineByName("JavaScript");
// try {
// engine2.eval("print('Hello JLee ...')");
// } catch (ScriptException e) {
// e.printStackTrace();
// } } }
执行结果
用JS输出java对象的数据
原用户=JLee 1
原用户=JLee 2
JS可以对对象进行修改在,java代码可以得到修改后的
所有用户 = JLee 1
所有用户 = JLee 2
所有用户 = JLee 3
所有用户 = JLee 4
在JS中甚至可以调用对象的方法
*************Hello***************JLee
6.游戏特别离不开脚本(3)-JS脚本操作java(直接解析JS公式,并非完整JS文件或者函数)的更多相关文章
- 6.游戏特别离不开脚本(3)-JS脚本操作java(3)(直接操作JS文件或者调用函数)
java直接运行JS脚本文件的语句,游戏开发时,策划的配置文件什么的就可以分开管理了,游戏逻辑也是一样,比如:一个功能一个脚本或者一个系统一个脚本. import java.io.FileNotFou ...
- 6.游戏特别离不开脚本(3)-JS脚本操作java(2)(直接解析JS公式,并非完整JS文件或者函数)
在游戏中可以考虑数据由javabean保存,逻辑方法由JS提供. public class Bean4JS { private int id; private String name; private ...
- 6.游戏特别离不开脚本(4)-应该避免将集合框架对象传给JS
java map 传给 javascript 不是自动关联的,最好别传啊,遍历起来也麻烦(尽量避开集合框架吧),用数组或者自建一个对象.这里虽然有种方法: // build a Map Map< ...
- 脚本AI与脚本引擎
Scripted AI and Scripting Engines 脚本AI与脚本引擎 This chapter discusses some of the techniques you can us ...
- 建站有很多技术,如 HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、http://ASP.NET、Web Services、浏览器脚本、服务器脚本等。它们的区别是什么?新手一点不懂,想理清所有这些技术之间的关系和应用范围。
先普及用户通过 浏览器 访问网页 的过程: 网页内容是通过服务器运算得出的结果,将结果(网页代码)传输给浏览器,网页代码再通过浏览器运算(计算.渲染),最终展示在用户的眼前的. 至此,我们知道了有2个 ...
- 省市区联动JS脚本
省市区联动JS脚本 /* ***说明:省市区联动JS脚本 ***作者:Jerry Yuan */ var province=[{id:0,name:'选择省'},{id:11,name:" ...
- js脚本语言在页面上不执行
转换原理:// 编码原理就是创建TextNode节点,附加到容器中,再取容器的innerHTML.(将脚本编码) // 解码原理是将字符串赋給容器的innerHTML,再取innerText或text ...
- Firebug中调试中的js脚本中中文内容显示为乱码
Firebug中调试中的js脚本中中文内容显示为乱码 设置 页面 UFT-8 编码没用, 解决方法:点击 "Firebug"工具栏 中的"选项"---" ...
- 通过easyui tab添加的子页面JS脚本必须放在body才生效
通过easyui tab添加的子页面JS脚本必须放在body才生效 可通过Chrome查看元素时,head标签是否含有你自己写的JS代码
随机推荐
- laravel使用总结(一)
安装 composer create-project laravel/laravel learnlaravel5 --prefer-dist v5.3.* 安装成功之后会自动生成一个key > ...
- python 连接docker
发现15年写过的一小段,先mark一下,后续玩儿起来 import docker c = docker.Client(base_url='unix://var/run/docker.sock',ver ...
- tornado框架基础01-路由简介
tornado 小而精 Django 大而全 Web框架 Tornado是一个由Python开发的Web框架 Web服务 利用Tornado,可以快速搭建和一个高性能的Web服务 非阻塞 Tornad ...
- day16-python之函数式编程匿名函数
1.复习 #!/usr/bin/env python # -*- coding:utf-8 -*- name = 'alex' #name=‘lhf’ def change_name(): name= ...
- 学习PyQuery库
学习PyQuery库 好了,又是学习的时光啦,今天学习pyquery 来进行网页解析 常规导入模块(PyQuery库中的pyquery类) from pyquery import PyQuery as ...
- Go切片的操作
package main import "fmt" //切片的操作 func main() { //创建slice var s []int //zero value for sli ...
- 2017"百度之星"程序设计大赛 - 初赛(A)数据分割
n<=100000条相等/不等关系描述<=100000个数,把这些数据分割成若干段使得每一段描述都出现冲突且冲突只出现在最后一行. 相等关系具有传递性,并查集维护:不等关系根据相等关系进行 ...
- msp430项目编程03
msp430中项目---液晶12864显示 1.液晶12864工作原理 2.电路原理说明 3.代码(静态显示) 4.代码(动态显示) 5.项目总结 msp430项目编程 msp430入门学习
- jquery制作图片瀑布流点击按钮加载更多内容
<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script> ...
- python(4)- 字符编码
一 什么是编码? 基本概念很简单.首先,我们从一段信息即消息说起,消息以人类可以理解.易懂的表示存在.我打算将这种表示称为“明文”(plain text).对于说英语的人,纸张上打印的或屏幕上显示的英 ...