中国设计联盟
联网
平面设计 画册 VI欣赏 包装 CG-插画 搜索 个人网页 Alexa排名 CSS 建站资源 下载专区 JS特效 品牌服装 服装院校 专题欣赏 SEO 图标欣赏 专题
网站建设 域名注册 网站建设 虚拟主机 广州网站设计 域名注册 广州网站建设 上海网站建设 虚拟主机 广州网页设计  虚拟主机 域名注册 acg王国 ACG玩家
求创科技
网站建设
中国福网
中国互联
艺魂宝库网
时代网
招聘求职
中资源
当前位置:网络学院首页 >> 设计教程 >> Flash >> Flash As知识:从AS2到AS3

Flash As知识:从AS2到AS3 (2)

来源:中国设计秀    作者:flashlizi    点击:136     加入收藏    发表评论
0
顶一下
  3、参数
  在AS3中增加了一个... (rest)这样的参数。它的作用是指明函数可以接收任意多个以逗号分隔的参数。AS3代码:

function testfun1(param0, param1, ...arg)
{
    trace(arg is Array,arg,arg.length);
}
testfun1("param0","param1","param2","param3");
//return: true param2,param3 2

  在这里... arg表示一个名为arg的数组。
  当运行testfun1后,arg=["param2","param3"]。还记得function有个arguments 类么,当使用了...(rest)后,argumnets 就无法获取了。但是如上例所示arg.length 同样可以使用。但是并没有类似arguments.callee 的这种方法,所以要使用...arg的时候确保不会使用arguments.callee 的方法。
[NextPage]访问控制以及命名空间

  在AS2中我们已经知道有public, private 这2个访问控制符,在AS3中增加了internal和protected,并且对类、方法的访问控制更加严格,也更加合理和方便。另外,AS3中还增加了命名空间namespace,这样我们的访问控制更是灵活无比。(public和private 相信大家已经熟悉了,故不赘述)如有错误,敬请指正。

  internal 指明类、变量、常数、方法等在包package 级别可访问到。大家可能会问它和public与private的区别。public只能在package{}中才能使用,但public控制的类或方法可以在任何地方访问到;private只能在class{}中才能使用,它控制的类或方法仅能在相应的class中才能访问到。而internal可以在package{}外使用,但它只能作用于这个as文件内部。比如如下DDD.as中代码为:


package flashrek.example{
    public class DDD {
        function DDD() {
            var e:EEE=new EEE();

        }
    }
}
internal var internalStr:String="internalStr";
class EEE {
    function EEE() {
        trace(internalStr);
    }
}

  那么如下代码运行结果为:

import flashrek.example.DDD;
var d=new DDD();//输出:internalStr
trace(internalStr);//输出:错误Err

  可以看出,类DDD可以访问到package外的类EEE(默认就是internal,因此可以省略),而类EEE也可以访问到变量internalStr。而DDD.as文件外的其他地方就无法访问到EEE和internalStr了。

  和internal不同,protected只能应用于类class内。它指明变量、常数、方法等在类class级别可访问到。与private区别在于,protected指定的方法、变量等是可以继承的,在子类中能访问到他们。

  AS3中还引入了命名空间namespace。当你有一些有特殊用途的方法分布在不同的包package里,你想要这些方法在所有package里都可以应用,但你又不想把这些方法设置为public。这个时候,namespace就能达到你的目的。

  首先你要定义一个namespace,(flashrek.as):

package flashrek.example{
    public namespace flashrek= www.webjx.com;
}

  然后在AAA.as文件中的代码为:

package flashrek.example{
    import flashrek.example.flashrek;
    public class AAA {        
        function AAA() {
            var b:BBB=new BBB();
            //flashrek::NStest();
        }
        flashrek function NStest() {
            trace("namespace test");
        }
    }
}
//package外的类、命名空间不能默认且只能是internal的,且仅能为在此package内使用。
//package外是不能使用public关键字的。
internal class BBB {
    function BBB() {
        trace("BBB");
        var c:CCC=new CCC();
    }
}
class CCC {
    function CCC() {
        trace("CCC");
    }
}

[1] [2] [3] [4]
2007-06-25 17:41:00    出处:
Google
热点文章/相关文章