·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]最常见编程错误代码的说明附实例介绍(10)

时间:2012-09-05 10:20CuPlayer
1091 迁移问题:_ 这是一个代码迁移警告。在 Actionscript 2.0 中,如果声明方法时使用的是特殊名称(如 onMouseDown),那么,在出现特定事件时,Flash 可能会调用该方法。在 Actionscript 3.0 中,必须通过方法来

1091 迁移问题:_ 这是一个代码迁移警告。在 Actionscript 2.0 中,如果声明方法时使用的是特殊名称(如 onMouseDown),那么,在出现特定事件时,Flash 可能会调用该方法。在 Actionscript 3.0 中,必须通过方法来调用 addEventListener(),从而对这一函数进行注册以接收该事件。有关详细信息,请参阅本语言参考中的 addEventListener。
1093 在应为 uint(非负)值的地方使用负值。 将负值赋给 uint 数据类型的变量将产生极大的正值。 var x:uint = -1; trace(x); // 4294967295.
1097 与 null 的比较不合逻辑。类型为 _ 的变量不能为 null。 Boolean、int、uint 和 Number 类型的实例不能为 null。与 Boolean 数据类型比较之前,比较运算符类型将 null 转换成 false;与 Number、int 或 uint 数据类型比较之前,将其转换成 0。
1099 与 NaN 的比较不合逻辑。此语句始终计算为 false。 NaN 具有独特的数学属性,任何涉及该属性的比较运算都计算为 false。改用全局 isNaN() 函数检测 NaN 值,如下面的示例所示:
trace(NaN == NaN); // false!
trace(NaN != NaN); // 还是 false!
trace(isNaN(NaN)); // true
1101 条件语句之内的赋值语句。您指的是 == 而不是 = 吗? = 赋值语句的结果是该 = 语句右边的值。可以将赋值语句用作条件测试,但不建议这样做。通常,出现 = 是由于计划执行 == 相等测试时的键入错误造成的,如下面的示例所示:
var x:Boolean = false;
var y:Boolean = true;
// 很难确定下面一行是有意将 x 的值设置为 y 的值,还是属于键入错误
if (x = y) { trace("x is assigned y's value of true, making the conditional test evaluate as true."); }
1103 使用了 null 值,但是应为 _ 值。不能将 null 作为值赋给 Boolean、Number、int 和 uint 变量。赋给 Boolean 数据类型时,null 值会隐式转换为 false,而赋给 int、uint 或 Number 数据类型时会转换为 0。
1105 尚未指定类 _ 的构造函数。不指定构造函数是一种个人编码风格偏好。如果需要始终为类声明构造函数,可以启用此警告。此警告旨在帮助您发现类名称更改但其构造函数名称没有更改的情况。不启用此警告时此类情况不会被标记为问题,前一个构造函数看上去是一个标准函数。
1111 未初始化该常量。
1113 Array(x) 与新 Array(x) 具有相同的行为。若要将某个值转换成 Array 类型,请将表达式 x 用作 Array 而非 Array(x)。
1115 输入此构造函数之前,将会执行 super() 语句。如果要显式控制 super() 语句的执行时间,请在该构造函数中添加对该语句的调用。在构造函数中添加对 super() 的调用是一种个人编码风格偏好。如果需要始终明确 super() 的调用时间,可以启用此警告。启用此警告对于打算在某些本地初始化代码之后调用 super() 但忘记对其进行添加的情况非常有用。
3552 与使用 TextField.appendText() 方法相比,使用 += 将文本追加到 TextField 的效率低很多倍。有关此重要文本优化操作的详细信息,请参阅本语言参考中有关 TextField 类的 appendText() 方法的内容。
3554 使用了 Function 值,但是应为类型 _。此函数参考之后可能缺少括号 ()。 在 Actionscript 中,可以将函数本身用作值。此处所述的代码使用的是 Function 类型的值,但需要的是 Function、Object 或 * 之外的类型。通常,这表示出现函数名称之后遗漏括号 () 的键入错误。
3556 不推荐使用 instanceof 运算符,请改用 is 运算符。
3574 迁移错误:Actionscript 2.0 XML 类已重命名为 XMLDocument。 这是一个代码迁移警告。在 Actionscript 3.0 和 Actionscript 2.0 中,XML 是不同的类。Actionscript 3.0 中的 XMLDocument 类与 Actionscript 2.0 中的 XML 类等效。Actionscript 3.0 XML 类通过更为简便和更加强大的 API 提供了增强的功能。有关其它详细信息,请参阅《Actionscript 语言参考》中的 XML。
3576 Date(x) 与新的 Date().toString() 具有相同的行为。若要将某个值转换为 Date 类型,请使用“x as Date”代替 Date(x)。
3582 如果以相同名称将包导入为当前类,将在此作用域中隐藏该类的标识符。
3584 指定了多个名称为“_”的参数。对该参数的引用将始终解析为最后一个参数。
3590 使用了非 Boolean 值,但是应为 Boolean 值。
3591 使用了 _,但是应为 Boolean 值。表达式将强制为 Boolean 类型。
3593 _ 不是动态类 _ 的可识别属性。 在严谨的编译模式下,不会在动态类的实例中检查未定义属性。类型 Date、RegExp 和 Error 是动态的,以便向后与 ECMAscript 兼容。此警告在这些类的实例中找到了对未定义属性的使用。一个常见的问题是尝试获取或设置的 Date 值的 year 属性不存在。正确的属性名称是 fullYear。
3595 _ 不是动态类 _ 的可识别方法。 在严谨的编译模式下,不会在动态类的实例中检查未定义的方法。类型 Date、RegExp 和 Error 是动态的,以便向后与 ECMAscript 兼容。此警告在这些类的实例中找到了对未定义方法的使用。
3597 重复的变量定义。 编译器检测到变量的重复定义。这会导致意外的结果。Actionscript 不支持变量的块级别作用范围。在函数体内定义的所有变量属于同一范围,即便这些变量在 if 语句、while 语句和 for 语句中定义,也是如此。例如,下面的代码会重新声明变量 x 两次:
function test() {
var x:Number = 10;
if (true) {
for (var x=0; x < 5; x++) // 此处将出现警告,这是 x 的第二次定义
trace(x);
}
trace(x); // 是 5,而不是 10。由上面的 for 循环设置的最后一个值是 x 的当前值
}
3598 定义的名称和已导入的包的名称相同。如果不加限定地引用该名称,则该名称将被解析为包而不是定义。
3599 定义的名称和已导入的包的名称相同。如果不加限定地引用该名称,则该名称将被解析为包而不是定义。如果某定义的名称与范围内的包相同,则对该名称的任何非限定引用都将解析为该包,而不是解析为该定义。这会在尝试引用该变量时导致意外的错误。为此,必须限定对该定义的所有引用,以便将其解析为该定义,而不是解析为该包。
3600 可能试图删除固定属性。
3601 不能删除声明属性 _。若要释放相关内存,请将其值设置为 null。.utils.trace; trace "hello"
1072
google_protectAndRun("render_ads.js::google_render_ad", google_handleError, google_render_ad);

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器