返回列表 回复 发帖

★AS2查漏补缺[2007.10.10更新]

★序言:这半年由于要做一个比较大的AS2项目,估计没时间学AS3了,只好利用业余时间对AS2进行最后一次查漏补缺,计划把FLASH8帮助里的《AS 2.0 语言参考》从头到尾仔细看一遍,然后把自己不知道的,或者长时间不用已经淡忘的小知识点不定期更新在这篇帖子里,大家如果有兴趣可以常来看看,也许有些知识点你也不曾注意到哦:)

★寂寞火山:http://www.huoshan.org/boKe/boKe.html#id=117

→如果对包含 #include 语句的脚本使用"语法检查"按钮,则也会检查所包括文件的语法。

→#initclip指令,可以改变编译器编译AS的固有顺序,将任意MC的时间轴变量转换成_root上的变量。

→newline常数,相当于一个“\r”,起换行作用。

→escape函数,对字符串进行URL编码,用IE打开一个包含中文字体路径的网页,然后看地址栏,就可以直观的体验到什么是URL编码了。

→fscommand的exec指令是用来在本地打开.exe文件的,但有三个限制条件:
1,FLASH要发布为EXE。
2,要调用的.exe文件必须位于flash所在目录的子目录“fscommand”中。
3,注意调用的文件路径是your.exe,而不是fscommand/your.exe

→isFinite(expression:Object)函数:计算expression,如果结果为有限数,则返回 true;如果为无穷大或负无穷大,则返回 false。无穷大或负无穷大的出现指示有错误的数学条件,例如除以 0。

→parseFloat(string:String):将字符串转换为浮点数。此函数读取或分析 并返回字符串中的数字,直到此函数遇到不是初始数字一部分的字符。如果字符串不是以可以分析的数字开头,parseFloat() 将返回 NaN。有效整数前面的空白将被忽略,有效整数后面的非数字字符也将被忽略。

→parseInt(expression:String, [radix:Number]):与parseFloat函数类似,但它返回整数值,而且可以通过radix参数将返回值转换成2-36范围内的任意进制的数字。

→setInterval函数中的第一个参数,它的真正意义是储存你要调用函数的作用域,比如,你的函数是定义在和setInterval函数相同的MC里,这时可以直接用this调用,但如果你的函数是在主时间轴定义的,那就必须写成_root或者_level0了。

→_focusrect全局属性可以指定按钮或影片剪辑在通过TAB获得焦点的时候,是否显示黄色边框,true为显示,false不显示。另外它还可以指定全局或者特定MC内响应全键盘还是只响应TAB键,true为响应全键盘,false为只响应TAB键。

→typeof运算符将把按钮和文本域都返回为Object,而不是Button和TextField。

→void expression,在void运算符中,会先计算表达式expression,然后放弃其值而返回undefined。看下面的代码:
var a = 1;
trace(void (a++));   //输出undefined
trace(a);   //输出2,而不是1

→delete reference:破坏由 reference 参数指定的对象或变量的引用,释放内存,如果成功删除了引用,则返回 true;否则返回 false。看下面的代码:
var a="a";
trace(delete a);  //删除成功,输出true
trace(delete b);  //删除失败,输出false
delete所不能做的:
1,删除预定义的对象或属性
trace(delete _root);  //输出false
2,删除在函数里用var定义的变量
function a() {
       var b = "";
       trace(delete b);  //输出false
}
3,删除MC
_root.createEmptyMovieClip("a_mc", 0);
trace(delete _root.a_mc);  //输出false

→return语句不能返回多个值。如果尝试返回多个值,则将只返回最后一个值。return a, b, c ;  //返回c的值

→set variable 语句可以把字符串和变量结合为新的变量名字,并对新变量赋值,但它不支持严格数据类型指定。示例:
var i :String= "jimo";
set(i+"huoshan", "寂寞火山");
trace(jimohuoshan);  //输出 寂寞火山
另外,set语句中不支持严格数据类型指定。如果使用此语句将某个变量设置为一个值,而该值的数据类型与类文件中与该变量关联的数据类型不同,则不生成编译器错误。
http://huoshan.org
→arguments类:
1,arguments类的callee属性可以方便实现一个函数自身进行递归:
var n = 0;
function f1(n_fc) {
       trace(n_fc);    //会递归输出0,1,2,3
       if (n_fc<3) {
              n_fc++;
              arguments.callee(n_fc);
       }  
}
f1(n);

2,arguments类的caller属性则方便在两个函数之间进行递归。
var n = 0;
function f1(n_fc) {
       if (n<5) {
              n++;
              trace("f1→"+n);
              f2(n);
       } else {
              return;
       }
}
function f2(n_fc) {
       trace("f2→"+n);
       arguments.caller(n); //调用f2的父级函数f1
}
f1(n);

运行上面的代码会输出下面的结果:
f1→1
f2→1
f1→2
f2→2
f1→3
f2→3
f1→4
f2→4
f1→5
f2→5
由此可见,由于函数f1中嵌套了函数f2,使用属性caller就可以在它们之间形成递归。

3,length属性则可以获得传递给函数的参数数目。
http://huoshan.org
我以为是将flash8帮助文档的错漏之处揪出来呢!大家如果感兴趣,那天把我的flash8帮助文档错误疏忽之处晒出来给大家看看。

[ 本帖最后由 烟波浩渺 于 2007-10-14 19:50 编辑 ]
承接flash特效制作
我也补了补
谢了。
向大家学习!
很久没看了8了,是要温习一下
谢了。
用你的博客或者网站赚美金!非常简单。
http://www.yc66.cn/gg
学习了,呵呵:lol
返回列表