您当前的位置:首页>攻略问答>经验> GM相关 > GM中脚本及API的设置和使用方法

GM中脚本及API的设置和使用方法

发布时间:2016-03-22 来源:未知 作者:ZWW
 
 
在动作库中可以直接通过执行代码动作写一段代码,这里的代码和脚本资源的区别在于执行代码动作里的代码没有名称且没有参数,并且仅在当前应用对象中执行不能重复调用。
GameMei里的脚本是一段用javascript语言写的代码,通常用来实现一些比较复杂的游戏逻辑。脚本可以调用参数(就像编程语言里的函数)。你可以通过脚本动作或者是代码去调用脚本。执行代码和执行脚本的区别是否要传参和预先设置。
在执行脚本动作中可以选择想要执行的脚本,并设置脚本需要用到的参数(最多支持5个),你也可以在任意代码内执行脚本。定义脚本可以通过点击资源树脚本目录右侧添加按钮,打开编辑脚本窗口。如下:
 
点击保存按钮保存当前的改动。可以撤消和重做上一步的键入。在名称框内给脚本起一个名字。在脚本编辑器里代码是有颜色识别的,可以自动识别出代码中的关键词,数值等。
 
关于脚本,这里不得不提到API文档功能,GameMei是一款不写代码的可视化游戏开发引擎,虽说不用写代码,但也不会阻挡代码人的创作热情。在GameMei,我们既可以通过鼠标操作或套用模板来开发游戏,又可以通过代码来为游戏增添无限的创意。
 
API文档是GM所支持的JavaScript代码的介绍,通过上面的这些代码,我们就可以编写脚本,通过脚本再来实现各种各样的游戏效果。以此来完善GameMei暂时还没实现的功能,GameMei兼收并蓄的品质会让GameMei在开发游戏上日渐完善~~  
 
API代码里的每行代码都能实现一定的功能,具体的功能效果就是我们GameMei的事件动作,对于会代码的开发者来说,会很快学习使用。
 
1) 系统
(1)数据
2)游戏
3)类
(1)QyObject
(2)QyPagecontainer.getPage
 
1) 系统
(1)数据
转xml为json格式
1、qyengine.ajax(url,setting,actionlistName) 通过HTTP请求加载远程数据
ajax是用来通过HTTP请求加载远程数据
Url 为服务器地址,加载数据的目的地;
Setting 为一系列方法,一般包括这些参数: {method: 'get/post',result: 'text/json',data: {}},可以获取服务器的:method请求方式get或post(暂时只支持get方式,下周将添加post方式)
result: 服务器返回的数据格式(json或者text),默认是text;data: 需要发送到服务器的参数;
actionlistName为GameMei中添加的动作序列的名称,如actionlist_1;
2、qyengine.xmlToJson(xmlText) 把xml格式文件转换为json格式
这个比较容易理解,就是在GM引擎中,把括号里的xmlText转为json格式
下面就来结合例子说明:
首先,在GameMei后台新建个文件并做成一个访问链接去模拟服务器;
链接地址为:http://zuoyouxi.gamemei.com/tlird_qiyun/data/xml
然后在场景中添加鼠标按下事件,执行代码:
qyengine.ajax("http://zuoyouxi.gamemei.com/tlird_qiyun/data/xml", "actionlist_1") 这里面只有两个数据,一个是访问链接,一个是动作序列名,其他的方法都省略,它将会在访问链接之后返回一个参数给动作序列actionlist_1;
然后我们设置动作序列actionlist_1;
为动作序列添加个参数,叫ret,用来接收从链接中传来的参数;
 
所以我们这通过qyengine.xmlToJson(ret.data)把获取到的ret的数据格式转换一下再赋给变量users;   
然后展示就获取到了json格式的访问数据;
 
转json为xml格式:
qyengine.jsonToXml(json):将json格式数据转为xml格式,上个礼拜我们也更新了,xml转为json的方法,这里举了个例子,先定义一段json格式的代码,然后调用这个转换公式,最后把转换格式后的代码打印在控制台(按F12进入console);
 
这里在GM中实现:创建事件下执行这段代码,这段代码就是一个定义json文本的代码,然后预览时打开控制台(F12)会看到结果;
 
在控制台展示的就是转换过格式的代码;

 
3)类
  (1)QyObject
  (2)QyPagecontainer.getPage()
 
 
QyObject
object.listen(MonitorEvent):为对象注册监听事件;
这个事件可以自定义名称,这里相当于一个函数名,加上下面括号里的动作,就是一个函数预设;括号{}里面可以自己定义动作,如下面的console.log(‘事件执行’),它就是一个在控制台打印“事件执行”这四个字的动作,但此时不会打印;在场景创建时就执行这段代码,后面就可以拿来用;
 
2、object.dispatchEvent(MonitorEvent):执行对象的监听事件;
为对象注册监听事件之后并不会产生任何的效果,但实质上已经有一个关系(事件“动画结束”与控制台打印)存在,而object.dispatchEvent(‘动画结束’)就是来执行监听事件下的动作(console.log(‘事件执行’))的;于是,立马在控制台打印“事件执行”这四个字;
 
 
 
