脚本进阶教程 位置导航:首页 > 资料中心 > 脚本进阶教程
   UL脚本结构范例(二)
 ● 注释1:MyTable = {…}
   ☆UL标准脚本定义模块,用来定义脚本的各个状态;
? ☆每个脚本中必写,此处格式固定,不可修改;

● 注释2:EntryInfo = {事件, "状态"};
? ☆用来定义触发脚本的事件,及脚本触发后所进入的状态;
? ☆事件为触发脚本的事件,详见4.10事件说明;
? ☆状态为脚本触发后所进入的状态,格式为英文state+数字序号,例如state1或state2,注意此处要加双引号““;
? ☆每个脚本中必写,此处格式固定,不可修改;

● 注释3:StateList = {"state1", "state2"}; 
? ☆状态列表,填写脚本涉及的所有状态;
? ☆编写者希望脚本有几个状态,便在此处填写几个状态,之间用逗号分隔;
? ☆注意:StateList中所填写的所有状态均需在下面进行定义,见注释4;
? ☆每个脚本中必写,此处格式固定,不可修改;

● 注释4:state1 = {…};
? ☆对状态state1进行定义;
? ☆凡脚本所涉及的状态,均需用此格式进行定义;
? ☆每个状态含有4个需定义的参数,见注释5~8;
? ☆每个脚本中必写,此处格式固定,不可修改;

● 注释5:Timer = 数字,
? ☆用来定义该状态是否需要定时,单位为毫秒;
? ☆若Timer = N,则进入该状态后,每隔N毫秒执行一次该状态的OnTimer函数MyTable.state1.OnTimer(args);
? ☆若该状态不需要定时,则填写Timer = -1;
? ☆注意:当Timer不为-1时,必须在MyTable后面对该状态对应的OnTimer函数进行定义;
? ☆每个状态定义中必写,此处格式固定,不可修改;

● 注释6:TimeOut = 数字,
? ☆用来定义该状态会持续多长时间,单位为毫秒;
? ☆若TimeOut = N,则在进入该状态N毫秒后,便退出该状态;
? ☆如该状态需要永远持续,则填写TimeOut = -1;
? ☆TimeOut必须大于Timer,否则函数MyTable.state1.OnTimer(args)不会执行;
? ☆每个状态定义中必写,此处格式固定,不可修改;

● 注释7:NextState = "状态",
? ☆用来定义该状态结束后,脚本接下来会进入哪一个状态;
? ☆如该状态没有下一个状态,则填写NextState = "nil";
? ☆每个状态定义中必写,此处格式固定,不可修改;

● 注释8:EventList = {事件1, 事件2};
? ☆事件列表,注册该状态中所关心的事件,即:脚本处于该状态时,若事件列表中所注册的事件被触发,则会执行这些事件所对应的函数;
? ☆状态列表中可填写多个事件,并用逗号分隔,关于脚本事件的说明,详见4.10事件说明;
? ☆注意:状态列表中所填写的所有事件,均需在MyTable后面进行相对应的函数定义;
? ☆每个状态定义中必写,此处格式固定,不可修改;

● 注释9:function MyTable.state1.OnEnter(args)
? ☆标准的状态进入函数,每次进入该状态时,都会执行此函数;
? ☆编写者可将希望在进入该状态时执行的代码写入此函数;
? ☆每个状态均对应一个状态进入函数,即:脚本中,有几个状态,就必写几个相对应的状态进入函数,此处格式固定,不可修改;

● 注释10:function MyTable.state1.OnExit(args)
? ☆标准的状态退出函数,每次退出该状态时,都会执行此函数;
? ☆编写者可将希望在退出该状态时执行的代码写入此函数;
? ☆每个状态均对应一个状态退出函数,即:脚本中,有几个状态,就必写几个相对应的状态退出函数,此处格式固定,不可修改;

● 注释11:function MyTable.state1.OnTimer(args)
? ☆标准的状态定时触发函数,当处于该状态时,每隔Timer设定的时间,触发一次此函数;
? ☆编写者可将希望定时执行的代码写入此函数;
? ☆每个状态均对应一个状态定时触发函数,即:脚本中,有几个状态,就必写几个相对应的定时触发函数,但当某状态的Timer为-1时,便可不对此状态对应的定时触发函数进行定义,此处格式固定,不可修改;

● 注释12:function MyTable.state1.OnClick(args)
? ☆脚本处于该状态时,若该状态所关心的事件(即在EventList中填写的事件)被触发,则会执行该事件所对应的函数;
? ☆每个状态均可有多个所关心的事件,不同状态所关心的相同事件所对应的函数不同。例如:state1和state2的EventList中均有ONCLICK这个事件,但其所对应的函数分别为MyTable.state1.OnClick(args)和MyTable.state2.OnClick(args)。当事件ONCLICK被触发时,若脚本当前状态为state1,则执行函数MyTable.state1.OnClick(args);若脚本当前状态为state2,则执行函数MyTable.state2.OnClick(args);
? ☆编写者可将希望在某一事件触发时执行的代码写入其所对应的函数;
? ☆每个状态所关心的事件均有一个相对应的函数,凡在EventList中填写的事件,均需在MyTable后面对其相对应的函数进行定义,此处格式固定,不可修改;
l ☆对此范例的执行流程说明如下(前提是此脚本已储存在脚本球中,且该脚本球已绑定在某一物体上):
? ☆当用户选中该物体,右键点击,并从弹出菜单中选择“使用”后,脚本被触发,并进入状态state1,并同时执行函数MyTable.state1.OnEnter(args);
? ☆进入state1后,每隔1000毫秒,执行一次函数MyTable.state1.OnTimer(args);
? ☆进入state1后,当用户右键点击物体,并从弹出菜单中选择“使用”时(事件ONCLICK被触发),执行函数MyTable.state1.OnClick(args);
? ☆进入state1后,在第10000毫秒时,state1结束,脚本退出state1,进入state2;
? ☆退出state1的同时,执行函数MyTable.state1.OnExit(args);
? ☆进入state2的同时,执行函数MyTable.state2.OnEnter(args);
? ☆进入state2后,当用户左键点击物体时(事件ONTOUCH被触发),执行函数MyTable.state2.OnTouch(args);
? ☆进入state2后,在第8000毫秒时,state2结束,脚本执行结束;
? ☆若要再次触发脚本,则需再次右键点击物体,并从弹出菜单中选择“使用”。
.
公司介绍  |  由我博客  |  招聘信息  |  商务合作 |  媒体合作  |  联系我们  |  新浪微博  |  开心多尼
优万科技(北京)有限公司 版权所有 京ICP证08336号 ISBN 978-7-900648-32-7 《网络文化经营许可证》编号:文网文[2009]076号 新出网证(京)字099号
Copyright (C)2007-2010 UOneNet CO., LTD. All Rights Reserved.