香港新极真会:flash with的用法

来源:百度文库 编辑:九乡新闻网 时间:2024/07/14 11:58:26
with (object: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) 参数中某个标识符的值,ActionScript 将从 object 指定的范围链的开头开始查找,并按照特定的顺序在范围链的每个级别中搜索该标识符。

with 语句使用范围链解析标识符,该范围链从下面列表中的第一项开始,到最后一项结束:

  • 在最里面的 with 语句中的 object 参数中指定的对象。
  • 在最外面的 with 语句中的 object 参数中指定的对象。
  • 激活的对象。(当调用函数时自动创建的临时对象,该函数包含函数所调用的局部变量。)
  • 包含当前执行脚本的影片剪辑。
  • 全局对象(诸如 Math 与 String 的内置对象)。

若要在 with 语句中设置变量,该变量必须已在 with 语句外部进行了声明,或者您必须输入该变量所存在的时间轴的完整路径。如果在 with 语句中设置了未声明的变量,with 语句将根据范围链查找该值。如果该变量尚不存在,则将在调用 with 语句的时间轴上设置此新值。

可以用直接路径来代替 with()。如果觉得路径输入起来又长又麻烦,可以创建一个局部变量并把路径存储到其中,这样就可以重用代码,如下面的 ActionScript 所示:

var shortcut = this._parent._parent.name_txt; shortcut.text = "Hank"; shortcut.autoSize = true;

可用性:Flash Player 5;ActionScript 1.0

with (someOther_mc) {  _x = 50;  _y = 100;  gotoAndStop(3); } 

下面的代码片断说明如何在不使用 with 语句的情况下编写上述代码。

someOther_mc._x = 50; someOther_mc._y = 100; someOther_mc.gotoAndStop(3);

with 语句对于同时访问一个范围链列表中的多个项很有用。在下面的示例中,内置 Math 对象被放置在范围链的前面。将 Math 设置为将标识符 cossin 和 PI 分别解析为 Math.cosMath.sin和 Math.PI 的默认对象。标识符 axy 和 r 不是 Math 对象的方法或属性,但是,由于它们存在于函数 polar() 的对象激活范围内,它们将解析为对应的局部变量。

function polar(r:Number):Void {  var a:Number, x:Number, y:Number;  with (Math) {  a = PI * pow(r, 2);  x = r * cos(PI);  y = r * sin(PI / 2);  }  trace("area = " + a);  trace("x = " + x);  trace("y = " + y); } polar(3);

下面的结果显示在"输出"面板中。

area = 28.2743338823081 x = -3