flash播放器:Flash AS3教程:运算符 ?:

  前面给大家演示了个Flash AS3教程:小游戏开发实战尝试这篇说说运算符使用

  首先个运算符我们应不应该推崇多使用先来做个测验:

  CODE:

var sumo: = 0;
var sumj: = 0;
for(var i: = 0; i < 10000000; i ){
    (i % 2 0){
        sumo i;
    }{
        sumj i;
    }
}
trace(getTimer);
//输出结果:562
var sumo: = 0;
var sumj: = 0;
for(var i: = 0; i < 10000000; i ){
    i % 2 0 ? sumo i : sumj i;
}
trace(getTimer);
//输出结果:572
从上面测试结果不难看出 确比?:快那么是不是就应该抛弃?:呢?答案是错

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

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

  1、没必要情况下

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

  代码:a = p ? 20 : 30;

  如果写成 就是

(p){
 a = 20;
}{
 a = 30;
}
勉强说得过去

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

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

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

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

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

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

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

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

  理解办法:

  先看个简单例子:

  a = num 1 ? 2 : 3;

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

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

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

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

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

  不用把?:想象成 什么 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为truep1为truep2为true时候num等于2

  isMaster为truep1为truep2为false时候num等于3

  isMaster为truep1为falsep2为true时候num等于1

  isMaster为truep1为falsep2为false时候num等于4

  isMaster为falsep1为truep2为true时候num等于4

  isMaster为falsep1为truep2为false时候num等于1

  isMaster为falsep1为falsep2为true时候num等于3

  isMaster为falsep1为falsep2为false时候num等于2

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

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

Tags:  flashplayer flash播放器

延伸阅读

最新评论

发表评论