用这两个命令来举例说明:
我们把对象obj_1拖到场景里,然后进入对象的事件编辑界面,创建时设置变量userid=0,相当于定义变量并赋初值;
 
然后让对象创建后执行一段代码;代码内容:
obj_1.listen('q', function()     //为对象obj_1添加监听事件q;
{
 game.userid=qyengine.userId   //让上面设置好的变量userid=获取GM用户名(在表达式编辑器—>系统—>网络下可以看见)
});      
 
为对象添加鼠标按下事件,执行一段代码并展示变量的值:

代码为:obj_1.dispatchEvent('q');//执行对象obj_1的监听事件q;
 
这样在预览点击对象obj_1后就可以在场景展示自身的GM的用户名了;
 
可以梳理下:首先场景创建的时候执行的是为对象添加监听事件的代码,鼠标点击后才执行监听事件从而就展示出监听事件执行结果;
 
(2)QyPagecontainer.getPage()
pagecontainer.getPage():根据唯一性标识,获取翻页容器当前所在页数;
pagecontainer.getFullPage():根据唯一性标识,获取翻页容器总页数;

它们用起来很简单,和表达式编辑器中的公式相同,这是在不使用表达式,而直接使用代码的情况下使用的;
pagecontainer直接改成翻页容器的唯一性标识,例如新建一个翻页容器page_1然后把它拖到场景中去,第一次拖到场景中是page_1,第二次拖到场景中就是page_1_1,如果我想通过代码获取第二个翻页容器当前所翻页数则直接调用page_1_1.getPage(),然后就可以实现当前页数的效果;
1、获取当前所在页数:pagecontainer.getPage()
添加完翻页容器后在场景事件中添加执行代码和展示变量a的动作: 
 
代码如下:game.setVar("a",page_1_2.getPage());  这里是把获取的当前页数赋值给变量a;  
 
然后展示在场景中,展示的结果如果:  
 
2、获取总页数pagecontainer.getFullPage()
和上面类似,执行的代码如下:  
 
 
然后就可以看到总页数了:   
 
热门视频
换一换
游戏排行
1 神武2 角色扮演
1
神武2 角色扮演 2016-01-18
2 奇葩钓鱼 休闲益智
2
奇葩钓鱼 休闲益智 2015-11-16
3 Deemo 休闲益智
3
Deemo 休闲益智 2015-11-16
4 在一起 休闲益智
4
在一起 休闲益智 2015-11-16
5 我们相距十万光年 休闲益智
5
我们相距十万光年 休闲益智 2015-11-16
6 死亡之眼 休闲益智
6
死亡之眼 休闲益智 2015-11-16
7 黑白雨夜 休闲益智
7
黑白雨夜 休闲益智 2015-11-16
8 杀死马里奥 动作冒险
8
杀死马里奥 动作冒险 2015-11-16
9 保卫帝王 角色扮演
9
保卫帝王 角色扮演 2015-11-17
10 战龙之刃 经营策略
10
战龙之刃 经营策略 2015-11-20
1 英雄联盟 MOBA
1
英雄联盟 MOBA 关注度:4925835
2
守望先锋 FPS 关注度:3617845
3
穿越火线 FPS 关注度:1816066
4
地下城与勇士 MMOARPG 关注度:1248850
5 魔兽世界 MMORPG
5
魔兽世界 MMORPG 关注度:369351
6 梦幻西游 回合制MMORPG
6
梦幻西游 回合制MMORPG 关注度:346370
7 QQ飞车 赛车竞技
7
QQ飞车 赛车竞技 关注度:344764
8 炉石传说 休闲卡牌
8
炉石传说 休闲卡牌 关注度:223331
9 剑灵 MMORPG
9
剑灵 MMORPG 关注度:187628
10 DOTA2 MOBA
10
DOTA2 MOBA 关注度:138320
1 小猫咪咪 休闲益智
1
小猫咪咪 休闲益智 2015-12-08
2 美人鱼国王 动作冒险
2
美人鱼国王 动作冒险 2015-11-25
3 神域大乱斗 角色扮演
3
神域大乱斗 角色扮演 2016-03-11
4 跳跃忍者 动作冒险
4
跳跃忍者 动作冒险 2015-11-25
5
森林冰火人1无敌版 角色扮演 2015-11-25
6 不要伤害小狗 休闲益智
6
不要伤害小狗 休闲益智 2015-11-25
7
编程机器人2.0中文版 休闲益智 2015-11-25
8 飞鹰武士4 动作冒险
8
飞鹰武士4 动作冒险 2016-03-21
9 战火英雄 飞行射击
9
战火英雄 飞行射击 2016-03-17
10 四国战斗机2 飞行射击
10
四国战斗机2 飞行射击 2016-01-06
免费礼包
更多+
攻略排行 视频排行
'); } $(function () { $(".pinch-zoom").each(function () { new RTP.PinchZoom($(this), {}); }); }); function getCookie(name) { var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); if(arr=document.cookie.match(reg)) return unescape(arr[2]); else return null; } function setCookie(name,value) { var Days = 30; var exp = new Date(); exp.setTime(exp.getTime() + Days*24*60*60*1000); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); }
Gamemei合作伙伴
"); // } // }