|
楼主 |
发表于 2013-10-11 16:02:26
|
显示全部楼层
本帖最后由 FFUR2007SLX2_5 于 2013-10-11 22:38 编辑
100楼 武装突袭3之循环全解析(二)
分析了for循环和while循环后,我们来看看forEach循环,很多人不认为它像一个循环,不过事实是它就是一个循环。我们来看一下forEach是怎么工作的,这里我们直接用特殊私用变量_forEachIndex了,看过之前几篇的同志应该对它不陌生了。- _array = [1,2,3];
- diag_log format ["_array:%1", _array];
- {
- _array = _array + [0];
- diag_log format ["_x:%1/_forEachIndex:%2/_array:%3", _x, _forEachIndex, _array];
- } forEach _array;
- diag_log format ["_array:%1", _array];
- //.rpt file
- //"_array:[1,2,3]"
- //"_x:1/_forEachIndex:0/_array:[1,2,3,0]"
- //"_x:2/_forEachIndex:1/_array:[1,2,3,0,0]"
- //"_x:3/_forEachIndex:2/_array:[1,2,3,0,0,0]"
- //"_array:[1,2,3,0,0,0]"
复制代码 既然forEach干的不错,那么我们赋值数组时就用它吧,不过这里有一个技巧,在forEach中使用set时要配合min,我们又要叫了,min是什么东西,怎么还要搞上这玩意儿?通过翻查BiWiki我们知道min是两数之间取小值,max是两数之间取大值。如果我们不用min做限制那么数组将无限扩张下去,请看:- _array = [1,2,3];
- diag_log format ["_array:%1", _array];
- {
- _array set [(count _array) min 5, 0];
- diag_log format ["_x:%1/_forEachIndex:%2/_array:%3", _x, _forEachIndex, _array];
- } forEach _array;
- diag_log format ["_array:%1", _array];
- //.rpt file
- //"_array:[1,2,3]"
- //"_x:1/_forEachIndex:0/_array:[1,2,3,0]"
- //"_x:2/_forEachIndex:1/_array:[1,2,3,0,0]"
- //"_x:3/_forEachIndex:2/_array:[1,2,3,0,0,0]"
- //"_x:0/_forEachIndex:3/_array:[1,2,3,0,0,0]"
- //"_x:0/_forEachIndex:4/_array:[1,2,3,0,0,0]"
- //"_x:0/_forEachIndex:5/_array:[1,2,3,0,0,0]"
- //"_array:[1,2,3,0,0,0]"
复制代码 这就是我们用min的原因,当然forEach还有几个兄弟,也是干循环这一行的,但使用范围有局限,它们是forEachMember, forEachTeamMember 和forEachMemberAgent。这些我就不讲了,biwiki上都有。
现在我们来插播一段广告:
大家好,我的名字叫fraps,大家测帧都用我。这时OnEachFrame叫嚣着走过来了:还在用Fraps?那简直是弱爆了,我测帧可以精确到小数点后4位!而且还不浪费资源!
75.4717帧!咋地用?- onEachFrame {hintSilent str diag_fps};
复制代码
广告结束,是时候OnEachFrame出场了,作为2代1.63的朋友,我想大家对它不陌生,其实也没什么新鲜的,因为在Biwiki上也都有 http://community.bistudio.com/wiki/onEachFrame |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?加入VME
x
|