if (penok0 == 1 && penok == 1)//如果 penok0 和 penok 都等于 1 { for (i = 1; i <= 9; i = i + 1) { if (eval("xod"+i) == 1)//到第一个 xod 等于 1 { set("sq"+i, 1);//将对应的 sq 属性设为 1 penok = 0;//将penok变量的值赋为 0 tellTarget("/xxx/xxx" add i) { gotoAndPlay(2); } cxod = 0;//将cxod变量的值赋为 0 i = 9; } } } if (penok0 == 1 && penok == 1)////如果 penok0 和 penok 都等于 1 { if (cxod == 0)//且 cxod 等于 0 { call("OOO");//调用函数 OOO set("sq"+oxod, 0);//将对应的 sq 属性设为 0 penok0 = 0;//将penok0变量的值赋为 0 tellTarget("/ooo/ooo"+oxod) { gotoAndPlay(2); } cxod = 1; } } 是什么意思
时间: 2024-02-14 16:24:30 浏览: 113
这是一段 ActionScript 2.0 代码,大体上是一个井字棋游戏的逻辑控制部分。第一部分的代码是在判断是否有玩家获胜,如果有,则设置对应的 sq 属性为 1,并且让对应的棋子播放动画,然后将 penok 变量赋为 0,表示游戏已经结束。第二部分的代码是在检查是否轮到另一个玩家,如果是则调用函数 OOO,并将对应的 sq 属性设为 0,然后让对应的棋子播放动画,同时将 penok0 变量赋为 0,表示此时不能进行操作,然后将 cxod 变量赋为 1,表示轮到另一个玩家操作。
相关问题
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 (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)//条件1 { if (cxod == 0)//条件2 { 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);在flash中是什么意思
这是一段 Flash ActionScript 2.0 代码。该代码包含两个条件语句和一些操作。
第一个条件语句包含一个 for 循环,用于遍历从 1 到 9 的数字。如果变量 penok 和 penok0 的值都为 1,则程序将检查变量 xod1 到 xod9 的值是否等于 1。如果找到一个值等于 1 的变量,程序会将变量 sq1 到 sq9 的值设置为 1,将变量 penok 的值设为 0,然后跳转到 /xxx/xxx1 到 /xxx/xxx9 中的第二帧(使用 tellTarget 函数指定)。最后程序将变量 cxod 的值设为 0,将变量 i 的值设为 9,以退出循环。
第二个条件语句包含一个 if 语句。如果变量 penok 和 penok0 的值都为 1,且变量 cxod 的值为 0,则程序将调用一个名为 OOO 的函数,并将变量 sq1 到 sq9 中某个变量(由变量 oxod 指定)的值设置为 0。然后程序将跳转到 /ooo/ooo1 到 /ooo/ooo9 中的第二帧(使用 tellTarget 函数指定)。最后程序将变量 cxod 的值设为 1。
最后两行代码将根据变量 penok 和 penok0 的值来控制 /pen 和 /penO 的可见性。
阅读全文