标题:
Flash5 ActionScript语法详解
[打印本页]
作者:
blueblitz
时间:
2006-11-25 17:53
标题:
Flash5 ActionScript语法详解
1、废话: 三天两头看见有人在找Flash5 ActionScript的语法教材(找来找去总是那么几篇:P)。虽然Flash自带的帮助文件里的ActionScript Dictionary很全,但是许多虫虫抱怨说E文太差看不懂(所以老师常说要好好学习嘛!)。而市面上的官方翻译又没什么特色,甚至还有语法错误(我们只为¥!我们只为¥!)。555~ 为了广大虫子们的发展利益,小弟特地写了此篇《Flash5 AcitonScript语法详解》。 可谓不仅分类明确,而且绝不抄袭:)(考!吹什么吹,当心得哮喘!)。 2、约定称谓: variable 变量,可为数值、布尔值或字符串。 target 目标路径字符串。 mc 影片片段实例,可为实例的对象实体或目标路径字符串。 property 影片片段属性。 obj_mc 对象或影片片段。 member 对象的成员或影片片段的属性。 expression 表达式,可为变量、对象、影片片段实例或式子。 num 数值表达式。 string 字符串表达式。 char 字符表达式。 func 函数。 statement 语句。 scene 场景,可为常量或表达式。 frame 帧,可为常量或表达式。 url URL链接字符串。 ================================= ● 运算符 ● ================================== 1、算术运算符: - 取负 -expression + 加 expression1 + expression2 - 减 expression1 - expression2 * 乘 expression1 * expression2 / 除 expression1 / expression2 % 求余 expression1 % expression2 12 % 5 -> 2 ?: 定向运算符 expression1 ? expression2 : expression3 当expression1的值为true时取expression2,否则取expression3 2、逻辑运算符:(注:括号中为旧版本写法) !(not) 逻辑非 !expression &&(and) 逻辑与 expression1 && expression2 //(or) 逻辑或 expression1 // expression2 !=(<> 不相等 expression1 != expression2 == 相等 expression1 == expression2 < 小于 expression1 < expression2 > 大于 expression1 > expression2 <= 小于等于 expression1 <= expression2 >= 大于等于 expression1 >= expression2 说明:在使用&&(//)时,若表达式expression1已为false(true)值,则不再计算expression2的值,直接返回false(true)。 否则,继续计算expression2的值,再作逻辑与(或)运算。 3、字符串运算符:(注:括号中为新版本中的符号表示法) "", ';'; 引号 用于表示字符串 add(+) 字符串叠加 expression1 add expression2 "1" add "2" -> "12" eq(==) 字符串相等 expression1 eq expression2 ne(!=) 字符串不相等 expression1 ne expression2 lt(< 字符串小于 expression1 lt expression2 "12" lt "2" -> true gt(> 字符串大于 expression1 gt expression2 "12" gt "1" -> true le(<=) 字符串小于等于 expression1 le expression2 ge(>=) 字符串大于等于 expression1 ge expression2 说明:字符串在比较时,按从左到右一个个字符比较ASCII码。若遇到不同,就返回ASCII码大小比较的结果。如果直到一个字符串结束时都相等,则若另一个字符串也结束,就表示相等,否则,未结束的字符串较大。 虽然字符串运算符可用相应的符号表示,但在使用上有一定区别。用字母表示的运算符在处理时先将两个表达式都转化为字符串后再作运算或比较。而用符号表示的运算符在处理时若有一个表达式为数值,就将另一个表达式转化为数值再作运算或比较。比如:19 > 2的值为true,而19 gt 2的值为false。 4、位运算符: --------------------------------------- ~ 按位取反 ~expression 按位1->0,0->1 & 按位与 expression1 & expression2 按位11->1,10->0,01->0, 00->0 / 按位或 expression1 / expression2 按位11->1,10->1,01->1, 00->0 ^ 按位异或 expression1 ^ expression2 按位11->0,10->1,01->1, 00->0 << 按位左移 expression << num 左移num位,右补0 >> 按位算术右移 expression >> num 右移num位,左补符号位 >>> 按位逻辑右移 expression >>> num 右移num位,左补0 说明:按位运算表示将两个表达式的值转化为数值后按二进制的位进行运算。比如12 & 34 -> 2,由于12的二进制为01010,34的二进制为10010,所以按位与后为00010即2。按位移动时num的取值为0~31 5、赋值运算符: ++ 自加 variable++,++variable 相当于variable = variable + 1 -- 自减 variable--,--variable 相当于variable = variable - 1 += 自加赋值 variable += expression 等价于varaible = variable + expression -= 自减赋值 variable -= expression 等价于varaible = variable - expression *= 自乘赋值 variable *= expression 等价于varaible = variable * expression /= 自除赋值 variable /= expression 等价于varaible = variable / expression %= 自求余赋值 variable %= expression 等价于varaible = variable % expression &= 自按位与赋值 variable &= expression 等价于varaible = variable & expression /= 自按位或赋值 variable /= expression 等价于varaible = variable / expression ^= 自按位异或赋值 variable ^= expression 等价于varaible = variable ^ expression <<= 自按位左移赋值 variable <<= num 等价于varaible = variable << num >>= 自按位算术右移赋值 variable >>= num 等价于varaible = variable >> num >>>= 自按位逻辑右移赋值 variable >>>= num 等价于varaible = variable >>> num 说明:自加和自减的两种用法在返回值上有区别。variable++(--)返回variable未更改前的值,++(--)variable返回variable更改后的值。 6、括号运算符: () 小括号 用法1:用于重置表达式运算的优先级 如:(a + 3) * 4 用法2:用于包含函数的参数 如:function func(var1, var2) {...} date = getDate(); [] 中括号 用法1:用于定义及初始化数组 如:myArray = [] <=> myArray = new Array() myArray = ["red", "orange", "yellow"> 用法2:用于获取数组中的项 如:myArray[0] = "red" 用法3:用于获取对象或影片片段的成员 如:account = myObject["account"> <=> account = myObject.account _root["mc" + 1]["_x"> = 30 <=> _root.mc1._x = 30 {} 大括号 用法1:用于界定语句段范围(用在复合语句与函数体定义中) 如:if (a == 2) {a = 3; b = 4; ...} function myFunc() {...} 用法2:用于定义及初始化对象 如:myObj = {} <=> myObject = new Object() person = {name:"Peter", child:"Amy"} 7、其他运算符: ; 分号 statement1; statement2 用于分隔同一行内的两个语句 , 逗号 expression1, expression2 用于在一个语句内分隔两个表达式 . 点运算符 obj_mc.member 用于连接对象(影片片段)和其成员(属性) typeof 获取类型 typeof(expression) 返回表达式的值的类型(字符串表示) 未定义 "undefined" 空值 "null" 数值 "number" 字符串 "string" 对象 "object" 函数 "function" 影片片段 "movieclip" void 未定义值 void(expression) 返回未定义值 ================================== ● 语法关键字及语句 ● ================================== 1、指令语句: break 跳出最近的循环体(do...while,while...,for...,for(in)...) continue 用在循环体内,表示忽略之后的语句,直接进入下一轮循环 #include "filename" 引入一个外部脚本文件: var variable 定义一个局部变量(只在函数体内有效) return [expression] 跳出函数体(并返回一个值) new func(...) 新建一个对象,并用func构造函数进行构造 delete variable 删除一个变量,使其变为未定义 2、判断语句({}内语句数为1时{}可省): if (expression1) { statement(s)1 } else if (expression2) { statement(s)2 ... } else { statement(s)n } 当expression1为true时执行statement(s)1,当expression2为true执行 statement(s)2......否则执行statement(s)n。{}内语句数为1时{}可省。 ifFrameLoaded ([scene,] frame) { statement(s) } 当场景scene的帧frame已经载入时,执行statement(s)。 3、循环语句({}内语句数为1时{}可省): while (expression) { statement(s) } 当expression的值为true时反复执行statement(s)直到expression的值为false。 do { statement(s) } while (expression) 反复执行statement(s)直到expression为false。{}内语句数为1时{}可省。 for (statement1; expression; statement2) { statements(s) } 先执行statement1,当expression的值为true时反复执行statement(s),并在执行 完一轮后执行一次statement2,直到expression的值为false。 for (variable in obj_mc) { statements(s) } variable依次取obj_mc的各成员名称,反复执行statements(s),直到所有成员都 取过一遍。 4、对象操作语句({}内语句数为1时{}可省): with (obj_mc) { statement(s) } 对obj_mc进行操作,凡statement(s)里用到的与obj_mc的成员名相同的变量、函数、影片片段,都指代obj_mc的成员。 tellTarget (mc) { statement(s) } 对mc进行操作,凡用到的变量、函数、影片片段,只要未指明绝对路径,都指代mc的成员。 5、函数及事件: function func(variable1, variable2, ...) { statement(s) } 定义一个函数。函数体内this对象指代调用该函数的对象或影片片段,未用var定义的变量(非形参)从属于该函数所在的影片片段。func名称省略时该复合语句返回一个类型为"function"的值,用以指代该函数。 on (mouseEvent) { statement(s) } 只能用在按钮的动作里。mouseEvent的可取值为: press 鼠标键在按钮上按下 release 鼠标键在按钮上松开 releaseOutside 鼠标键在按钮区域外松开 rollOver 鼠标滑过按钮 rollOut 鼠标滑出按钮 dragOver 鼠标有键按下时滑过按钮 dragOut 鼠标有键按下时滑出按钮 keyPress(key) key键被按下,key为ASCII码字符或Key对象常量 各事件可用逗号分隔,当有一事件成立时就执行statement(s)。 onClipEvent (clipEvent) { statement(s) } 只能用在影片片段的动作里。clipEvent的可取值为: load 该影片片段已载入 unload 该影片片段被卸载 data 用loadVariableNum载入数据后或用loadMovie载入影片的每个影片片段后enterFrame 播放至该影片片段所在帧(若停在该帧则反复执行) mouseMove 鼠标移动 mouseDown 鼠标键按下 mouseUp 鼠标键松开 keyDown 键盘键按下 keyUp 键盘键松开 各事件可用逗号分隔,当有一事件成立时就执行statement(s)。 =================================== ● 常量及全局函数 ● =================================== 注:函数名前加=号的表示该函数有返回值。 1、常量: true 逻辑真。 false 逻辑假。 null 空值,可与未定义值相等(但类型不同)。如variable未定义时, variable == null为true。 NaN 表示Not a Number,即非数值量。用于表征数值计算时发生的非数值型错误。如:1 * ';a';就得NaN。 newline 表示换行符,即';\n';。 Infinity 表示无穷大数值。如:-1 / 0得-Infinity。 2、数值运算函数: = Number(expression) 将expression转化成数值,expression为false、null或未定义时返回0, 为true时返回1,无法转化时返回NaN。如:Number("12e2")返回1200。 = Boolean(expression) 将expression转化成布尔值。expression的值为false、null、"false"或为字符串且Number(expression)为NaN或0则返回false,否则返回true。= int(expression) 将expression转化成数值后取整。如:int("-1.2")返回-1。 = random(num) 随机返回0到num-1(num必须正整数)的某一个整数。 = isFinite(expression) 判断expression转化成数值后是否为有限量。比如isFinite(1/0)返回false。 = isNaN(expression) 判断expression是否为非数值量。 = parseInt(expression, radix_num) 把expression先转化为字符串后再按radix_num进制理解转化为整数。比如: parseInt(12, 16)返回18。 = parseFloat(string) 把字符串转化为浮点数。如:parseFloat("1.2e-2")返回0.012。 3、字符串运算函数: = String(expression) 将expression转为字符串。expression的值可为布尔值、数值、一般对象(返回"[object][object]")、数组对象(返回各项的值列表)、影片片 段(返回绝对路径)。 = chr(num) 返回ASCII码值为num的对应字符。 = ord(char) 返回字符char所对应的ASCII码值(8-bit)。 = length(string) 返回string长度(即字符个数)。 = substring(string, start_num, length_num) 返回string中第start_num(需>=0,否则取0)个字符开始,长度为length_num(需>=0,否则忽略)的子串。若length省略或过界,则返回 start_num之后的整个子串。 = mbchr(num) 返回ASCII码值为num的对应双字节字符。 = mbord(char) 返回双字节字符char所对应的ASCII码值(16-bit)。 = mblength(string) 返回string的双字节长度。 = mbsubstring(string, start_num, length_num) 返回string中第start_num个字符开始,长度为length_num的子串。 = escape(string) 将一般字符串译成URL编码格式的字符串。如escape("1&2")返回"1%262"。 = unescape(string) 将URL格式的字符串解码成一般字符串。如unexcape("%D7%D4%D4%DA")返回"自在"。 注:字符串按双字节字符处理时,双字节字符(如中文字符)代表一个整体。比如字符串"I';m 自在幻想",用在length函数时返回12,而用在mblength函数时返回8。 4、其他函数: = getProperty(mc, property) 返回影片片段mc的property属性值。 = targetPath(mc) 返回影片片段mc的绝对路径字符串。如主场景下的一个影片片段名为mc1,则targetPath(_root.mc1)返回"_level0.mc1"。 = eval(target) 返回目标路径字符串target所指代的变量、对象或影片片段实例。如上例中eval("_root.mc1")返回影片片段mc1实体。 = getTimer() 返回影片从开始播放到当前的时间间隔(毫秒单位)。 = getVersion() 返回系统平台及FlashPlayer的版本。如返回"WIN 5, 0, 30, 0"表示当前系统为Windows,FlashPlayer的版本为5.0r30。 ==================================== ● 影片及影片片段属性 ● ==================================== 1、影片片段可改属性: _x 中心点所在相对X坐标(象素单位) _y 中心点所在相对Y坐标(象素单位) _xscale 横向缩放比例,初始为100 _yscale 纵向缩放比例,初始为100 _rotation 相对旋转角度(度单位) _width 相对显示宽度(象素单位) _height 相对显示高度(象素单位) _alpha 显示透明度(0~100) _visible 是否可见 _focusrect 是否显示焦点框 _name 实例名称 2、影片片段只读属性: _totalframes 总帧数 _framesloaded 已载入的帧数 _currentframe 当前所在帧 _target 绝对目标路径字符串 _url 来源URL地址字符串 _droptarget 拖拽该影片片段的释放点所在的绝对目标路径字符串 _xmouse 鼠标对该影片片段的相对X坐标 _ymouse 鼠标对该影片片段的相对Y坐标 3、影片属性: _quality 显示品质(取值:"LOW","MEDIUM","HIGH","BEST") _highquality 显示高品质(取值:0表示low,1表示high,2表示best) _soundbuftime 流式声音的缓冲时间(秒单位) ====================================== ● 动作指令函数 ● =================================== 1、影片片段操控动作(与影片片段对象的同名方法等价): play() 开始播放当前影片片段(从当前帧开始)。 stop() 停止播放当前影片片段。 prevFrame() 跳至并停止在前一祯。 nextFrame() 跳至并停止在下一祯。 prevScene() 跳至并停止在前一场景的第1帧。 nextScene() 跳至并停止在下一场景的第1帧。 gotoAndPlay([scene,] frame) 跳至scene场景(省略表示当前场景)的frame帧并播放。 gotoAndStop([scene,] frame) 跳至scene场景(省略表示当前场景)的frame帧并停止。 stopDrag() 停止当前的拖拽动作。 2、影片片段相关动作: duplicateMovieClip(mc, name_string, depth_num) 动态复制影片片段mc,副本取名为name_string,显示层次为depth_num,副本与源本在同一路径下,且从第1帧开始播放,源本的状态也被复制。显示层次指的是在该路径下各影片片段的显示上下关系,同一层只能有一个影片片段,否则已有者将被删除,以让位给新定义者。 removeMovieClip(mc) 删除动态创建(用duplicationMovieClip、attachMovie)的影片片段mc。 setProperty(mc, property, expression) 设置影片片段mc的property属性为expression的值。 startDrag(mc, [lockcenter, [x1, y1, x2, y2]]) 开始拖拽mc(一个时刻只能有一个影片片段被拖拽)。lockcenter指定是否把mc的中心点对准鼠标热点(默认为false),x1,y1,x2,y2指定mc所能移动的范围(默认为整个显示区)。 updateAfterEvent(clipEvent) 只能用在影片片段的动作里,使得一处理完clipEvent事件就刷新影片显示。虽然鼠标和影片片段事件当事件一发生就会执行,但由于影片FPS(每秒显示的帧数)的限制,只有当播放到下一帧时事件所作的改动才会被显现,而这时事件可能已被执行了多次。为了使事件实时作用,就可以在事件处理中调用updateAfterEvent,从而使动画显示平滑。clipEvent的可取值有: mouseMove、mouseDown、mouseUp、keyDown、keyUp。 loadMovie(url, mc, [mode]) loadMovieNum(url, level_num, [mode]) 载入url所指定的swf影片文件到影片片段mc(第level_num级影片)下,该操作将会替换掉mc(第level_num级影片)原来的内容。mode指定传递参数的方式(参见getURL)。之后,此mc(_levelN N为level_num的值)便作为载入影片片段的_root。 unloadMovie(mc) unloadMovieNum(level_num) 卸载影片片段mc(第level_num级影片),可以是原来就有的或用loadMovie或loadMovieNum载入的。比如在1.swf中载入2.swf时写loadMovie("2.swf", _root.mc1)(mc1为1.swf主场景下已有的一个影片片段),就可以在1.swf中用unloadMovie(_root.mc1)或在2.swf中用unload(_root)来卸载2.swf。 3、其他动作: trace(expression) 测试expression的值并在输出区显示(只在预览中有用)。 set(target, expression) 设置目标路径字符串target所指代的变量、对象的值为expression的值。 一般用在该变量的名称不确定的情况,如:set("a" + i, i)。 call(frame) 执行frame帧的动作语句(不改变当前变量环境,但在frame帧里的语句中用var声明的变量在调用后被清除。相当于一个函数体)。 stopAllSounds() 关闭影片的所有声音。 toggleHighQuality() 使影片显示品质在low和high之间切换。 loadVariables(url, mc, [mode]) loadVariablesNum(url, level_num, [mode]) 从url所指定的文件读取数据到影片片段mc(第level_num级影片)下。mode指定传递参数的方式(参见getURL)。比如loadVariables("1.txt", _root),在1.txt中写:a=Fictiony,则载入后_root.a变量的值就为"Fictiony"。 被读取的文件格式与通过URL向服务器端程序发送参数是一样的,如: a=3&b=4&c=Good+Day 在写时,=号左边表示变量名,右边表示数据(按字符串理解),&符用来分隔参数(未分隔的参数定义里若有多个=,则除第1个外都作数据理解),+号用来连接两个字符串(相当于空格),%用来表示url编码字符(如%26表示&符)。如需要读入&、+和%字符,则需写成url编码字符形式,分别为: &:%26,+:%2B,%:%25 print(mc, type) printNum(level_num, type) printAsBitmap(mc, type) printAsBitmapNum(level_num, type) 打印影片片段mc(第level_num级影片)。需打印的帧可在编辑时给帧取"#P"标签来指定。type指定打印的方式,可取值为: "bmovie" 表示按给定的帧的范围为边界打印各帧。可在编辑时给需按此帧范围为边界的帧取"#b"标签来指定。 "bmax" 表示按所有需打印的帧的范围之和为边界打印各帧。 "bframe" 表示按各打印帧的范围为边界打印各帧。 当要打印的帧里存在颜色效果或透明度设置时,需用printAsBitmap或printAsBitmapNum来打印以获得正确效果,一般情况下最好用print或printNum来打印以便获取矢量图的最佳效果。 getURL(url, [window, mode]) 打开url所表示的链接,window表示所使用的页(窗口),可取值为: "_self" 在当前活动页打开(默认) "_blank" 在新窗口内打开 "_parent" 在当前页的上一级框架页打开 "_top" 在当前框架的基层框架页打开 mode指定传递参数的方式,可为"GET"(默认)或"POST"。"GET"表示将参数列表直接添加到url之后,与之一起提交,一般适用与参数较少且简单的情况,"POST"表示将参数列表单独提交,在速度上会慢一些,但不容易丢失数据,适用与参数较多较复杂的情况。 fscommand(cmd_string, arg_string) 执行主机端指令。cmd_string指定所要执行的指令名,可为FlashPlayer的指令或浏览器javascript函数。arg_string声明该指令所用到的参数。 FlashPlayer的指令有(只能在独立播放器时使用): "fullscreen" 是否全屏播放,参数为true或false "allowscale" 是否允许通过拉伸窗口缩放影片,参数为true或false "showmenu" 是否在播放器显示菜单,参数为true或false "trapallkeys" 是否屏蔽播放器的快捷键(如Esc表示停止播放并恢复视窗显示),参数为true或false。但Alt+F4系统快捷键(关闭窗口)依然可用。 "exec" 运行arg_string所指定的文件。如: fscommand("exec", "c:/windows/notepad.exe") 可以写相对或绝对路径,如果运行文件在系统目录下可以省略绝对路径。若要加参数,必须用Tab即chr(9)来分隔。如: fscommand("exec", "notepad.exe"+chr(9)+"1.txt")"quit" 退出影片。无参数。 对于javascript的函数,在定义时格式必须为movieID_Dofscommand(cmd_string,arg_string),其中movieID用在网页中定义Flash动画时的object标签的id属性或embed标签的name属性值代替。如: 这样定义的Flash动画对应的javascript函数就是: myMovie_Dofscommand(cmd_string, arg_string) {...} ====================================== ● 系统预定义对象 ● ==================================== 注:系统预定义对象无路径概念,在任何环境下都只需直接写对象名。 函数名前加=号的表示该函数有返回值。 1、系统层级对象: _root 指代当前影片的主场景级(根路径) _parent 指代上一级影片片段(相对路径) _levelN 指代第N级影片,N由loadMovieNum载入影片时设定,主影片级为0(绝对路径) 2、鼠标对象(Mouse): Mouse.hide() 隐藏鼠标指针 Mouse.show() 显示鼠标指针 3、按键对象(Key): 键值(键盘扫描码)宏: Key.CAPSLOCK 20 Key.CONTROL 17 Key.SHIFT 16 Key.LEFT 37 Key.RIGHT 39 Key.UP 38 Key.DOWN 40 Key.PGUP 33 Key.PGDN 34 Key.HOME 36 Key.END 35 Key.ESCAPE 27 Key.ENTER 13 Key.SPACE 32 Key.BACKSPACE 8 Key.TAB 9 Key.INSERT 45 Key.DELETEKEY 46 其他键需用相应键盘扫描码直接表示。 = Key.getAscii() 获取最近按键的ASCII码值(对控制键无效)。比如:按键';a';返回97。 = Key.getCode() 获取最近按键的键盘扫描码值。比如:按键CapsLock返回20。 = Key.isDown(code_num) 判断键盘扫描码为code_num的键是否按下。 = Key.isToggled(code_num) 判断CapsLock或NumLock是否为打开状态,是则返回true。keycode必须为 20(CapsLock)或144(NumLock)。 4、数学运算库对象(Math): 数学常量: Math.E 自然对数基数e(2.71828...) Math.LN2 2的自然对数(0.69314...) Math.LOG2E 2的自然对数的倒数(1.44269...) Math.LN10 10的自然对数(2.30258...) Math.LOG10E 10的自然对数的倒数(0.43429...) Math.PI 圆周率π(3.14159...) Math.SQRT2 2的平方根(1.41421...) Math.SQRT1_2 1/2的平方根(0.70710...) = Math.max(num1, num2) 比较num1和num2,返回较大值。 = Math.min(num1, num2) 比较num1和num2,返回较小值。 = Math.abs(num) 返回num的绝对值。 = Math.ceil(num) 返回大于等于num的最小整数。 = Math.floor(num) 返回小于等于num的最大整数。 = Math.round(num) 返回与num之差的绝对值最小的整数(若差为0.5则取比num大的那个整数)。 = Math.exp(num) 返回e的num次方。 = Math.log(num) 返回num的自然对数。若num不大于0则返回NaN值。 = Math.pow(num1, num2) 返回num1的num2次方。 = Math.sqrt(num) 返回num的平方根。若num不大于0则返回NaN值。 = Math.random() 随机返回0到1之间的某一个浮点值。 = Math.sin(num) 返回num角度的正弦值。 = Math.cos(num) 返回num角度的余弦值。 = Math.tan(num) 返回num角度的正切值。 = Math.asin(num) 返回num的反正弦值。若num不在(-1.0~1.0)范围内则返回NaN值。 = Math.acos(num) 返回num的反余弦值。若num不在(-1.0~1.0)范围内则返回NaN值。 = Math.atan(num) 返回num的反正切值。 = Math.atan2(y_num, x_num) 返回坐标为(x_num, y_num)的点的极坐标转角。 注:三角函数中所用到的角度都为弧度单位。 5、数值对象(Number): Number.MAX_value 最大浮点值(1.79e+308) Number.MIN_value 最小浮点值(5.0e-324) Number.POSITIVE_INFINITY 理论正无穷大数值 Number.NEGATIVE_INFINITY 理论负无穷大数值 Number.NaN 非数值量(同NaN) 6、字符串对象(String): = String.fromCharCode(code_num1, ..., code_numN) 连接ASCII码为code_num1...code_numN的各字符为字符串并返回。 7、活动文本域对象(Selection): = Selection.getBeginIndex() 返回当前活动文本域选区的首字符序号(若无选区则返回光标所在字符序号)。 如果当前没有文本域被激活则返回-1。 = Selection.getEndIndex() 返回当前活动文本域选区的末字符序号(若无选区则返回光标所在字符序号)。 如果当前没有文本域被激活则返回-1。 Selection.setSelection(begin_num, end_num) 设置当前活动文本域的选区为从字符序号begin_num到end_num的文本范围。 = Selection.getCaretIndex() 返回当前活动文本域的光标所在字符序号。如果当前没有文本域被激活则返回-1。 = Selection.getFocus() 返回当前活动文本域所对应字符串变量的绝对路径。如果当前没有文本域被激活则返回null。 Selection.setFocus(string) 激活字符串变量string所对应的文本域。 8、时间对象(Date): = Date.UTC(year, month, [date, hour, minute, second, millisecond])返回参数所指定的时间距离1970.1.1 0:00:00的时差(毫秒单位)。各参数取值参见Date自定义对象构造函数。 =================================== ● 自定义对象 ● ==================================== 注:以my开头的对象名表示所指自定义对象的一个实例。 函数名前加=号的表示该函数有返回值。 1、基本对象(Object): new Object([expression]) Object(expression) 定义一个对象,以expression的值为原始值。 = myObject.toString([radix_num]) 把myObject的原始值转化成字符串后返回(不改原始值),若原始值为数值型,则radix_num表示转化成字符串时的进制。 = myObject.valueOf()返回myObject的原始值(原类型)。 2、类型对象(Number,Boolean,String): 即以此定义的对象与直接为变量赋相应值效果相当(直接赋值也可以调用对象成员函数)。 new Number(expression) 定义一个数值对象,其值为expression转化成数值后的值。 = myNumber.toString([radix_num]) 把myNumber的值按radix_num(默认为10)进制转化成字符串后返回(myNumber不改变)。 = myNumber.valueOf() 返回myNumber的原始值(原类型)。 new Boolean(expression) 定义一个布尔量对象,其值为expression转化成布尔量后的值。 = myBoolean.toString() 把myBoolean的值转化成字符串(即"true"或"false")后返回(myBoolean不改变)。 = myBoolean.valueOf() 返回myBoolean的原始值(原类型)。 new String(expression) 定义一个字符串对象,其值为expression转化成字符串后的值。 字符串对象成员变量: myString.length 字符串长度(只读) myString.scroll 字符串所对应文本域的当前首行号 myString.maxscroll 字符串所对应文本域的最大可用首行号(只读) = myString.charAt(num) 返回myString里序号为num的字符。如:String("abc").charAt(2)返回';c';。 = myString.charCodeAt(num) 返回myString里序号为num的字符的ASCII码值(16-bit)。 = myString.indexOf(expression, [begin_num]) 将expression转化成字符串并在myString里自序号为begin_num(默认为0)的字符开始查找,返回最先找到的位置序号,若找不到则返回-1。 = myString.lastIndexOf(expression, [end_num]) 将expression转化成字符串并在myString里自序号为end_num(默认为myString最末字符的序号)的字符开始往回查找查找,返回最先找到的位置序号,若找不到则返回-1。 = myString.toLowerCase() 将myString里的大写字母全转化为小写后返回(myString不改变)。 = myString.toUpperCase() 将myString里的小写字母全转化为大写后返回(myString不改变)。 = myString.concat(expression1, ..., expressionN) 将expresion1...expressionN转化成字符串并添加到myString之后(myString不改变),返回添加后的字符串。 = myString.slice(begin_num, [end_num]) 截取myString里从字符序号为begin_num到end_num(默认为myString的长度)的子串(不包括end_num)。begin_num和end_num为负表示从最后字符倒数回去的序号,如:String("1234567").slice(-5, 6)返回"3456"。 = myString.substr(begin_num, [num]) 截取myString里从字符序号为从begin_num开始的num个字符的子串,如果num未指定,则表示从begin_num开始到myString结尾的子串。begin_num为负表示从最后字符倒回去的序号。 = myString.substring(begin_num, [end_num]) 截取myString里从字符序号为begin_num到end_num(默认为myString的长度)的子串(不包括end_num)。如果begin_num小于0则取0,begin_num大于end_num则将两者互换后再处理。 = myString.split(char) 按字符char为分隔符理解myString并打散成字符串数组返回,若char为空,则把myString按一个字符一个字符打散。如:String("123.234.345.12").split(';.';) 返回一个数组["123", "234", "345", "12">。 3、数组对象(Array): new Array([num]) 定义一个项数为num(必须为数值)的数组,默认为空数组。 new Array(expression1, ..., expressionN) 定义一个各项值为expression1...expressionN的值的数组,类型不限。当只有一项时,其值不能为数值,以区分定义指定项数的数组。 字符串对象成员变量: myArray.length 数组项数 = myArray.toString() 将数组的各项转化为字符串后以","为分隔符连接成字符串。 = myArray.join([string]) 将数组的各项转化为字符串后以string(默认为",")为分隔符连接成字符串返回。如:a = [[1, 2], ';a';]则a.join(';+';)返回"1,2+a"。 = myArray.push(expression1, ..., expressionN) 堆栈压入。将expression1...expressionN的各值为新的项加至myArray末尾, 并返回添加后myArray的项数。 = myArray.pop() 堆栈弹出。删除myArray的最末项并返回该项的值。 = myArray.unshift(expression1, ..., expressionN) 队列压入。将expression1...expressionN的各值为新的项加至myArray开头, 并返回添加后myArray的项数。 = myArray.shift() 队列弹出。删除myArray的首项并返回该项的值。 = myArray.concat(expression1, ..., expressionN) 将expresion1...expressionN的各值为新的项加到myArray之后(myArray不改变),返回添加后的新数组。若expression本身为数组,则取其各项而非该数组本身。如:[1, 2].concat([3, 4], 5, [[6, 7], 8])返回[1, 2, 3, 4, 5, [6, 7], 8]。 = myArray.slice(begin_num, [end_num]) 截取myArray的第begin_num项到第end_num项(默认为myArray的项数)并组成新的数组返回(不包括第end_num项)。begin_num和end_num为负表示从最后项倒数回去的序号。 = myArray.splice(begin_num, del_num, [expression1, ..., expressionN]) 从myArray的第begin_num项开始删除del_num项,然后将expression1...expressionN的各值为新的项插入到myArray第begin_num项的位置。返回删除的各项所组成的数组。如:a = [1, 2, 3, 4]则a.splice(1, 2, ';a';, ';b';, ';c';)返回[2, 3],且a变成[1, ';a';, ';b';, ';c';, 4]。 = myArray.sort([order_func]) 对myArray的各项进行排序,返回myArray的引用。order_func为自定义的二项比较函数,须返回:<0(正序)=0(等值)>0(逆序),默认为把项转化成字符串进行比较,并按从小到大排。如: a = [1, 6, 3, 2, 5]; function order(num1, num2) {return num2 - num1;} a.sort(order); 此时a变成[6, 5, 3, 2, 1]。 = myArray.reverse() 将myArray的项反序排列。返回myArray的引用。 4、时间对象(Date): new Date() 定义一个时间对象,其时间为当前系统时间(当地时间)。 new Date(year, month, [date, hour, minute, second, millisecond]) 定义一个时间对象,其时间根据给定的参数(当地时间)确定。各参数取值 为:year(0~99表示1900~1999,此外表示公制年份),month(0~11), date(1~31),hour(0~23),minute(0~59),second(0~59),millisecond (0~999)。 new Date(dateUTC_num) 定义一个时间对象,其时间根据dateUTC_num,即距离1970.1.1 0:00:00(GMT) 的时差(毫秒单位)决定。如:t = new Date(Date.UTC(2001, 10, 1, 18, 0)) 则t就表示2001.11.1 18:00(GMT),以北京当地时间即为2001.11.2 2:00 (GMT+8:00)。 = myDate.toString() 将myDate以字符串形式返回,如:"Sun May 27 03:47:00 GMT+0900 2001", 表示myDate所指的当地时间为2001.5.27 3:47:00(周日),其时区为GMT+9:00 即格林威治世界标准时加9小时。 = myDate.getFullYear() 返回myDate所指时间的公制年份(当地时间)。 = myDate.getYear() 返回myDate所指时间的公制年份(当地时间)-1900,如2001年就为101。 = myDate.setFullYear(year, [month, date]) 设置myDate的年月日(当地时间),year必须为公制年份值,month和date的取值参见构造函数。返回myDate的UTC时间值。 = myDate.setYear(year) 设置myDate的时间(当地时间),year的取值参见构造函数。返回myDate的UTC时间值。 = myDate.getMonth() 返回myDate所指时间的月份值(当地时间)。0表示一月,11表示十二月。 = myDate.setMonth(month, [date]) 设置myDate的月日(当地时间),month和date的取值参见构造函数。返回myDate的UTC时间值。 = myDate.getDate() 返回myDate所指时间的日期值(当地时间)。 = myDate.setDate(date) 设置myDate的日期(当地时间),返回myDate的UTC时间值。 = myDate.getDay() 返回myDate所指时间的星期(当地时间),0表示周日,1~6表示周一到周六。 = myDate.getHours() 返回myDate所指时间的小时数(当地时间)。 = myDate.setHours(hour) 设置myDate的小时数(当地时间),返回myDate的UTC时间值。 = myDate.getMinutes() 返回myDate所指时间的分钟数(当地时间)。 = myDate.setMinutes(minute) 设置myDate的分钟数(当地时间),返回myDate的UTC时间值。 = myDate.getSeconds() 返回myDate所指时间的秒数(当地时间)。 = myDate.setSeconds(second) 设置myDate的秒数(当地时间),返回myDate的UTC时间值。 = myDate.getMilliseconds() 返回myDate所指时间的毫秒数(当地时间)。 = myDate.setMilliseconds(milliseconds) 设置myDate的毫秒数(当地时间),返回myDate的UTC时间值。 = myDate.getUTCFullYear() = myDate.getUTCYear() = myDate.setUTCFullYear(year, [month, date]) = myDate.setUTCYear(year) = myDate.getUTCMonth() = myDate.setUTCMonth(month, [date]) = myDate.getUTCDate() = myDate.setUTCDate(date) = myDate.getUTCDay() = myDate.getUTCHours() = myDate.setUTCHours(hour) = myDate.getUTCMinutes() = myDate.setUTCMinutes(minute) = myDate.getUTCSeconds() = myDate.setUTCSeconds(second) = myDate.getUTCMilliseconds() = myDate.setUTCMilliseconds(milliseconds) 功能与未加UTC的相应函数相同,只不过不是针对当地时间,而是针对格林威治世界标准时间。 = myDate.getTime() 返回myDate的UTC时间值。 = myDate.getTimezoneOffset() 返回当地时间与格林威治世界标准时之间的时间差(分钟单位)。比如系统时区设为GMT+8:00则返回-480,即比GMT提前8小时。 说明:这里多次提到的UTC时间值指的就是当前系统时间的格林威治标准世界时与1970.1.1 0:00:00的时差(毫秒单位)。操作系统内部对时间的表示包括两项数值,即UTC时间值与所设定的时区(按当地时间与格林威治世界标准时之差所定)。Date对象在获取当前时间时只获取其中的UTC时间值。然后在调用针对当地时间相关的函数时测试系统时区参数,进行时区转化后再处理。而在调用针对格林威治世界标准时间的函数(即函数名内 加上UTC的)时,不经时区转化直接处理。 在某些系统中可能会出现用getHours()等针对当地时间的函数获取的小时数与系统当前时间差1的情况,那是由于虽然Date对象获取的系统UTC时间值没错,但在调用函数时获取的系统时区值由于Flash5内部处理时的理解分歧,造成了时区转化的错误(不知道是不是bug)。解决的办法是在获取当前时间后对UTC时间值减3600000。如:d = new Date((new Date).getTime() - 3600000) 这时通过d获取当地时间就准了,当然代价是获取世界标准时就差了1小时(可谓割肉补疮,呵呵)。 5、影片片段对象(MovieClip): myMovieClip.play() myMovieClip.stop() myMovieClip.prevFrame() myMovieClip.nextFrame() myMovieClip.prevScene() myMovieClip.nextScene() myMovieClip.gotoAndPlay(frame) myMovieClip.gotoAndStop(frame) myMovieClip.stopDrag() 影片片段操控函数。(参见影片片段操控动作)。 myMovieClip.duplicateMovieClip(name_string, depth_num) 动态复制myMovieClip,副本取名为name_string,显示层次为depth_num, 副本与myMovieClip在同一路径下,且从第1帧开始播放,myMovieClip的状态也被复制。显示层次的概念参见动作指令函数里的duplicateMovieClip函数。 myMovieClip.removeMovieClip() 删除myMovieClip(要求myMovieClip为动态创建的)。 myMovieClip.startDrag([lockcenter, [x1, y1, x2, y2]]) 开始拖拽myMovieClip(一个时刻只能有一个影片片段被拖拽)。参数意义参见动作指令函数里的startDrag函数。 myMovieClip.loadMovie(url, [mode]) 载入url所指定的swf影片文件到myMovieClip下并替换掉myMovieClip原来的内容。mode指定传递参数的方式(参见getURL)。之后,myMovieClip便作为载入影片片段的_root。 myMovieClip.unloadMovie() 卸载影片片段myMovieClip(不必是动态创建的)。 myMovieClip.loadVariables(url, [mode]) 从url所指定的文件读取数据到myMovieClip下。参见动作指令函数里的loadVariables函数。 myMovieClip.getURL(url, [window, mode]) 打开url所表示的链接。参见动作指令函数里的getURL函数(区别是在传递参数时可写相对路径)。 myMovieClip.attachMovie(id_string, name_string, depth_num) 动态创建影片片段id_string(编辑时在组元库里对影片片段设置的导出标号, 即linkage>export as)的实例,实例取名为name_string,显示层次为depth_num, 放在myMovieClip下,且从第1帧开始播放。显示层次的概念参见动作指令函数里的duplicateMovieClip函数。 myMovieClip.swapDepths(depth_num) myMovieClip.swapDepths(mc) 切换myMovieClip的显示层次。参数为数值时表示设定myMovieClip的显示层次为depth_num,在depth_num显示层如果原来有影片片段,则该影片片段的显示层次为myMovieClip原来的显示层次。参数为mc时表示将myMovieClip与mc的显示层次对调. = myMovieClip.getBounds(mc) 获取myMovieClip在以mc的坐标系为基准的相对坐标范围(能包罗myMovieClip的最小正矩形)。返回值为一个对象,包含xMin,xMax,yMin,yMax四个成员,分别指定其坐标界线。 myMovieClip.globalToLocal(point) 将全局坐标point转化为以myMovieClip的坐标系为基准的相对坐标。point为一个对象,具有成员变量x和y。 myMovieClip.localToGlobal(point) 将以myMovieClip的坐标系为基准的相对坐标point转化为全局坐标。point为一个对象,具有成员变量x和y。 = myMovieClip.hitTest(x, y, shape_flag) 返回全局坐标(x,y)是否在myMovieClip内。当shape_flag为true时表示只有当(x,y)与myMovieClip的可视形状接触时才返回true。当shape_flag为false(默认)时表示只要(x,y)进入到myMovieClip以绝对坐标系为基准的坐标范围内,就返回true。 = myMovieClip.hitTest(mc) 返回myMovieClip以绝对坐标系为基准的坐标范围是否与mc以绝对坐标系为基准的坐标范围相交。 = myMovieClip.getBytesLoaded() 返回myMovieClip已载入的字节数。 = myMovieClip.getBytesTotal() 返回myMovieClip总共所占的字节数。如在导入swf影片时: loadMovieNum("1.swf", 1) loaded_percent = _level1.getBytesLoaded() / _level1.getBytesTotal() loaded_percent就可指示1.swf载入的百分比了。 注:影片片段对象比较特殊,它不能用new自行创建,只能通过duplicateMovieClip和attachMovie函数动态创建。因而它没有对象名,而只有实例名。在Flash5中,不论是动态创建的还是编辑时创建的影片片段实例都可以作为影片片段对象来调用成员函数。 6、影片片段颜色属性对象(Color): new Color(mc) 定义一个对mc作用的影片片段颜色属性对象。 = myColor.getRGB() 返回所作用影片片段的色调值(相当于编辑时对影片片段设置的色调效果)。 若未设置色调则返回0。 myColor.setRGB(color_num) 设置所作用影片片段的色调值为color_num(16进制表示为0xRRGGB。 = myColor.getTransform() 返回所作用影片片段的颜色变换(相当于编辑时对影片片段设置的高级效果)。 返回值为一个对象,包含成员:ra,ga,ba,aa,rb,gb,bb,ab(意义参见 myColor.setTransform函数)。 = myColor.setTransform(transform) 设置所作用影片片段的颜色变换为transform。transform包含成员:ra(红色比率),ga(绿色比率),ba(蓝色比率),aa(透明度比率),rb(红色附加值),gb(绿色附加值),bb(蓝色附加值),ab(透明度附加值)。比如影片片段里原来某点的颜色为0xRRGGBB,透明度为A%,在设置了颜色变换后实际显示的颜色为0xrrggbb,透明度为a%,则: rr = RR * ra + rb gg = GG * ga + gb bb = BB * ba + bb a = (A * aa + ab) / 0xFF 其中,若rr,gg,bb计算出来大于0xFF(小于0)则取0xFF(0),a算出来大于 100(小于0)则取100(0)。 7、声音对象(Sound): new Sound([mc]) 定义一个控制mc下声音(默认为影片所有声音)的声音对象。 mySound.attachSound(id_string) 连接到声音id_string(编辑时在组元库里对声音设置的导出标号,即linkage>export as)。 连接好后的该声音从属于mySound在定义时指定的影片片段,可由mySound.start函数来控制播放。 mySound.start([begin_num, loop_num]) 开始播放最近一次连接的声音(通过attachSound函数)。begin_num指定播放的起始位置(秒为单位,默认为开头即0,小于0则按0计),loop_num指定循环次数(默认为1,小于1则按1计),每次循环都从指定的起始位置开始。该动作不会影响到当前其他声音的播放情况。 mySound.stop([id_string]) 停止mySound所控制的声音中连接标识为id_string的所有声音(默认为mySound控制的所有声音)。比如mySound定义为控制_root.mc下的声音,而_root.mc下当前有3个声音正在播放(不论是用mySound.start开始的还是在编辑时就放置好的),其中1个来自连接标识符为"id1"的声音,另2个都来自连接标识符为"id2"的声音,则mySound.stop("id2")将停止其中来自连接标识符为"id2"的声音的那2个。 = mySound.getVolume() 返回mySound的当前音量值(0~100)。0表示无声音,100表示标准音量(初始音量值为100)。 mySound.setVolume(num) 设置mySound的当前音量值为num(0~100)。此设定将影响到mySound所控制的所有声音。 = mySound.getPan() 返回mySound的当前声道偏移量(-100~100)。-100表示纯左声道,100表示纯右声道(初始值为0)。 mySound.setPan(num) 设置mySound的当前声道偏移量(-100~100)。此设定将影响到mySound所控制的所有声音。 = mySound.getTransform() 返回mySound的当前声音变换。返回值为一个对象,包含成员:ll,lr,rl,rr (意义参见mySound.setTransform函数)。初始值为ll:100,lr:0,rl:0,rr:100。 mySound.setTransform(transform) 设置mySound的当前声音变换为transform。此设定将影响到mySound所控制的所有声音。tansform包含成员:ll(左声道声音在左声道的输出比率), lr(左声道声音在右声道的输出比率),rl(右声道声音在左声道的输出比率), rr(左声道声音在右声道的输出比率)。取值一般在0~100之间,100表示标 准音量,小于0则取绝对值,大于100则表示超音量输出,会导致高端失真)。 比如要以单声道输出则可设为:ll:50,lr:50,rl:50,rr:50,如果要将所 有声音在一左声道输出则可设为:ll:100,lr:0,rl:100,rr:0。 8、XML对象: --------------------------------------- appendChild attributes childNodes cloneNode createElement createTextNode docTypeDecl firstChild hasChildNodes insertBegore lastChild load loaded new XML nextSibling nodeName nodeType nodevalue onLoad parentNode par***ML previousSibling removeNode send sendAndLoad status toString xmlDecl 9、XMLSocket对象: --------------------------------------- close connect new XMLSocket onClose onConnect onXML send
欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/)
Powered by Discuz! 7.2