守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 703|回复: 0

[ActionScript] flex中with关键字的使用

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    51753
    钢镚
    1422

    开源英雄守望者

    发表于 2015-9-8 12:24:23 | 显示全部楼层 |阅读模式

    with语句
    用法
    with (object:Object) { // 语句}

    建立要用于执行一条或多条语句的默认对象,从而潜在地减少需要编写的代码量。
    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 参数中指定。
    • Activation 对象(脚本调用函数时自动创建的临时对象,该函数包含函数中调用的局部变量)
    • 该对象包含当前正在执行的脚本
    • 全局对象(如 Math 和 String 等内置对象)。
    若要在 with 语句内部设置变量,必须已在 with 语句外部声明了该变量,或必须输入了希望该变量所存在的时间轴的完整路径。如果在 with 语句中设置了未声明的变量,with 语句将根据范围链查找该值。如果该变量尚不存在,则将在调用 with 语句的时间轴上设置此新值。


    参数
    object:Object — ActionScript 对象或影片剪辑的一个实例。


    下例设置 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);
    with 语句对于同时访问一个范围链列表中的多个项很有用。下例中,内置的 Math 对象放置在范围链的前部。将 Math 设置为默认对象会将标识符 cos、sin 和 PI 分别解析为 Math.cos、Math.sin 和 Math.PI。标识符 a、x、y 和 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); /* output: area = 28.2743338823081 x = -3 y = 3*/




    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2019-10-19 15:59 , Processed in 0.042487 second(s), 36 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

    快速回复 返回顶部 返回列表