if (penok0 == 1 && penok == 1) { for (i = 1; i <= 9; i = i + 1) { if (eval("xod" add i) == 1) { set("sq" add i, 1); penok = 0; tellTarget("/xxx/xxx" add i) { gotoAndPlay(2); } cxod = 0; i = 9; } } } if (penok0 == 1 && penok == 1) { if (cxod == 0) { call("OOO"); set("sq" add oxod, 0); penok0 = 0; tellTarget("/ooo/ooo" add oxod) { gotoAndPlay(2); } cxod = 1; } } pen.visible = penok; penO.visible = penok0;是什么意思
时间: 2024-02-14 08:32:18 浏览: 19
这段代码看起来和前面的代码很相似,但使用了 eval() 函数和 tellTarget() 方法,这些函数和方法在 ActionScript 3.0 中已经被废弃了。同时,这段代码的语法也有一些问题,例如 "add" 应该是字符串拼接符号,应该改为 "+"。
大致的意思与前面的代码类似:
- 如果 penok0 和 penok 都等于 1,那么循环 9 次,找到第一个 xod 等于 1 的属性,将对应的 sq 属性设为 1,将 penok 设为 0,播放名字为 "xxx" + i 的 MovieClip 的第二帧,将 cxod 设为 0。
- 如果 penok0 和 penok 都等于 1,且 cxod 等于 0,那么调用函数 OOO,将对应的 sq 属性设为 0,将 penok0 设为 0,播放名字为 "ooo" + oxod 的 MovieClip 的第二帧,将 cxod 设为 1。
- 根据 penok 和 penok0 的值,控制名为 pen 和 penO 的显示或隐藏状态。
总的来说,这段代码看起来是用来控制游戏中某些元素的显示和隐藏,但具体作用需要根据上下文来确定。
相关问题
if (penok0 == 1 && penok == 1) { for (i = 1; i <= 9; i = i + 1) { if (eval("xod" add i) == 1) { set("sq" add i, 1); penok = 0; tellTarget("/xxx/xxx" add i) { gotoAndPlay(2); } cxod = 0; i = 9; } } } if (penok0 == 1 && penok == 1) { if (cxod == 0) { call("OOO"); set("sq" add oxod, 0); penok0 = 0; tellTarget("/ooo/ooo" add oxod) { gotoAndPlay(2); } cxod = 1; } } setProperty("/pen", _visible, penok); setProperty("/penO", _visible, penok0);使用 ActionScript 3.0优化
这段代码可以用 ActionScript 3.0 重写,并进行一些优化。具体重写如下:
```
if (penok0 == 1 && penok == 1) {
for (var i:int = 1; i <= 9; i++) {
if (this["xod" + i] == 1) {
this["sq" + i] = 1;
penok = 0;
MovieClip(this.getChildByName("xxx" + i)).gotoAndPlay(2);
cxod = 0;
break; // 优化:找到一个位置后直接退出循环
}
}
}
if (penok0 == 1 && penok == 1) {
if (cxod == 0) {
this["OOO"]();
this["sq" + oxod] = 0;
penok0 = 0;
MovieClip(this.getChildByName("ooo" + oxod)).gotoAndPlay(2);
cxod = 1;
}
}
this["pen"].visible = penok;
this["penO"].visible = penok0;
```
重写后的代码做了一些改进:
- 使用 for 循环时,循环变量 i 声明为 int 类型,可以提高代码效率。
- 获取和设置变量值时,使用了动态属性语法,可以减少代码量。
- 使用 getChildByName 方法代替 tellTarget 方法,以便更好地适应现代 Flash 开发。
- 在第一个 if 语句中找到一个位置后直接退出循环,可以提高代码效率。
if (penok0 == 1 && penok == 1) { for (var i:int = 1; i <= 9; i++) { if (this["xod" + i] == 1) { this["sq" + i] = 1; penok = 0; MovieClip(this.getChildByName("xxx" + i)).gotoAndPlay(2); cxod = 0; break; } } } if (penok0 == 1 && penok == 1) { if (cxod == 0) { this["OOO"](); this["sq" + oxod] = 0; penok0 = 0; MovieClip(this.getChildByName("ooo" + oxod)).gotoAndPlay(2); cxod = 1; } } pen.visible = penok; penO.visible = penok0;是什么意思
这也是一段 ActionScript 3.0 的代码,与游戏相关,大致的意思如下:
- 如果 penok0 和 penok 都等于 1,那么循环 9 次,找到第一个 xod 等于 1 的属性,将对应的 sq 属性设为 1,将 penok 设为 0,播放名字为 "xxx" + i 的 MovieClip 的第二帧,将 cxod 设为 0,然后跳出循环。
- 如果 penok0 和 penok 都等于 1,且 cxod 等于 0,那么调用函数 OOO,将对应的 sq 属性设为 0,将 penok0 设为 0,播放名字为 "ooo" + oxod 的 MovieClip 的第二帧,将 cxod 设为 1。
- 根据 penok 和 penok0 的值,控制名为 pen 和 penO 的显示或隐藏状态。
具体代码的作用需要根据上下文来确定,但可以看出这段代码与游戏的逻辑有关。