我在后面的网址标题中看到了一个画布动画 - http://blogs.msdn.com/b/davrous/archive/2011/07/21/html5-gaming-animating-sprites-in-canvas-with-easeljs.aspx
jsfiddle是here
在浏览javascript代码的过程中,一些恼人的线路需要花费大量时间来理解它们,仍然没有运气,只留下了向StackOverflow专家询问的唯一选择。
这些行是(jsfiddle中的第85-90行) -
star[t][0] += mouse_x >> 4,
star[t][0] > x << 1 && (star[t][0] -= w << 1, test = !1),
star[t][0] < -x << 1 && (star[t][0] += w << 1, test = !1),
所有这些都在for循环中运行。对我来说,主要的混淆点是,在第1行中的赋值之后,在第2行和第3行进行这两个比较。当上面第2行和第3行的这两个比较的结果没有存储到任何变量中时,这个目的是什么? ?
答案 0 :(得分:5)
“当上述第2行和第3行的这两次比较结果没有存储到任何变量中时,目的是什么?”
它使用&&
作为if
的简写,因为&&
运算符首先计算左侧操作数,并且只有在它是真实的时才评估右侧操作数
该行:
star[t][0] > x << 1 && (star[t][0] -= w << 1, test = !1)
可以改写为:
if (star[t][0] > x << 1) {
star[t][0] -= w << 1, test = !1;
}
(和第三行类似。)
另外,!1
是false
的缩写。