分享

Flash函数大全之四. 变量

 曾绳汤图书馆 2010-11-16
变量 : 修改和访问变量的动作
1. delete
可用性 Flash Player 5 。用法 delete reference 参数 reference
要消除的变量或对象的名称。返回无。说明运算符;销毁由 reference 参数指定的对象或变量,如果该对象被成功删除,则返回 true ;否则返回
false 值。该运算符对于释放脚本所用的内存非常有用。虽然 delete 是一个运算符,但它通常作为语句使用,如下所示: delete x; 如果
reference 参数不存在,或者不能被删除,则 delete 运算符可能失败并返回 false 。预定义的对象和属性以及由 var
声明的变量不能删除。不能使用 delete 运算符删除影片剪辑。示例下面的示例创建一个对象并使用它,然后在不再需要时删除它。 account =
new Object(); account.name = \'Jon\'; account.balance = 10000; delete
account; 示例下面的示例删除对象的一个属性。 // create the new object "account" account =
new Object(); // assign property name to the account account.name =
\'Jon\'; // delete the property delete account.name; 示例下面是删除对象属性的另一个示例。 //
create an Array object with length 0 array = new Array(); // Array.length
is now 1 array[0] = "abc"; // add another element to the
array,Array.length is now 2array[1] = "def"; // add another element to
array,Array.length is now 3 array[2] = "ghi"; // array[2] is deleted, but
Array.length is not changed, delete array[2]; 下面的示例阐释了 delete 对于对象引用的行为方式:
// create a new object, and assign the variable ref1 // to refer to the
object ref1 = new Object(); ref1.name = "Jody"; // copy the reference
variable into a new variable // and delete ref1 ref2 = ref1; delete ref1;
如果 ref1 尚未拷贝到 ref2 中,则当删除 ref1 时,该对象将被删除,因为将没有指向它的引用。如果删除 ref2
,则不再有指向该对象的任何引用,该对象将被销毁,同时释放它所使用的内存。另请参见 var 2/2
2. set variable
可用性 Flash Player 4 。用法 set( variable , expression ) 参数 variable 保存
expression 参数值的标识符。 expression 分配给变量的值。返回无。说明动作;为变量赋值。 variable
是保存数据的容器。容器本身始终不变,但内容可以更改。通过在影片播放时更改变量的值,可以记录和保存有关用户所执行操作的信息;记录当影片播放时更改的值;或者计算某条件是
true 还是 false
。变量可以保存任何类型的数据(例如,字符串、数字、布尔值、对象或影片剪辑)。每个影片和影片剪辑的时间轴都有其自己的变量集,每个变量又都有其自己独立于其他时间轴上的变量的值。动作脚本是一种动态类型化语言。每个变量都有一种类型。该类型是在运行时分配的,并且可以在执行过程中进行更改。这一点与静态类型化语言(如
Java 或 C++ )不同,在静态类型化语言中,在编译时分配类型,而且在运行时无法更改。示例此示例设置一个名为 orig _ x_pos
的变量,该变量存储 ship 影片剪辑的原始轴位置,以便以后在影片中将船 (ship) 重置到其起始位置。 on(release) {
set(orig_x_pos, getProperty ("ship", _x )); } 上面的代码与下面的代码结果一样: on(release)
{ orig_x_pos = ship._x; } 另请参见 var call 1/1
3. var
可用性 Flash Player 5 。用法 var variableName1 [= value1 ][..., variableNameN [=
valueN ]] 参数 variableName 标识符。 value
分配给变量的值。返回无。说明动作;用于声明局部变量。如果在函数内声明局部变量,那么变量就是为该函数定义的,且在该函数调用结束时到期。如果变量不是在块
( {} ) 内声明的,但使用 call 动作执行该动作列表,则该变量为局部变量,且在当前列表结束时到期。如果变量不是在块中声明的,且不使用
call 动作执行当前动作列表,则这些变量不是局部变量。示例下面的示例使用 var 动作声明和分配变量: var x; var y = 1; var
z = 3, w = 4; var s, t, u = z; 1/1
4. with
可用性 Flash Player 5 。用法 with ( object ) { statement(s) ; } 参数 object
动作脚本对象或影片剪辑的实例。 statement(s) 花括号中包含的动作或一组动作。返回无。说明动作;允许您使用 object
参数指定一个对象(比如影片剪辑),并使用 statement(s) 参数计算对象中的表达式和动作。这可以使您不必重复书写对象的名称或路径。
object 参数成为读取 statement(s) 参数中的属性、变量与函数的上下文。例如,如果 object 为 myArray
,且指定属性中的两个是 length 与 concat ,则这些属性将自动作为 myArray . length 与 myArray.concat
进行读取。在另一个示例中,如果 object 为 state.california ,则 with 动作中的任何动作或语句将从 california
实例中调用。若要查找 statement(s) 参数中某标识符的值,动作脚本将从 object
指定的范围链的开头开始查找,并以特定的顺序在范围链的每个级别中搜索该标识符。 with
动作使用范围链解析标识符,该范围链从下面列表中的第一项开始,一直到最后一项结束: - 在 with 动作最里面的 object 参数中指定的对象。
- 在 with 动作最外面的 object 参数中指定的对象。 -
激活的对象。(当调用函数时自动创建的临时对象,该函数包含函数所调用的局部变量。) - 包含当前执行脚本的影片剪辑。 - 全局对象(诸如 Math 与
String 的内置对象)。若要在 with 动作中设置变量,该变量必须已在 with
动作外部进行了声明,或者您必须输入该变量所生存时间轴的完整路径。如果未声明该变量就在 with 动作中设置它,则该 with
动作将根据范围链寻找该值。如果该变量还不存在,则将在调用 with 动作的时间轴上设置此新值。在 Flash 5 中, with 动作替换了被否决的
tellTarget 动作。建议您使用 with 而不使用 tellTarget ,因为前者是对 ECMA-262 标准的一个标准动作脚本扩展功能。
with 与 tellTarget 动作的主要差异在于 with 采用对影片剪辑或其他对象的引用作为其参数,而 tellTarget
采用标识影片剪辑的目标路径字符串作为其参数,且不能用于指向对象。示例下面的示例设置 someOtherMovieClip 实例的 x 与 y
属性,然后指示 someOtherMovieClip 转到第三帧并停止。 1/2with (someOtherMovieClip) { _x =
50; _y = 100; gotoAndStop(3); } 下面的代码片断显示如何不使用 with 动作编写前面的代码。
someOtherMovieClip._x = 50; someOtherMovieClip._y = 100;
someOtherMovieClip.gotoAndStop(3); 还可使用 tellTarget 动作编写这段代码。然而,如果
someOtherMovieClip 不是影片剪辑,而是一个对象,则不能使用 with 动作。 tellTarget
("someOtherMovieClip") { _x = 50; _y = 100; gotoAndStop(3); } with
动作对于在范围链列表中同时访问多项十分有用。在下面的示例中,内置 Math 对象被放置在范围链的前面。将 Math 设置为默认对象可以将标识符
cos 、 sin 与 PI 分别解析为、 Math.sin 与 Math.PI 。标识符 a 、 x 、 y 与 r 不是 Math
对象的方法或属性,但由于它们存在于函数 polar 的对象激活范围中,所以将它们解析为相应的局部变量。 function polar(r) {
var a, x, y; with (Math) { a = PI * r * r; x = r * cos(PI); y = r *
sin(PI/2); } trace("area = " +a); trace("x = " + x); trace("y = " + y); }
可以使用嵌套的 with 动作访问多重范围中的信息。在下面的示例中,实例 fresno 与实例 salinas 是实例 california
的子级。该语句设置 fresno 与 salinas 的 _alpha 值,且不改变 california 的 _alpha 值。 with
(california){ with (fresno){ _alpha = 20; } with (salinas){ _alpha = 40; }
} 另请参见 tellTarget 2/2

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多