手机
当前位置:查字典教程网 >网页设计 >Flash教程 >Flash AS3教程:运算符“?:”
Flash AS3教程:运算符“?:”
摘要:前面给大家演示了一个FlashAS3教程:小游戏开发实战尝试,这篇说说运算符的使用。首先个运算符,我们应不应该推崇多使用,先来做个测验:CO...

前面给大家演示了一个Flash AS3教程:小游戏开发实战尝试,这篇说说运算符的使用。 首先个运算符,我们应不应该推崇多使用,先来做个测验:

CODE:

var sumo:int = 0;

var sumj:int = 0;

for(var i:int = 0; i < 10000000; i ){

if(i % 2 == 0){

sumo = i;

}else{

sumj = i;

}

}

trace(getTimer());

//输出结果:562

var sumo:int = 0;

var sumj:int = 0;

for(var i:int = 0; i < 10000000; i ){

i % 2 == 0 ? sumo = i : sumj = i;

}

trace(getTimer());

//输出结果:572从上面的测试结果不难看出,if else的确比?:快一点,那么是不是就应该抛弃?:呢?答案是错

在计算10000000次的情况下,他们的效率差是那么的低。。才10毫秒。。

那么我们推荐用?:的时候:

1、没必要的情况下。

比如,判断逻辑值,如果为true,则a=20,如果为false,则a=30

代码:a = p ? 20 : 30;

如果写成if else,就是

if(p){

a = 20;

}else{

a = 30;

}

用if else勉强说得过去

那么是一个需要传参的地方,为true,为false,情况不一样,如果你在多出来5行,来写这段代码,个人认为,算是多余的了!

完全可以采用:fun(p ? 20 : 30);

如果说看不懂这样的代码,那么继续往下看,会教大家一种理解 ?: 的办法

2、逻辑比较复杂,但是都是属于单向判断的地方,咱就可以使用 ?: 了

比如我写的类中,有句这样的代码:

num = isMaster ? (p1 ? (p2 ? 2 : 3) : (p2 ? 1 : 4)) : (p1 ? (p2 ? 4 : 1) : (p2 ? 3 : 2));

有兴趣的朋友把他翻成if else,然后在对比一下这两个代码,你觉得那个看起来更累?

当然比较之前,还是继续看下面,让我来教大家如何快速理解 ?:

理解的办法:

先看一个简单的例子:

a = num == 1 ? 2 : 3;

用通俗的语句说,就是:如果num等于1,则a=2,否则a=3,这个很好理解,那么上面那个类似火星文的代码

套用这种说法就比较难了,因此我们要改变思维想法,要直观的看着理解

a是准备接收得值的物体,跟后面的计算无关,那么我们可以直接理解后面

即:num == 1这个物体问2,所以为3,扩充一下语句就是:num == 1问2你等于我吗?2回答不,所以为3

在直观理解的时候,先判断num == 1是否为真值,为真?号后面的,为假:号后面的

不用把?:想象成if else,什么if num == 1 那么就等于2,否则等于3,这样理解当然慢

就非常直观的理解,为真,?号,否则:号

我们再来看那个类似火星文的东西:

num = isMaster ? (p1 ? (p2 ? 2 : 3) : (p2 ? 1 : 4)) : (p1 ? (p2 ? 4 : 1) : (p2 ? 3 : 2));

isMaster为true,就是(p1 ? (p2 ? 2 : 3) : (p2 ? 1 : 4)) ,否则就是(p1 ? (p2 ? 4 : 1) : (p2 ? 3 : 2))

p1为true,就是(p2 ? 2 : 3),否则就是(p2 ? 1 : 4)

…………

依次扩散,其实你会发现一个规律,没发现也没关系,我来帮你总结

我一眼就可以看出:

isMaster为true,p1为true,p2为true的时候,num等于2

isMaster为true,p1为true,p2为false的时候,num等于3

isMaster为true,p1为false,p2为true的时候,num等于1

isMaster为true,p1为false,p2为false的时候,num等于4

isMaster为false,p1为true,p2为true的时候,num等于4

isMaster为false,p1为true,p2为false的时候,num等于1

isMaster为false,p1为false,p2为true的时候,num等于3

isMaster为false,p1为false,p2为false的时候,num等于2

就这么简单,或许你还能发现更多的规律,其实理解?:的时候,不要把他当作if else,记住为true,前面的,否则后面的

涉及太复杂的类型,判断也不要用?:,但是是一些数字,逻辑值等,用用 ?: ,效果还是很不错的!

【Flash AS3教程:运算符“?:”】相关文章:

Flash AS3教程:Random类

Flash实例教程:单选题的制作

Flash AS教程:旋转立方体

Flash AS教程:decorator Pattern

Flash CS3循环背景的运用技巧

Flash AS3教程:ImageLoader类

Flash AS3教程:Level2D类

Flash基础教程:学Flash的技巧

Flash as教程:图片模糊运动

Flash AS教程:图片环绕旋转效

精品推荐
分类导航