收藏的AS代码
2005-07-01 13:37:36
======================================
● 动作指令函数 ● =================================== 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 - 作者: sianalazy 2004年12月3日, 星期五 18:41 回复(0) | 引用(0) 加入博采
FLASH语言等[为了自己记住]
box_btn.onPress=function(){ trace("ok"); }; 按钮实例名称.事件处理方法=function(){
//处理程序 }; 例如:
n=1 box_btn.onRelease=function(){ n=n+1 trace("n="+n); } 当按钮被点一下的时候,Output窗口会输出:"n=2" onClipEvent(load){ stop(); }
以上是影片剪辑的事件处理函数。"()"的内部是事件。
在一个FLASH里在第一个场景里调用第二个场景, 要在第一个场景里需要调用的地方加个按钮,然后在按钮上写下如下代码: on (release) { tellTarget ("_root") { gotoAndPlay ("mm2", 1); } } 其中,"mm2"是第二个场景的MC的名称。
on (release) { loadmovie("fz3.swf",1); setProperty("fz3.swf",_x,100); setProperty("fz3.swf",_y,100); _root.createEmptyMovieClip("Card Game"); mc.loadMovie("fz3.swf"); mc._x=0; mc._y=0; } fz3.swf是需要调入的SWF文件,_x,_y是坐标轴
Card Game是SWF中MC的名字 on(release)结构只能用于按钮,
其他相关的几种用法如on(press)、on(rollOver)、on(rollout)、on(dragOver)、on(dragOut)等。 2.else
对if语句可以进行扩展,使用else执行条件不成立(比较表达式为false)时的代码,如下所示: if (x == 9) { gotoAndPlay(15); } else { gotoAndPlay(16); } 你也可以使用else if语句将if语句更推进一步,如下所示: if (x == 9) { gotoAndPlay(15); } else if (x == 10) { gotoAndPlay(16); } else if (x == 11) { gotoAndPlay(20); } else { gotoAndPlay(25); } 你可以让if语句想要多长就有多长,你也可以使用else if语句对别的变量进行比较,如下所示: if (x == 9) { gotoAndPlay(15); } else if (y<20) { gotoAndPlay(16); } else { gotoAndPlay(25); } 3.复合比较 你可以在一个if语句中对几个比较表达式的值进行判断, 比如说你希望在x为9并且y为20时跳转到第10帧,可以使用如下所示的脚本: if ((x == 9) && (y == 20)) { gotoAndPlay(10); } 逻辑与运算符&&将两个比较表达式联接在一起成为一个复合表达式, 当两个表达式的值都为true时复合表达式的值才为true。 每个比较表达式都需要添加独立的括号以便Flash能正确识别。 在Flash的早期版本中使用and执行逻辑与运算,现在已推荐不使用。 你也可以使用逻辑或运算符||将两个比较表达式联接在一起成为一个复合表达式, 只要有一个表达式的值为true,复合表达式的值就为true。如下所示: if ((x == 7) || (y == 15)) { gotoAndPlay(20); } 在该脚本中,只要x为7或者y为15,或者两者都成立,结果都是跳转到第20帧。 只有当两者都不成立时,才不会执行gotoAndPlay命令。 3.4.6 函数
到现在为止,我们都是将脚本放在影片的第1帧中。 如果程序相当复杂,再放在同一帧中就使脚本显得太庞大了。 函数使你可以组织需重用的代码,并放在时间轴中,例如: function myFunction(myNum) { var newNum = myNum+5; return newNum; } 函数以关键字function开头,function后面是函数名。 与变量名相似,你可以指定自己的函数名,最好将函数名取得有意义一些。 函数名后面的括号容纳该函数的参数,所谓参数也是一个变量,它的值在调用该函数时予以指定。 一个函数可以有若干参数,也可以没有参数。无论有没有参数,函数名后都应紧跟一对括号。 大括号中的部分是函数体,在函数体中创建了一个局部变量newNum, 将myNum加5的结果设置为newNum的值。 如果你将10作为参数传递给该函数,newNum的值就是15。 return命令仅用于函数中,使用return结束一个函数并返回函数值。 此处,newNum是用return命令返回的函数值。 要使用函数,就需要调用它,如下所示: var a = myFunction(7); 该语句创建一个新的局部变量a,将7作为参数调用函数myFunction,并将函数返回的结果作为变量a的值。 被调用的函数开始运行,创建一个局部变量myNum,将7作为myNum的值, 然后执行函数体内的代码,使用return命令将newNum的值12返回给函数的调用者。这时,a的值变为12。 函数最大的作用体现在它可以重复使用。如下所示的3行代码产生3个不同的结果: trace(myFunction(3)); trace(myFunction(6)); trace(myFunction(8)); 运行以上代码,你将得到结果8、11和13。 使用函数还有一个好处就是可以只改变函数中的一处,从而影响所有调用该函数的命令。 例如,将函数myFunction中的var newNum = myNum+5改成var newNum = myNum+7, 上面3个调用该函数的命令的结果将变成10、13和15点语法的另一个用途是指定影片剪辑的属性。 如下面的语句将影片剪辑myMC的_alpha(透明度)属性设置为50%: myMC._alpha = 50; 你还可以在影片剪辑中使用点语法定位根(root)中的一个全局变量。 如果你在主时间轴中创建了一个全局变量globelVar, 而要在影片剪辑中使用这个全局变量,可以使用如下的语句: trace(_root.globleVar); stop:使影片停止在当前时间轴的当前帧中。
play:使影片从当前帧开始继续播放。 gotoAndStop:跳转到用帧标签或帧编号指定的某一特定帧并停止。 gotoAndPlay:跳转到用帧标签或帧编号指定的某一特定帧并继续播放。 nextFrame:使影片转到下一帧并停止。 prevFrame:使影片回到上一帧并停止。 stop命令常常用在帧动作中,以使影片停止并等待用户控制。 其他命令常常用在按钮的事件处理函数中。 如果gotoAndPlay命令中只有一个参数,Flash将认为它代表某个帧;
如果有两个参数,第1个参数将作为场景名,第2个参数代表该场景中的帧。 要定位包含某一对象的上一级对象,可以使用关键字_parent。
如果一个影片剪辑是包含在主时间轴中,在影片剪辑中使用_parent和_root的效果是一样的。 如果影片剪辑与主时间轴相差两个层级,即当影片剪辑包含在另一个位于主时间轴中的影片剪辑中, 这时在该影片剪辑中使用_parent指代的是它上一级的影片剪辑, 而_root是指它上两级的主时间轴。在主时间轴中不能使用_parent,因为主时间轴没有上一级。 - 作者: sianalazy 2004年12月3日, 星期五 18:39 回复(1) | 引用(0) 加入博采 FLASH起步教程[转] 1.你先学会加动作的三种方式:在帧上加,在mc上加,在按钮上加.用play stop goto这三 个命令反 复练习.不要用太多的命令给自己吃迷晕药.用实例练,不要空练. 2.会了我说的1后,要学给按钮加动作的8种方法和给mc加的9种方法. 3,会了我说的2了,就要学个编程最基础最重要的东西----路径的描述(能看懂就能用) 1> _root.mc1.mc2. ... mcn.play()[或stop(), _x, .......]
2>_parnet 3>this 4>mc1.mc2. ... 5>_leveln.mc1.mc2. ... mcn.play()[或stop(), _x, .......] 练习这样个实例对你也许有帮助, 把一首你喜欢听的歌随意放在某个mc中,随
意地在某个mc或按钮上加动作去控制它,想让它停就停,想让它放就放. 4。遇到问题,自己想办法解决,不要老是依靠别人,在自己做过之后还是不行的话可就要发问拉,当然问的方法要好多种,这里就不说拉! 5.要自强自信,不要迷信洋人的东东,活学活用重在理 6.了解代码执行的先后顺序: 图层默认的是从下向上执行 level是从下向上执行 帧是随实际播放顺序执行 代码本身从上向下一行一行地执行 7.了解两种坐标系统: 场景下的坐标,o点在左上角,y轴向下是增大 x向右是增大 组件的坐标,o点在组件中心,y轴向下是增大 x向右是增大 8.了解三种文本域 静态文体域:和排版软件的文字工具一样. 动态文本域和输入文本域:其实就把它们看是两种变量,只不过是可见的变量, 9.详细了解GOTO语句 prevFrame() 跳至并停止在前一祯。 nextFrame() 跳至并停止在下一祯。 prevScene() 跳至并停止在前一场景的第1帧。 nextScene() 跳至并停止在下一场景的第1帧。 gotoAndPlay([scene,] frame) 跳至scene场景(省略表示当前场景)的frame帧并播放。 gotoAndStop([scene,] frame) 跳至scene场景(省略表示当前场景)的frame帧并停止。 10,了解MC的各种可改写的属性 _x 中心点所在相对X坐标(象素单位) _y 中心点所在相对Y坐标(象素单位) _xscale 横向缩放比例,初始为100 _yscale 纵向缩放比例,初始为100 _rotation 相对旋转角度(度单位) _width 相对显示宽度(象素单位) _height 相对显示高度(象素单位) _alpha 显示透明度(0~100) _visible 是否可见 _focusrect 是否显示焦点框 _name 实例名称 11,三大纪律:1>写代码时一定要用英文(如EN CH)输入法 2>必须要有唯物主义思想,没有加载的MC是不可以更改它的属 性,更不可以写代码去控制它。这个问题较难掌握,高手有时也会 犯,道理就是先有吃的才能请客吃,啥也没有请客吃什么呢 3>操作什么一定要选什么(实际上哪个软件也要这样)。在MX中加代 码时如不选,就一定要写明名称,实际上也是一种先择。 12,八项注意:1>按钮不能盖着输入文本,动态文本和输入文本域不能盖着按钮 2>用loadMoie时LEVEL1及以上的文件尽量少用大隐型按钮 3>从一个文件中复制MC实例到别一个文件中时,尽量复制帧,而不能直接 复制实例, 4>从一个文件中复制MC实例到别一个文件中时,要先把目标文件中的符 号库中原有的符号,装进资夹里,很多网友这个问题上上过当吧? 5>..... ActionScript的基本语法规则
使用ActionScript编写脚本时,如果使用正常模式的动作面板,通过菜单和列表选择选项,可以创建简单的动作。要想用ActionScript编写功能强大的脚本,你就必须深入了解和学习Flash MX的ActionScript脚本语言。 像其它脚本语言一样,ActionScript也有变量、函数、对象、操作符、保留关键字等语言元素,有它自己的语法规则。ActionScript允许用户创建自己的对象和函数。ActionScript的语法和风格与javascript非常相似,但不完全相同。ActionScript拥有自己的句法和标点符号使用规则,这些规则规定了一些字符和关键字的含义,以及它们的书写顺序。例如,在英语中用句号结束一个句子,而在ActionScript中则用分号结束一个语句。 下面列出的是ActionScript的一些基本语法规则,对于比较比较特别的规则,请参阅ActionScript词典。 1.点语法 在ActionScript中,点(.)被用来指明与某个对象或电影剪辑相关的属性和方法。它也用标识指向电影剪辑或变量的目标路径。点语法表达式由对象或电影剪辑名开始,接着是一个点,最后是要指定的属性、方法或变量。例如,表达式ballMC.x是指电影剪辑实例ballMC的_X属性,_X电影剪辑属性指出编辑区中电影剪辑的X轴位置。 例如,submit是在电影剪辑form中设置的一个变量,而form又是嵌套在电影剪辑shoppingCart中的电影剪辑。表达式shoppingCart.form.submit=true的作用是设置实例form的submit变量的值为true。 表达一个对象或电影剪辑的方法遵循相同的模式。例如,ballMC实例的play方法用于移动ballMC的时间轴播放头,就像下面的语句: ballMC.play();
点语法使用两个特殊的别名:_root和_parent。别名_root是指主时间轴。可以使用_root别名创建一个绝对路径。例如,下面的语句调用主时间轴中电影剪辑functions的buildGameBoard函数: _root.functions.buildGameBoard(); Flash MX允许使用别名_parent来引用嵌套当前电影剪辑的电影剪辑。也可以用_parent创建一个相对目标路径。例如,如果电影剪辑dog被嵌套在电影剪辑animal之中,那么,在实例dog上的下列语句告诉animal电影剪辑停止播放: _parent.stop();
2.斜杠语法 Flash的以前版本是使用斜杠语法指出电影剪辑或变量的目标路径的。Flash MX播放器仍然支持这种语法,但不推荐使用。在斜杠语法中,斜杠被用来代替点,用以标明电影剪辑或变量的路径。要指出一个变量,可以在变量前加上冒号,如下面的语句所示: myMovieClip/childMovieClip:my Variable 我们现在用点语法取代上述斜杠语法来表示上面的目标路径: myMovieClip.childMovieClip.myVariable 斜杠语法在tellTarget动作中使用最为普遍,但这种动作在Flash MX中已不再推荐使用。
【说明】与其使用tellTarget动作还不如使用with动作与点语法兼容。 3.大括号 ActionScript语句用大括号({})分块,如下面的脚本所示: on(release){ myDate = new Date(); currentMonth = myDate.getMonth(); } 4.分号
ActionScript语句用分号(;)结束,但如果你省略语句结尾的分号,Flash仍然可以成功地编译你的脚本。例如,下面的语句用分号结束: colum = passedDate.getDay(); row = 0; 同样的语句也可以不写分号: colum = passdDate.getDay() row = 0 5.圆括号
定义一个函数时,要把参数放在圆括号中: function myFunction (name, age, reader){ ... } 调用一个函数时,也要把要传递的参数放在圆括号中: myFunction ("Steve",10,true); 圆括号可以用来改变ActionScript的运算优先级,或使自己编写的ActionScript语句更容易阅读。 也可以用圆括号来计算点语法点左边的表达式。例如,在下面的语句中,圆括号使表达式new color(this)得到计算,并创建了一个新的颜色对象: onClipEvent(enterFrame){ (new Color(this)).setRGB(oxffffff); } 在上例中,如果不使用圆括号,就需要在代码中增加一个语句来计算它: onClipEvent(enterFrame){ myColor = new Color(this); myColor.setRGB(0xffffff); } 6.大小写字母
在ActionScript中,只有关键字区分大小写。对于其余的ActionScript,可以使用大写或小写字母。例如,下面的语句是等价的: cat.hilite = true;
CAT.hilite = true; 但是,遵守一致的大小写约定是一个好的习惯。这样,在阅读ActionScript代码时更易于区分函数和变量的名字。如果在书写关键字时没有使用正确的大小写,你的脚本将会出现错误。例如下面的两个语句:
setProperty(ball,_xscale,scale); setproperty(ball,_xscale,scale); 前一句是正确的后一句中property中的p应是大写而没有大写,所以是错误的。在动作面板中启用彩色语法功能时,用正确的大小写书写的关键字用蓝色区别显示,因而很容易发现关键字的拼写错误。 7.注释 需要记住一个动作的作用时,可在动作面板中使用comment(注释)语句给帧或按钮动作添加注释。如果你在协作环境中工作或给别人提供范例,添加注释有助于别人对你编写的脚本的正确理解。 在动作面板中选择comment动作时,字符"//"被插入到脚本中。如果在你创建脚本时加上注释,即使是较复杂的脚本也易于理解,例如: on(release){ //建立新的日期对象 myDate = new Date(); currentMonth=myDate.getMonth(); //把用数字表示的月份转换为用文字表示的月份 monthName = calcMoth(currentMonth); year = myDate.getFullYear(); currentDate = myDate.getDat(); } 在脚本窗口中,注释内容用粉红色显示。它们的长度不限,也不影响导出文件的大小。 8. 关键字 ActionScript保留一些单词,专用于与本语言之中。因此,不能用这些保留字作为变量、函数或标签的名字。下表列出了ActionScript中所有的关键字: break continue delete else for function if in new return this typeof var void while with 【注意】这些关键字都是小写形式,不能写成大写形式。 9.常量 常量有其值永不改变的属性。常数用大写字母列于动作工具箱中。例如,常数BACKSPACE、ENTER、QUOTE、RETURN、SPACE和TAB是Key对象的属性,指键盘上的键。要测试用户是否在按Enter键,可使用下面的语句: if(keycode()= =key.ENTER){ alert = "你准备好了吗?" controlMC.gotoAndStop(5); } ActionScript中的术语 ActionScript根据特定的语法规则使用特定的术语。以下按字母顺序介绍重要的ActionScript术语. Actions(动作):是指导Flash电影在播放时执行某些操作的语句。例如,gotoAndStop动作就可以将播放头转换到指定的帧或帧标记。Action(动作)也可以被称作statement(语句)。 Arguments(参数):是允许将值传递给函数的占位符。例如,以下语句中的函数welcome就使用了两个参数firstName和hobby来接收值: function welcome(firstName,hobby) {
welcomeText = "Heelo," + firstName + "I see you enjoy" + hobby; } Classed(类):是各种数据类型。用户可以创建"类"并定义对象的新类型。要定义对象的类,用户需创建构造器函数。
Constants(常量):是不会改变的元素。常量对于值的比较非常有用。 Constructors(构造器):是用来定义"类"的属性和方法的函数。以下代码通过创建Circle构造器函数生成了一个新的Circle类。 function Circle(x, y, radius) {
this.x = x; this.y = y; this.radius = radius; } Data types(数据类型):是可以执行的一组值和操作。ActionScript的数据类型包括:字符串、数值、逻辑值、对象和影片剪辑。
Events(事件):是在电影播放过程中发生的动作。例如,当电影裁入时、当播放头到达某一帧时、当用户单击按钮或影片剪辑时、当用户按压键盘上的按钮时,都会产生不同的操作。 Expressions(表达式):是可以产生值的语句。例如2+2就是一个表达式。 Functions(函数):是可以重复使用和传递参数的代码段,可以返回一个值。例如,getProperty函数就可以使用影片剪辑的实例名称和属性名称,返回属性值。getVersion函数可以返回当前播放电影的Flash播放器的版本。 Handlers(句柄):是可以管理诸如mouseDown和load事件的特殊动作。例如,onMouseEvent和onClipEvent就是ActionScript的句柄。 Identifiers(标识符):是用来指示变量、属性、对象、函数或方法的名称。标识符的首字母必须是字符、下划线(_)或美元符号($)。后续字符可以是字符、数字、下划线或美元符号。例如,firstName就是一个变量名。 Instances(实例):是属于某些class(类)的对象。每个类的实例都包含该类的所有属性和方法。例如,所有影片剪辑实例都包含MovieClip类的属性(透明度属性、可见性属性)和方法(例如gotoAndPlay、getURL等)。 Instance names(实例名称):是一个唯一的名称。可以在脚本作为目标被指定。 Keywords(关键字):是具有特殊意义的保留用词。例如,var就是一个关键字,它可以用来定义本地变量。 Methods(方法):是指定给对象的函数。在函数被指定给对象之后,该函数就可以被称为是该对象的方法。 Objects(对象):是属性的集合。每个对象都有自己的名称和值。对象允许用户访问某些类型的信息。例如,ActionScript的预定义对象Date就提供了系统时钟方面的信息。 Operands(运算项):是由表达式中的运算符操控的值。 Operators(运算符):可以从一个或多个值中计算获得新值。例如,将两个数值相加就可以获得一个新值。 Parameters(参数):也被称之为Arguments(参数)。 Properties(属性):是定义对象的attributer(属性)。例如,所有影片剪辑对象都具有_visible(可见性)属性,通过该属性可以决定影片剪辑是否显示。 Target paths(目标路径):是Flash电影中影片剪辑名称、变量和对象的垂直分层结构地址。主时间轴的名称是_root。影片剪辑属性检查器中可以命名影片剪辑的实例。 用户可以通过目标路径使动作指向影片剪辑,也可以使用目标路径获取或设置变量的值。例如,以下示例语句就是影片剪辑stereoControl内部的变量volume的路径: -root.stereoControl.volume Variables(变量):是存储了任意数据类型值的标识符。变量可以创建、修改和更新。变量中存储的值可以被脚本检索使用。在以下的示例中,等号左边的是变量标识符,右边的则赋予变量的值: x = 5; name = "Lolo"; customer.address = "66 7th Street"; c = new Color(mcinstanceName); 编写ActionScript脚本 编写Flash动作脚本并不需要用户对ActionScript有完全的了解,用户的需求才是真正的目标。有了设计创意之后,用户要做的就是为此选择恰当的动作、属性、函数或方法。学习ActionScript的最佳方法是创建脚本。用户可以在动作面板的帮助下建立简单脚本。一旦熟悉了在电影中添加诸如play和stop这样的基础动作之后,用户就可以开始学习更多有关ActionScript的知识。要使用ActionScript的强大功能,最重要的是了解ActionScript语言的工作原理:ActionScript语言的基础概念、元素以及用来组织信息和创建交互电影的规则等。 1.脚本的规划和调试 在为整个电影编写脚本时,脚本的数量和变化可以可能都是巨大的。例如,用户可能需要考虑以下问题:决定使用哪些动作,如何建立更有效的脚本结构,以及在哪些地方放置脚本?所有这些问题都需要经过仔细规划和测试。特别是当电影变得越来越复杂时,这些问题更加显得突出。 在开始编写脚本之前,用户需明确自己要达到的目标。例如,这些目标可能是 使用Flash创建整个站点。 ? 询问站点访问者姓名,并且在整个站点中重复使用该信息。 ? 站点具有一个可拖动的导航工具栏,可以帮助用户跳转到站点的任意分支。 ? 当某一个按钮被单击时,新的内容以淡入方式出现在舞台中央。 ? 专门设立一个和用户联系的场景,其中包含已经填入用户姓名的表单。 在明确了制作动画要达到的目的之后,用户就可以开始创建对象并编写脚本来控制这些对象。 让脚本按照自己需要的方式工作,这通常比编写脚本要花费时间。用户需要经常不断地测试自己的脚本是否工作正常。为达到目的,最好的方法是从简单脚本开始,频繁测试,编写并测试完一部分可正常工作的脚本之后,就可以保存文件的一个版本。这种工作方法可以帮助用户更有效地调试脚本错误,在编写更加复杂的脚本时也有坚实的基础。 2.面向对象的脚本编程 在面向对象的编程方法中,用户通过将信息分类成组来组织信息。用户可以创建某一类信息的多个实例,以便在脚本中使用。用户可以使用ActionScript预定义的class(类),也可以创建自己的类。ActionScript内置的类位于动作在板的Objects(对象)文件夹。 在创建class(类)时,用户需为由该类所创建的每个对象定义所有属性(特性)和方法(行为)。这和现实世界中对象的定义方法一样。例如,"人"具有诸如性别、身高和头发颜色之类的属性,"人"的行为包括说话、走路、投掷等,在本示例中,"人"就是一个类,而每个单独的人就是该类的实例,即Object(对象)。 ActionScript中的对象可以包含数据,也可以是舞台上的影片剪辑。所有影片剪辑都是预定义的MovieClip类的实例。每个影片剪辑实例都有MovieClip类的所有属性(例如_height,高度;_rotation,旋转;_totalframes,总帧数等)和所有方法(例如,gotoAndPlay,转到并播放;loadMovie,载入电影;startDrag,开始拖动等)。 要定义class(类),用户需创建一个特殊的被称为"构造器"的函数。Flash预定义的类已经定义了构造器函数。例如,如果需要电影中一个骑车人的信息,则可以创建一个名为Biker的构造器函数。该函数包括"时间"和"距离"属性,也包含"速度"方法,该方法可以将骑车人的移动速度告诉用户。 function Biker(t, d) { this.time = t; this.distance = d; } function Speed() { return this.time/this.distance; } Biker.prototype.rate = Speed; 在编写构造器函数之后,用户就可以创建Biker类的副本,即:实例。以下代码就可以创建Biker类对象的实例emma和hamish: emma = new Biker(30, 5);
hamish = new Biker(40,5); 实例之间还可以相互通信。例如,对于Biker类的对象来说,用户可以创建一个shove(推)的方法,让个骑车人推另外一个骑车人。这样,当hamish实例靠得太近时,emma实例就可以调用shove方法,将hamish推开。要将信息传递给方法,可使用参数。例如,shove(推)方法就可以携带who(被推者)和howFar(推多远)参数,如下列示例。
emma.shove(hamish, 10);
在面向对象编程方法中,类可以按指定顺序相互接收属性和方法,这就是所谓的继承。用户可以使用继承扩展或重定义类的属性和方法,从其他类继承属性和方法的类被称为"子类",将属性和方法传递给其他类的类被称为"超类",一个类可以同时是"子类"和"超类"。 3.脚本的流程
Flash将从第一行语句开始执行ActionScript语句,一直按次序执行到最终语句或ActionScript指定跳转到的语句。 将执行次序发送到其他地方而不是下一语句的动作包括:if语句、do...while循环和return动作。 if语句被称为条件判断语句或"逻辑分支",因为它是基于某些条件的评估判断来控制脚本流程的。例如,以下代码就将检查变量mynumber中的值是否否小于或等于10,如果检查结果返回true(例如,mynumber的值为5),则变量alert被设置文本字符串值,并在输出的文本域中显示其值。 if (myNumber <=10) { alert = "The number is less than or equal to 10"; } 用户也可以添加else语句来创建更加复杂的条件判断语句。在以下示例中,如果条件判断返回true(例如,变量mynumber的值为3),则第一组大括号之间的语句将执行,alert变量将显示第二行的值。如果条件判断返回false(例如,变量mynumber的值为30),则第一组代码区将被跳过,else语句后面的大括号之间的语句将执行。 if (myNumber <=10) { alert = "The number is less than or equal to 10"; }else { alert = "The number is greate than 10"; } 循环语句将重复执行某一动作若干次,直到满足某一条件才结束。在以下示例中,影片剪辑将被复制5次。 i = 0; do { duplicateMovieClip ("myMovieClip","newMovieClip"+i,i); newName = eval("newMovieClip"+i); setProperty(newName,_x,getProperty("myMovieClip",_x)+(i*5)); i=i+1 }while(i<=5); 4.脚本的运行 在编写脚本时,用户可以使用动作面板,将脚本附加给时间轴中的帧,也可以附加给舞台上的按钮或影片剪辑。附加给帧的脚本将在播放头到达该帧时执行,而附加给按钮或影片剪辑的脚本则在某一事件发生时执行。所谓的"事件",可以是电影播放时鼠标移动、某个按钮被按下,也可以是某个影片剪辑被载入等。使用ActionScript可以发现操作发生的时间,然后根据该事件执行指定的脚本。 附加给按钮或影片剪辑的动作被一个特殊的动作包围,该动作被称之为handler(处理程序),onClipEvent和on动作都被称之为处理程序,中因为它们操控或管理着操作。用户可以为每个处理程序指定一个或多个操作。当由处理程序指定的事件发生时,影片剪辑或按钮动作才执行。如果要在不同的事件发生时执行不同的动作,则可以给一个对象附加多个处理程序。 onClipEvent动作处理的是影片剪辑的事件,而on动作则处理按钮的事件。用户也可以和影片剪辑一起使用on动作,创建一个能接受鼠标事件的影片剪辑。 后记:当然方法有很多种,最重要的是选择适合自己的学习方法,结合示例多想多做多练,你一定会成功的!!!!! 现在就开始吧 - 作者: sianalazy 2004年12月3日, 星期五 18:38 回复(0) | 引用(0) 加入博采
问答集[网上收集] 1. Q:怎样实现固定大小的弹出窗口? A:Flash加入网页后添加如下代码即可用getURL实现:<param name="AllowScriptAccess" value="always">。HTML中也要相应嵌入javascript与之对应。 Q:是否是这样: getURL中: on (release) { getURL("javascript:popWindow(\'http://URLabc.html\',\'windowname\',\'width=100,height=100\');", ""); } 然后在网页中定义function function popWindow(theURL,winName,features){ window.open(theURL,winName,features); } 在插入FLASH动画部分加一句 <param name="AllowScriptAccess" value="always"> 对吧?
但是为什么我做了之后有时候成功有时候提示script error呢? A:getURL("javascriptopWindow('http://abc.html,'myWeb','width=100,height=100');";
无"\"。 2. Q:怎么用loadmovie加载电影? A:把你那个10M的ASF导入到一个swf文件中 比如 aaa.swf 这个文件只播放那个10M的ASF 。。然后再用loadmovie指令加载它就可以了。(loadmovie不能直接加载asf文件) on (release) {
loadMovieNum ("aaa.swf", 1); } ========= aaa.swf 代表加载的文件的路径,1代表当前加载的片段播放的级别(通俗点讲就是层次,高的层上的内容遮盖低层上的内容,如果有很多片段被加载的话就要设定它) 3.
Q:有三个按纽,坐标为a(0,0),b(300,300),c(600,600) 另做一个MC 要求点击A的时候,MC从(0。0)处飞到(100,100) 点击b的时候,MC从(300。300)处飞到(100,100)
点击c的时候,MC从(600,600)处飞到(100,100) 这个脚本该如何写? A:做三个飞行的过程,
在第一帧STOP 当按纽点击时PLAY 这是最简单的办法, 如果用程序写SETPROPERTY的话, 第一帧 STOP 第二帧 A=0 SETPROPERTY("MC1",_X,A) A=A+10 第三帧 WHILE(A〉=0,A〈=100) GOTOANDPLAY(1) 用按纽控制这个空MC来播放 ON(PRESS) MC1。GOTOANDPLAY(2) Q:怎么样制作镂空透明的flash? A:不是flash自身的功能 在html中加入 wmode="transparent" Q:下雪的动画哪里出错?
我照范例想做一个下雪的动画但是不能运行?请教哪里出错? a = random (100 ); while (Number(a)<=100) {
a = Number (a)+1;
setProperty ("/snow", _x, random(500));
setProperty ("/snow", _y, random(400));
setProperty ("/snow", _xscale, random(50));
setProperty ("/snow", _yscale, random(50));
setProperty ("/snow", _rotation, random(360));
duplicateMovieClip ("/snow", "\"snow_\" add a", a);
} A:
想复制的数量是随机的(小于100)。 end=random(100)+1; for(var i=1;i_root.snow.duplicateMovieClip("s"+i,i); this["s"+i]._x=random(500); this["s"+i]._y=random(400); this["s"+i]._xscale=random(50); this["s"+i]._yscale=random(60); this["s"+i]._rotation=random(360); } Q:如何实现Flash背景透明或是任选颜色? 假如不通过DW在其源代码中加入这样实现Flash透明。而是直接在Flash中该如何设做? 假如不是用一块色作背景,我可以任意设置我的背景色吗?如何设置?
A:publish settings,html,transparent windowless
Q:在movie properties中background只能选择,但是我知道我要用的背景颜色的代码,如果能直接输入改变就好了???????
A:先在mixer中混色》add to swatch>ctrl+M>select your color>OK
这种方法甚至可以在flash中使背景透明(在mixer中设置alpha为0%,这样,编辑区只剩下黑框了),但输出后的SWF背景色的alpha被置为100%. Q:先在mixer中混色》add to swatch>ctrl+M>select your color>OK
能不能用中文菜单说 一下。 A:window(窗口菜单)>panels(面板)>mixer(混色器),这个面板没有快捷键
面板现后,如果你要输入16进制值,点右上角的三角符号,选hex(十六进制),依次输入RGB值。设定后,还点那个三角符号,选最下面一项add to swatch(增加到样品)。
再按ctrl+m,打开movie properties(动画属性),在background(背景)一栏中点开MM_ColorPicker(macromedia 拾色器),你刚刚添加的色样就会出现在最下面,选中它,按OK(确定)键,即大功告成。
已经翻得够详细了,如果和你用的汉化版有出入的话。。。。自己体会吧。。
问:flash4是怎么样制作聊天室? 答:需要cgi的支持。比如:asp、perl、php等。国内专门介绍CGI与FLASH联合编程的站点较少,你可以去国外的一些站点看看。 问:如何制作留言板?
答:分成上、下两篇。用Asp+Flash实现。 www.flashempire.com/tutorial/tutor/t15.html 作者:边城浪子 www.flashempire.com/tutorial/tutor/t16.html 作者:边城浪子 问:如何做计数器?
答:主要是用cgi程序(asp,perl,php等)将数值写入文本文件中,然后利用FLASH的读文本文件的功能将数字读出来并显示。 问:如何动态改变颜色?
答:思路如下: 1、做好不同颜色的帧或MC调用; 2、使用RGB或者CMYK或者其他的色彩模式来进行改变,利用一个具有不同TINT属性的符号并且动态改变ALPHA属性进行叠加。 相关文章或源文件如下: 202.106.124.57/~eastecho/fbbs/Forum2/HTML/00014 2.html 203.39.170.10/http/movies/zips/colour.zip 作者:Richard James Rose 203.39.170.10/http/movies/zips/cmyk.zip 作者:Martyn van Beek 问:如何制作Loading?
答:使用_framesloaded、_totalframes两个变量可以完成 相关文章或源文件: www.flashempire.com/tutorial/tutor/t4.html 作者:边城浪子 www.flashempire.com/tutorial/tutor/t10.html 作者:小东瓜 问:如何判断载入外部swf的进度?
答:可以使用被载入swf的_framesloaded、_totalframes两个变量,加上被载入动画的名字。 相关文章或源文件: 202.106.124.57/~eastecho/fbbs/Forum2/HTML/00051 6.html 问:如何把FLASH中的输入的文本存到另一个文本文件!
答:FLASH自己不行!需要与其他软件联合编程来完成。比如:ASP,PERL。 问:经常听到别人说到路径,到底FLASH中的路径起到一个什么作用?
答:如果你用过DOS,您就可以很容易理解FLASH的路径。简单地说,路径就是在FLASH编程时能够找到变量或者符号(symbol)所经过的路。其方式跟D OS一样,分成相对的和绝对的两种。 可以看一看下面两个地址中介绍的内容: 202.106.124.57/~eastecho/fbbs/Forum7/HTML/00000 9.html 202.106.124.57/~eastecho/fbbs/Forum2/HTML/00052 5.html 问:flash编程用什么工具软件较好
答:用ActionClip1.4,你先在任何一个文本编辑软件中写完程序之后,将程序部分COPY至剪贴板,然后运行ActionClip将之转化,然后到f lash中将之PASTE便可。这个工具很小巧,在闪光地带(http:/zippy.yeah.net)有一个更好一点的工具Flash ActionScript Tool Beta2 注册版下载,支持所有的FLASHW命令,可生成一些简单的程序。 问:如何让动画放完后自动关闭?
答:在最后一桢的ACTION里选FSCOMMOND一项,然后在右边选中QUIT,便可! Flash5常见问题与解答
(Water 2001年08月26日 16:41) 什么是Generator ?它有什么用途?
答:Generator是基于数据的动态图形服务系统。通过模板与后台数据的结合,Generator使得动态图形发布成为可能。根据不同的数据,迅速更改广告信息、头版信息、日历、图表等页面元素。结果可通过GIF、JPEG、PNG等文件格式发布。这种图形数据驱动的方式大大降低了开发投入,并为用户带来了完全一对一的服务感受,是未来倡导个性化服务的电子商务网站必备的动态图形服务端。
怎样把做好的Flash动画转换成屏幕保护程序?
答:使用SWF Browser或者Screensaver,他们可以很方便地将SWF转换成屏保,使用SWFBrowser你还可以将SWF中的图片、音效等提取出来。
如何制作动画开始前的Loading效果?
答:在影片中的第二个影格中判断"_framesloaded(已载入影格)"是否和"_totalframes(全部影格)"相等,如果不相等转到第一个影格继续循环,如果相等转入第三个影格继续播放。
如何实现打开Flash文件时满屏播放?
答:在动画第一帧中插入"ActionScript:FS Command("fullscreen",true)",如果想不显示右键菜单,则插入:"FS Command("showmenu",False)",关闭动画为"FS Command("quit")"。
ActionScript 专家模式下的汉字如何才能显示?
答:只要把Windows/Fonts目录中的MODERN.fon文件删除即可。
如何实现打字机的效果?
答:首先将一个文本框放置在场景中,把它的文本属性设置为"Dynamic(动态文本)"并设置变量名称如"textbox"。然后新建一个图层用来放置ActionScript,在第一个影格中将文本内容存储到一个变量如"text="您好,欢迎光临。""并且为变量i设置初始值"i=0"。在第二个影格中使用"mbsubstring"函数将文字逐一赋值给文本变量,如"textbox=mbsubstring(text,1,i)"然后累加i的值"i=i+1"。然后在第8个影格中判断i的大小是不是等于text的长度,如果相等则停止"Stop();"如果不相等则转到第二个影格播放"gotoAndPlay(2);"。
在Flash中能否引入透明的位图?
答:Flash4以后的版本都可以接受透明位图,但必须使用Web216色安全调色板的GIF格式,如果不是这种格式可以在Photoshop中转换。转换方法是,先把它的格式改变为索引色,再选择调色板为Web调色板,最后输出为GIF89a格式。
如何将SWF 做的更小,更适合在网上传播?
答:(1)尽量使用简单的矢量图(2)多使用组件(3)尽量不要将字体打散(4)合理使用音效文件(5)多用渐变动画少用逐帧动画
在制作按钮时"HIT"有何用处?
答:"HIT"指的是反应区域,就是当鼠标移动到这个区域后发生"onmouse"事件。所以大家在用文字作为按钮时,最好在"HIT"中画一个矩形区域。
Flash支持哪几种格式的矢量图?
答:Flash支持后缀为".ai"、".eps"、".wmf"的矢量图,这些矢量图可直接导入。
怎样才能使动画播放更流畅?
答:(1)减小动画动作的面积(2)在同一时刻,动画图层不宜太多(3)尽量简化矢量图片(4)尽量不要把动画背景设为透明方式(5)清除不必要的组件
。 在调节对象位置时很难准确调整,怎么才能非常准确地对齐组件? 答:按"Ctrl+Alt+I"组合键可以以坐标方式对对象进行调整,或者选中对象后按上下左右键进行调整。
怎样才能使动画中的图片或者文字运动速度加快。
答:把播放速度调快,比如24帧/秒,方法是:点击"modify/movies",加大Framerate(影格速度)的值就可以了。
如何不用ActionScript 制作鼠标跟随动画?
答:如果你对ActionScript不熟悉一样可以用按钮制作出鼠标跟随效果。首先新建一个按钮,在按钮的"hit"影格中画一个圆,在"onmouse"影格中放置一个圆渐隐的动画。再把按钮用复制粘贴的方法填充到整个场景就完成了。不过这样做出的鼠标跟随动画要比用ActionScript制作的所占的空间大的多。
很多地方提到的"MC"、"FS"代表什么意思?
答:"MC"指的是动画片段,是Movie Clip的简称。"FS"就是FSCOMMAND,是Flash的一个非常重要的一个命令集合。 本文出自 51CTO.COM技术博客 |


ccna30
博客统计信息
热门文章
最新评论
友情链接