和其它脚本不同,AS程序有作用对象一说,在FLASH动画中并不能任意插入AS,而要依附于相关对象
三种作用对象
1关键帧
2按钮
3影片剪辑
动画的暂停
在关键帧上添加as会有一个a标示
字母区别大小写
注释
//单行注释
/**/多行注释
play( ); 播放
stop( ); 停止
gotoAndPlay( ); 转到并播放
gotoAndStop( );转到并停止
nextFrame(); 跳至下一帧并停止播放
prevFrame(); 跳至前一帧并停止播放
针对按钮对像的on ( ) 事件处理函数,该代码只能添加到按钮上,不能添加到时间轴上面
格式: on (鼠标事件) { //此处是我们的语句,这些语句组成的函数体来响应鼠标事件}
常用的事件有如下几个:
press: 在鼠标指针经过按钮时按下鼠标按钮
release:在鼠标指针经过按钮时释放鼠标按钮
rollOut: 鼠标指针滑出按钮区域
rollOver: 鼠标指针放在按钮
KeyPree(“key”) 按下指定的标准键盘上的按键
示例:
on事件中的参数的意义
用按钮控制影片剪辑的播放和暂停
要给影片剪辑的实例命名
影片剪辑路径.相应操作
给按钮添加链接
getURL 给事件添加超级链接,包括电子邮件链接
on(release){ getURL(“https://www.wendangku.net/doc/6313107086.html,”,”_blank”); }
on(release){ getURL(“mailto: fsdf@https://www.wendangku.net/doc/6313107086.html,”); }
As 只能插入到
关键帧(a标示)
按钮
影片剪辑
针对按钮对像的on ( ) 事件处理函数,该代码只能添加到按钮上,不能添加到时间轴上面
控制某一影片剪辑的实例,必须先给实例命名方可通过(路径.相关动作)控制
控制元素时,元素路径的书写及规律
绝对路径
相对路径
gotoAndPlay(“场景”,帧)
注意:
在进行转跳时应该尽量使用帧标签,帧标签可以穿越所有场景,减少错误,使FLASH运行速度增快。
只能在根时间轴上跳转时使用转跳到指定场景,而不能是其它影片剪辑或其它对象的时间轴内
nextScene() 转跳到下一场景
如何定义变量
如:定义一个容器,容器名字是myAge,用来存放年龄。定义如下: var myAge;
var 是用来定义变量的关键字
myAge则是容器名,即变量名
变量赋值
那么这个变量怎么存放年龄呢?在定义变此时可以给定一个值,即变量值,如下所示:
var myAge=66;
其中“=”号代表赋值运算符,把66 这个值赋给变量myAge。
或
set(“myAge”, 66)
提示:
首次定义变量时,为该变量指定一个已知值,这就是所谓的初始化变量,变量不初始化,是不能参与运算的;
如果使用未赋初值过的变量该变量的值将是NaN或undefined。并且动件脚本可能产生意外的结果。
命名变量名要遵守如下的规则:
不能是as 关键字,所谓关键字也称保留字,指as 预先定义好的标识符。
不能以数字开头,第一个字符必须是字母或下划线“_”和美元符“$”。中间不能有空格。
变量名中不能使用标点符号,
不应将动作脚本语言中的任何元素用作变量名称。
正确的示例:
a,m,ba,assw,a_aa,my_mc,$abc,$_ss,$_mc等等
my_txt 保存文本的变量
错误的示例:
2_m //不能用数字开头
my-a //不能用减号分割
a.ss //不能使用标点符号
a b //不能有空格
在FlashMX 2004 以上的版本中变量也可以用中文来表示。
如:
var 年龄=20; 其中年龄就是变量名。
提示:在命名变量时规范的方法是不同类型的变量加不同的前缀或者后缀
影片剪辑: my_mc
按钮:my_btn
trace()函数在编写脚本中,我们会大量用到trace()命令。trace()实际算是一个调试命令,它的功能是输出某个变量值到输出面板(和document.write()有点类似)
在动作脚本中有3 种类型的变量范围:
本地变量在声明它们的函数体(由大括号界定)内可用。
时间轴变量可用于该时间轴上的任何动作脚本。
全局变量和函数对于文档中的每个时间轴和范围可见。
本地变量(最常用)
要声明本地变量,请在函数体内部使用var 语句。
本地变量的使用范围只限于它的代码块,它会在该代码块结束时到期。没有在代码块中声明的本地变量会在它的动作脚本结束时到期。
时间轴变量
时间轴变量可用于该时间轴上的任何动作脚本。
例如:
如果将代码“var x=10;”放置在第20帧上,则附加到第20 帧之前的任何帧上的动作脚本都无法访问变量
全局变量
全局变量和对于文档中的每一时间轴和范围而言都是可见的。
若要创建具有全局范围的变量,请在变量名称前使用_global 标识符,并且不使用var语法。
例如
在根时间轴第一帧上定义两个变量,然后将trace()放在不同时间轴和地点去返回它们的值,以观察它们的区别Var a=5 _global.b=3
选择“动态文本”
给其设置一个变量名
字符串型
以双引号引起的
“HI As”
数值型
数值
1,300
布尔型
只有两种:
true false
其它类型:
影片剪辑
undefined
表示未定义的数据类型,如下情况返回undefined值: 对象属性不存在
声明了变量但未赋值
+ (当加数其中一个为字符串时,即为字符串连接符) -
*
/
%
++
--
比较操作符
==
<
>
<=
返回值只有两个(true ,false)
操作符
条件运算符
?:
格式:表达式1?表达式2:表达式3
说明:当表达式1的返回值为true,则返回表达式2的值;否则返回表达式3的值
if (a >b ){max = a} else{max =b}
max = a>b?a:b
And (&&) 左右两边都为真是才为真
or (||) 一边为真即为真
Not 取反
_x,_y,
_width,_height,
_xscale,_yscale,
_rotation,
_url,目标的存放路径如(file://c/My Documents/boot.swf)
_target,返回指定电影剪辑的目标路径如(_root.star.boot)
_name,实例名称,可改变。
_visible,
_currentframe,取得当前时间播放线的当前帧号
_framesloaded,取得对象已载入的总帧数
_totalframes,取得目标的总帧数
_xmouse,_ymouse,注意,可以获得在主时间线和影片剪辑的坐标用法:_root._xmouse, _root.boot._ymouse,
上面的属性用法均为:MovieCilp._prtperty
全局属性
_highquality
用法:setProperty(MovieClip,_highpuality,参数(0&&1&&2));
设置实例播放时的画面等级。
_quality
用法:setProperty(MovieClip,_quality,参数(字符串(Low&&Medium&&High)));
_soundbufime
用法:MovieCilp实体名._soundbufime=缓冲时间;
setProperty(Moviecilp.实体名,_soundbufime,缓冲时间);
用于设置声音预读缓冲的秒数,默认时间是5秒。
把电影剪辑中的声音设为流式声音,这样可以一边下载一边播放。如果数据量大,缓冲时间就设置长!
_focusrect
用法:MovieClip实体名._focusrect=参数值;
setProperty(MovieClip实体名,_focusrect,o或1);
用于指定当前获得焦点的按钮周围是否显示黄色矩形框。
点语法设置属性
setProPerty()
功能:当影片播放时更改影片剪辑的属性
语法格式:
setProPerty(要设置其属性的影片剪辑的实例名称的路径,要设置的属性,属性的新值)
影片剪辑路径的两种写法
_root.my_mc
_root[“my_mc”]
获取影片剪辑的值
getProperty()
功能:返回影片剪辑的指定属性值
格式:
getProperty(影片剪辑实例的路径,属性)
if else
格式:
if (条件) {代码块1}
else {代码块2}
说明:
如果条件成立则执行代码块1里面的代码,否则执行代码块2里面的代码
random(最大值)
转换为数字函数:
Number(变量)
如只想获得输入文本的值,则需把”自动调整字距”勾掉和取消”以html方式显示”
onClipEvent():
这个语句指专门给电影剪辑添加命令的语句,就像on语句是专门给按钮添加命令一样。
格式:
onClipEvnet(事件)
{
//代码块
}
影片剪辑事件类别
onClipEvent(load) 当影片片断第一次加载到时间轴时,会触发本事件一次
onClipEvent(enterFrame) 当影片片断加载时间轴时,不论是放映或停止状态或显示与否,都会不断触发本事件。所以只要此片断被加载后,此事件会一直不断地执行,直到影片片断被删除为止。onClipEvent(unload) 当影片片断被删除时,会触发本事件一次。onClipEvent(mouseDown) 当鼠标左键被按下时,会触发本事件一次。onClipEvent(mouseUp) 当被按下的鼠标左键被放开时,会触发本事件一次。
onClipEvent(mouseMove) 只要在场景中移动鼠标,就会不断触发本事件。
onClipEvent(keyDown) 当键盘被按下时,会触发本事件。onClipEvent(keyUp) 当已按下的键盘被松开时,会触发本事件一次
mouseMove,mouseDown,mouseUp和按钮里的三个事件是区别是,该三个事件可在影片的任何位置都可以触发事件,则在按钮中的三个事件,必须在按钮响应区域方可触发事件.
绘图函数moveTo
moveTo 定义绘制线条的起点位置
语法格式:moveTo(x, y)
功能:
将当前绘画位置移动到(x, y)
lineStyle 定义预绘制线条的样式
语法格式:
lineStyle(thickness, rgb, alpha)
功能:指定Flash 用于后续lineTo() 方法调用的线条样式,Thickness: 设置线条粗细(0-255)
Rgb: 设置线条的颜色(0xFF0000) 代表红色
Alpha: 不透明度
lineTo 把前面定义好的线划到什么地方去
语法格式:public lineTo(x, y)
功能:使用当前线条样式绘制一条从当前绘画位置到(x, y) 的线条;
keyDown:当按下某个键时启动此动作
使用Key.getCode()获取有在最后按下键的信息
左,上,右,下键对应代码为37,38,39,40
可通过输出Key.getCode()来获得按键的对应代码
Key.isDown (keycode)方法,可以检测参数(keycode)指定的按键是否被按下。如果被按下,返回true ,没有被按下,返回false
影片剪辑操作函数
o duplicateMovieClip()函数
o removeMovieClip()函数
o attachMovie()函数
示例:
?复制删除影片剪辑
?梅树开花
?草地开花
?下雨了
1startDrag()与stopDrag()
2swapDepths()s
getNextHighestDepth()
示例
?拼图
?可拖动像册
duplicateMovieClip()函数的作用是通过复制创建的影片剪辑的实例。在Flash作品中常见的倾盆大雨、雪花飘飘、繁星点点等动画特效格式:
duplicateMovieclip(目标、新实例名称、深度);
目标:要复制的影片剪辑的目标路径。
新实例名称:所复制的影片剪辑的唯一标识符。
深度:所复制的影片剪辑的唯一深度级别。深度级别是所复制的影片剪辑的堆叠顺序。这种堆叠顺序很像时间轴中图层的堆叠顺序;较低深度级别的影片剪辑隐藏在较高堆叠顺序的剪辑之下。必须为每个复制的影片剪辑分配一个唯一的深度级别,以防止它替换已占用深度上的影片剪辑。
使用注意:
当SWF 文件正在播放时,创建一个影片剪辑的实例。无论播放头在原始影片剪辑中处于什么位置,在重复的影片剪辑中,播放头始终从第 1 帧开始。原始影片剪辑中的变量不会复制到重复的影片剪辑中。
复制得到的影片剪辑保持父级影片剪辑原来的所有属性,所以,原来的影片剪辑是静止的,复制后的影片剪辑也是静止的,并且一个叠放在另一个上。如果不给它们设置不同坐标,就只能看到编号最大的影片剪辑复本,而看不出复制的效果。复制得到的影片剪辑实例经常要与影片剪辑属性控制(特别是x,_y,_alpha,_rotation,_xscale,_yscale 等属性的控制)结合才能更好地发挥复制效果
removeMovieClip()删除指定影片剪辑
格式:
removeMovieClip(实例名)
attachMovie() 同duplicateMovieClip()函数
区别:
duplicateMovieClip() 中目标必须已经在舞台
attachMovie() 则不必库中属性action链接设置标示符
函数功能:使影片剪辑实例在影片中播放过程中可拖动。
语法格式:startDrag(目标,固定,左,上,右,下)
参数意义:
目标:表示要拖动的影片剪辑的目标路径。
固定是一个布尔值,指定的可拖动影片剪辑是锁定到鼠标指针位置中央(true),还是锁定到用户首次单击该影片剪辑的位置上(false)。此参数是可选的。
Left、top、right、bottom、这四个参数分别设置影片剪辑拖动在左、上、右、下的范围,注意相对于影片剪辑父级坐标的值,这些值指定该影片剪辑被约束的矩形。这些参数是可选的。
函数功能:停止当前的拖动操作
语法格式:stopDrag()
starDrag()可以作为影片剪辑的方法
Mc.startDrag();//实现影片剪辑的拖动
知识点:
swapDepths(参数) 设置该影片剪辑的深度设置为指定参数
getNextHighestDepth() 最高级深度,以确保影片剪辑出现在其它的上面
for
for(变量=初值;范围;步长) { 循环体}
for (i=0;i<10;i++)
{ trace(“欢迎进入as世界”); }
while
在某些情况下,无法确定循环需要执行的次数,就需要用来while循环
语法格式
while(表达式成立)
{
代码块
new Sound(mc) 定义一个声音对象
参数mc 指定该声音是属于哪个对象的
mySound.attachSound(id_string)连接到声音id_string
参数id_string 是该音乐在库里的导出标号
mySound.start(begin_num,loop_num)
参数begin_num,播放的位置,开头位置为0.loo_num 循环次数(默认为1) mySound.stop(id_string) 指定音乐停止播放
参数同:attachSound
mySound.getVolume(); mySound.setVolume(num);获取和设置音量(范围0~100) mySound.setPan(num); mySound.getPan();获取或设置声道偏移量(-100,100)-100表示纯左声道,100表示纯右声道
音乐也要设置属性标示符
数值运算函数
Number(a) 将a转换为数值
int(a) 将a转换为数值后取整
random(num) 随机返回0到num-1的一个整数
isNaN 判断是否为非数值
字符串运算函数
length(string) 返回string长度
substring(string,start_num,length_num) 返回string中第start_num开始,长度为length_num的子串
Mouse.hide() 隐藏鼠标指针
Mouse.show() 显示鼠标指针
new Date() 定义一个时间对象,其时间为当前系统时间
eg: var myDate = newDate();
myDate.getFullYear() 返回年份
myDate.setYear(year) 设置年份
myDate.getMonth 返回月份0表示一月,11表示十二月
fscommand(命令,参数) 该命令可以实现对影片浏览器,也就是FLASH PLAYER的控制,另外,配合javascript脚本语言,fscommand命令成为flash和外界沟通的桥梁
fscommand (”fullscreen”, ”true/false”);(全屏设置,true开,false关)fscommand (”showmenu”, ”true/false”);(右键菜单设置,true显示,false不显示)fscommand
(”allowscale”, ”true/false”);(缩放设置,true自由缩放,false调整画面不影响影片本身的尺寸)fscommand (”quit”);(退出关闭窗口)
载入动画,进度条,制作
_root.getBytesLoaded() //获取已下载字节
_root.getBytesTotal() //获取总字节
getTimer()//返回自SWF 文件开始播放时起已经过的毫秒数。
fscommand(命令,参数) 该命令可以实现对影片浏览器,也就是FLASH PLAYER的控制,另外,配合javascript脚本语言,fscommand命令成为flash和外界沟通的桥梁
fscommand浏览器和网络控制命令
fscommand (”fullscreen”, ”true/false”);(全屏设置,true开,false关)fscommand (”showmenu”, ”true/false”);(右键菜单设置,true显示,false不显示)fscommand (”allowscale”, ”true/false”);(缩放设置,true自由缩放,false调整画面不影响影片本身的尺寸)fscommand (”quit”);(退出关闭窗口)
mc.hitTest(“mc2”)
用来检测,mc影片剪辑是否与mc2相交
1.制作小猫运动的影片剪辑
2.制作点击出现小球的影片剪辑,并且小球一直向上上升,当升到场景顶端时,消失
3.设置小猫在不同状态下的运动方式。
4.在第一帧设置相关初始值:
小猫X运行速度,小猫y运行速度,小猫是否下落的状态
5.设置台阶等代码,但台阶与小猫相交时,让小猫为下落的状态,在不相交时,让小猫状态为下落;
5.制作小鱼的影片剪辑,当小鱼碰到猫时,显示小鱼被吃
6.设置小球与小猫相交时的响应代码:小猫状态为上升
7.完善相关分数显示,气泡的出现频率等