flash告知命令with什么意思
答案:2 悬赏:80 手机版
解决时间 2021-01-23 00:03
- 提问者网友:绫月
- 2021-01-21 23:34
flash告知命令with什么意思
最佳答案
- 五星知识达人网友:慢性怪人
- 2021-01-22 00:16
用法
with (object) {
statement(s);
}
参数
object 动作脚本对象或影片剪辑的一个实例。
statement(s) 包括在大括号中的一个动作或一组动作。
返回
无。
说明
语句;允许您使用 object 参数指定一个对象(比如影片剪辑),并使用 statement(s) 参数计算该对象中的表达式和动作。这可以使您不必重复书写对象的名称或路径。
object 参数将成为读取 statement(s) 参数中的属性、变量与函数的上下文。例如,如果 object 为 my_array,且指定的属性中有 length 和 concat 这样两个属性,则这些属性将自动作为 my_array.length 和 my_array.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 采用标识影片剪辑的目标路径字符串作为其参数,且不能用于指向对象。
示例
下面的示例设置 someOther_mc 实例的 _x 和 _y 属性,然后指示 someOther_mc 转到第 3 帧并停止。
with (someOther_mc) {
_x = 50;
_y = 100;
gotoAndStop(3);
}
下面的代码片断显示不使用 with 动作如何编写上面的代码。
someOther_mc._x = 50;
someOther_mc._y = 100;
someOther_mc.gotoAndStop(3);
还可使用 tellTarget 动作编写这段代码。但是,如果 someOther_mc 不是影片剪辑,而是一个对象,则不能使用 with 动作。
tellTarget ("someOther_mc") {
_x = 50;
_y = 100;
gotoAndStop(3);
}
with 动作对于同时访问一个范围链列表中的多项十分有用。在下面的示例中,内置 Math 对象被放置在范围链的前面。将 Math 设置为默认对象可以将标识符 cos、sin 和 PI 分别解析为 Math.cos、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;
}
}
with (object) {
statement(s);
}
参数
object 动作脚本对象或影片剪辑的一个实例。
statement(s) 包括在大括号中的一个动作或一组动作。
返回
无。
说明
语句;允许您使用 object 参数指定一个对象(比如影片剪辑),并使用 statement(s) 参数计算该对象中的表达式和动作。这可以使您不必重复书写对象的名称或路径。
object 参数将成为读取 statement(s) 参数中的属性、变量与函数的上下文。例如,如果 object 为 my_array,且指定的属性中有 length 和 concat 这样两个属性,则这些属性将自动作为 my_array.length 和 my_array.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 采用标识影片剪辑的目标路径字符串作为其参数,且不能用于指向对象。
示例
下面的示例设置 someOther_mc 实例的 _x 和 _y 属性,然后指示 someOther_mc 转到第 3 帧并停止。
with (someOther_mc) {
_x = 50;
_y = 100;
gotoAndStop(3);
}
下面的代码片断显示不使用 with 动作如何编写上面的代码。
someOther_mc._x = 50;
someOther_mc._y = 100;
someOther_mc.gotoAndStop(3);
还可使用 tellTarget 动作编写这段代码。但是,如果 someOther_mc 不是影片剪辑,而是一个对象,则不能使用 with 动作。
tellTarget ("someOther_mc") {
_x = 50;
_y = 100;
gotoAndStop(3);
}
with 动作对于同时访问一个范围链列表中的多项十分有用。在下面的示例中,内置 Math 对象被放置在范围链的前面。将 Math 设置为默认对象可以将标识符 cos、sin 和 PI 分别解析为 Math.cos、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;
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