【问题标题】:ActionScript 3 - What do these codes do?ActionScript 3 - 这些代码有什么作用?
【发布时间】:2014-11-30 16:44:38
【问题描述】:

我试图了解一些 Action Script 3 的功能以便移植一些代码。

代码 1

“++”如何影响索引部分是什么意思?如果idx_val=0那么xvaluer索引会被修改?

xvaluer(++idx_val) = "zero";

代码 2

那我有这个:这部分代码是什么意思? 在最后 3 行中分配给 bUnicode 的是什么? (你能解释一下“>”)

bUnicode = new Array(2);
i = (i + 1);
i = (i + 1);
bUnicode[0] = aData[(i + 1)] << 2 | aData[(i + 1)] >> 4;
i = (i + 1);
bUnicode[1] = aData[i] << 4 | aData[(i + 1)] >> 2;

代码 3

我对这里发生的事情一无所知。 什么是“作为”?是什么 ”?” ?

bL = c > BASELENGTH ? (INVALID) : (s_bReverseLPad[c]);

代码 4

什么是“&&”?

  if ((i + 1) < aData.length && s_bReverseUPad(aData((i + 1))) != INVALID)

代码 5

什么是“作为”?是什么 ”?” ?

n2 = c < 0 ? (c + 256)  as  (c)
bOut.push(n1 >> 2 & 63)
bOut.push((n1 << 4 | n2 >> 4) & 63)//What is the single "&" ?
bOut.push(n2 << 2 & 63)

最后,“||”有什么区别和“|”,以及在“=”和“==”之间?

【问题讨论】:

    标签: actionscript-3 code-translation


    【解决方案1】:

    代码 1: ++ii++i += 1; 几乎相同,唯一真正的区别是在评估之前对其进行了修改。 Read more here.

    代码 2: &lt;&lt;&gt;&gt; 是按位移位,它们实际上是位移一位。您确实需要了解Binary,然后才能弄乱这些运算符。我建议您一直阅读this tutorial

    代码 3: 这个叫Ternary Operator,其实很简单。这是一行if / else 声明。 bL = c &gt; BASELENGTH ? (INVALID) : (s_bReverseLPad[c]); 相当于:

    if(c > BASELENGTH) {
        bL = INVALID;
    } else {
        bL = s_bReverseLPad[c];
    }
    

    Read more about it here.

    代码 4: “条件与运算符 (&amp;&amp;) 对其布尔操作数执行逻辑与,但仅在必要时评估其第二个操作数。” 还需要记住条件或运算符 (||)。 作为 AND 运算符的示例,这里有一些代码:

    if(car.fuel && car.wheels) car.move();
    

    Read more about it here.

    代码 5: From AS3 Reference: as “评估第一个操作数指定的表达式是否是第二个操作数指定的数据类型的成员。”所以基本上你将一种类型转换为另一种类型,但只有在可能的情况下,否则你会得到null

    &amp;Bitwise AND operator|Bitwise OR operator,再次参考this article.

    === 是两个不同的运算符。前者(=)被称为Basic Assignment,意思是当你做任何类型的赋值时使用它:i = 3;。后者(==)被称为Equal to,它用于检查一个值是否等于其他值。 if(i == 3) // DO STUFF;。非常直接。

    对我来说唯一没有意义的部分是单个问号。 Ternary Operator 需要同时具有 ?:。这段代码真的为你运行吗?也许更多的上下文会有所帮助。 c是什么类型的?

    n2 = c &lt; 0 ? (c + 256) as (c)

    【讨论】:

    • 感谢您的回答。我受够了。我想要更多上下文,这里是:pastebin.com/piFaSULT
    • 看起来您复制错误。该行实际上是n2 = c &lt; 0 ? (c + 256) : (c); 这意味着它是ternary operator
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 2016-03-20
    • 2010-11-07
    • 1970-01-01
    相关资源
    最近更新 更多