`
lixinye0123
  • 浏览: 335898 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

1.8. 逻辑运算

阅读更多

1.8. 逻辑运算
 
问题
我想检测两个值的大小
解决办法
使用==号来比较两个值,使用 isNaN( ) 来检测是否是有效值.
讨论
==号表达式总是返回布尔值来表示两个值是否相等。当两个数类型不同时,比较时会自动转换为相同的类型再进行比较,如字符型的6和数字型的6比较的话被认为相等。
trace(5 == 6);    // : false
trace(6 == 6);    // : true
trace(6 == "6");  // : true
trace(5 == "6");  // : false
默认的工程项目,在运行上面的代码会出错。因为编译器被设置为强类型编译检测。关掉强类型检测,会把数字型转换为字符型,然后再进行比较。一般不推荐关闭强类型检测,这样可能会引发一些隐蔽的错误不利于程序稳定。
当两个数值不相等时,!=操作符将返回true,否则为false
trace(5 != 6);    // : true
trace(6 != 6);    // : false
trace(6 != "6");  // : false
trace(5 != "6");  // : true
同样,只有在关闭强类型检测后才能编译通过。

平时要注意不要把==写成=,否则会出现无法预料的错误。比如:
var quantity:int = 5;
// 下面的代码是错误的,正确应为 if (quantity == 6)
if (quantity = 6) {
  trace("Rabbits are bunnies.");
}
trace("quantity is " + quantity);  // 输出: quantity is 6
 
可以使用 is 操作符来检测数据类型
var quantity:int = 5;
if (quantity is int) {
  trace("Yippee. It's an integer.");
}
然而有些数值是非法的。下面的代码中quantity 等于 NaN (一个表示无效数字的常数)
var quantity:Number = 15 - "rabbits";
NaN 虽然是无效的数值,但它的数据类型仍属于 Number ,
trace(typeof quantity);   // 显示: "number"
所以,为了测试有个number变量类型不是数字,但又是合法的number,尝试下这么写:
var quantity:Number = 15 - "rabbits";
if (quantity is Number) {
 
  //看起来好像正确,实际上是错误的,因为quantity != NaN 结果被认为都是false
  if (quantity != NaN) {
    trace("Yippee. It's a number.");
  }
}

为了检测一个数字是不合法的,要使用指定的函数isNaN( ) 看下面的例子:
var quantity:Number = 15 - "rabbits";
if (isNaN(quantity)) {
  trace("Sorry, that is not a valid number.");
}
如果要检测相反条件,只要取反就可以,比如为了检测一个变量是个合法的number,使用!isNAN( ),如下:
var quantity:Number = 15 - "rabbits";
if (!isNaN(quantity)) {
 trace ("That is a valid number.");
}
当然了你还可以使用<和>比较符号来比较两个值得大小。
trace(5 < 6);    // 显示: true
trace(5 > 5);    // 显示: false
还有<= 和>= 符号
trace(5 <= 6);   // 显示: true
trace(5 >= 5);   // 显示: true
ActionScript 数据类型的比较有两个情况。在ActionScript中,数据类型分为两类:基本类型
 (string, number, and Boolean) 和复合类型(object, sprite, and array)。当比较基本类型时,是比较他们的值,下面的例子中 quantity 和 total 被认为是相等的因为他们包含相同的值6
var quantity:Number = 6;
var total:Number = 6;
trace (quantity == total);         // 显示: true
然而,当比较符合数据类型时是通过他们的“引用”来比较。当两个引用所指向的对象完全相同才被认为是相等的,而不仅仅是对象的内容相同。例如,两个数组包含相同的内容,但是他们却不相等:
// 用相同的内容创建两个数组
var arrayOne:Array = new Array("a", "b", "c");
var arrayTwo:Array = new Array("a", "b", "c");
trace(arrayOne == arrayTwo);          // 显示: false
只要当引用指向同一个object, array, 或 sprite 才相等. 例子:
// 创建一个简单的数组
var arrayOne:Array = new Array("a", "b", "c");
// 创建另一个变量指向同一个数组
var arrayTwo:Array = arrayOne;
trace(arrayOne == arrayTwo);          // 显示: true
 
 
分享到:
评论

相关推荐

    InoProShop(V1.8.0.0). 汇川 PLC 编程器使用说明

    软件内置丰富的指令库,覆盖基本逻辑控制、定时器、计数器、数学运算、模拟量处理等功能,满足各种复杂控制需求。 4. **在线调试与故障诊断** 在连接到实际PLC设备后,InoProShop可进行在线调试,包括程序下载、...

    Unity ASE插件(Amplify Shader Editor 1.8.9.035.unitypackage最新版)

    Amplify Shader Editor的出现,极大地简化了Shader开发流程,让开发者能够通过拖拽节点的方式构建Shader逻辑,同时提供了丰富的预设和示例,帮助用户快速理解和应用各种视觉效果。 在1.8.9.035版本中,Amplify ...

    Amplify Shader Editor V1.8.9.009.unitypackage.zip

    1. **节点系统**:ASE提供了一个庞大的内置节点库,涵盖了各种常见的图形处理操作,如颜色运算、纹理采样、数学运算等。通过拖拽节点并连接它们,用户可以构建复杂的Shader逻辑。 2. **实时预览**:在ASE中,用户...

    unity插件ASE(1.8.9.035)

    1. **图形化工作流程**:ASE采用节点式界面,用户可以通过连接不同的节点来构建着色器逻辑,无需编写复杂的GLSL或CG代码。这种可视化方法使得即使是对编程不太熟悉的艺术家也能快速上手。 2. **广泛的节点库**:ASE...

    Amplify Shader Editor 1.8.8.000.zip

    它的节点库包含了各种数学运算、纹理采样、颜色操作和高级图形技术,例如法线映射、置换贴图、屏幕空间反射等。 在ASE中,用户可以通过拖拽节点并连接它们来构建Shader逻辑,每个节点代表一个特定的计算或功能。这...

    Amplify Shader Editor v1.8.unitypackage

    1. **节点式编辑器**:ASE提供了一个可视化的图形界面,用户可以通过拖拽节点并连接它们来构建着色器逻辑。每个节点代表一个特定的计算操作,如纹理采样、数学运算、颜色混合等。 2. **实时预览**:在编辑过程中,...

    Unity特效可视化编辑-ASE-1.8.9.3

    3. 编辑节点:通过连接不同类型的节点,如颜色、纹理、数学运算、时间和空间变换等,构建Shader逻辑。 4. 实时预览:在Unity编辑器中即时查看效果,进行调整。 5. 应用特效:将完成的特效附加到场景中的对象上,或者...

    Amplify Shader Editor v1.8.9.012.unitypackage

    Amplify Shader Editor v1.8.9.012 是一个专为 Unity 开发者设计的强大图形着色器编辑工具。它极大地简化了创建、编辑和管理自定义着色器的过程,尤其适用于那些希望在游戏开发中实现独特视觉效果的用户。这款工具...

    Amplify Shader Editor v1.8.rar

    在"Amplify Shader Editor v1.8.unitypackage"中,我们得到的是该工具的一个版本更新,版本号为1.8。这个Unity包文件包含了Amplify Shader Editor的所有组件和资源,可以方便地导入到Unity项目中。一旦导入,开发者...

    Amplify Shader Editor V1.8.9.009(可视化Shader编辑工具)

    它通过直观的图形界面,使得创建复杂的Shader逻辑变得简单,无需深入理解低级编程语言如GLSL或HLSL。在这款工具的帮助下,用户可以通过拖拽节点和连接线来构建Shader程序,极大地提升了工作效率。 Amplify Shader ...

    Amplify Shader Editor v1.8.zip

    1. **可视化工作流程**:通过拖拽和连接节点的方式,用户可以轻松构建着色器逻辑。这对于初学者来说降低了学习曲线,同时也提高了专家级开发者的工作效率。 2. **广泛的节点库**:包含了大量的预定义节点,如数学...

    java开发经典游戏雷电。适用版本jdk1.8.zip

    在Java中,可以结合几何运算和对象的位置信息进行判断。 3. **游戏循环**:游戏通常有一个主循环,处理输入、更新游戏状态、渲染画面。在Java中,可以使用Thread或ScheduledExecutorService来实现游戏循环。 4. **...

    AmplifyShaderEditor1.8.1.7z

    2. **可视化编辑器**: Amplify Shader Editor提供了一个直观的拖拽界面,允许用户通过连接各种节点来构建着色器逻辑,而不是编写复杂的GLSL或HLSL代码。这极大地降低了学习曲线,提高了效率。 3. **支持Unity 2018*...

    alu.rar_alu_alu逻辑运算

    在"1.8 运算器部件实验:算术逻辑运算单元"这个实验中,学生可以通过动手实践来理解和掌握ALU的工作原理。实验可能包括设计和搭建简单的ALU模型,模拟执行各种运算,从而直观地理解ALU如何处理二进制数据。 通过...

    AS3.0 基础学习

    逻辑运算 - **逻辑运算符**: 包括 `&&` (与), `||` (或), `!` (非) 等。 - **比较运算符**: 如 `==`, `!=`, `, `&gt;`, `, `&gt;=` 等。 #### 1.9. 执行条件语句 - **if 语句**: 用于根据条件执行代码块。 - **switch ...

Global site tag (gtag.js) - Google Analytics