flash课件交互方式基本练习.ppt
1,flash课件的交互方式,2,交互的基本原理,用户通过鼠标、键盘等输入设备,让程序改变指定的变量值,或者调用不同的常量,根据条件判断结果来执行特定动作,以实现输出效果的变化。示例:onMouseMove=function()/鼠标移动时a=_root._ymouse;/读取y坐标b=_root._xmouse;/读取x坐标if(b80),3,内容提要,4,利用stop函数实现影片停止,flash默认自动播放,当需要默认停止时可选中时间轴第1帧,在动作面板中添加stop();flash默认播放完后自动返回第1帧继续播放,如果希望停在最后一帧,可选中时间轴最后1帧(关键帧),在动作面板中添加stop();,示例:00小球运动(未加脚本)01小球运动(第1帧加stop)02小球运动(最后1帧加stop),5,按钮的脚本格式,鼠标点击一般针对按钮或影片剪辑元件方法一:选中按钮后添加用脚本助手on(release)执行动作 on(press)执行动作 方法二:在时间轴上选中一个帧,打开动作面板手工输入a2.onPress=function()执行动作a2.onRelease=function()执行动作 注:a2为按钮实例名,,6,按钮控制影片停止,如果希望在播放过程中停止,需要在舞台上添加一个按钮;选中按钮后,打开动作面板和脚本助手,在全局函数中找到stop,将其拖放至动作面板自动生成脚本on(release)stop();,示例:03小球运动(添加停止播放按钮),7,按钮控制播放,停止后如果希望继续播放,需要在舞台上添加一个按钮,选中按钮后,打开动作面板和脚本助手,在全局函数中找到play,将其拖放至动作面板。自动生成脚本on(release)play();,示例:03小球运动(添加停止播放按钮),8,按钮控制影片跳转,如果希望跳转到某一帧继续播放,需要在舞台上添加一个按钮,选中按钮后,打开动作面板和脚本助手,在全局函数中找到goto,将其拖放至动作面板。自动生成脚本on(release)gotoAndPlay(1);在“帧”文本框中输入你希望跳转到的数字,示例:03小球运动(添加停止播放按钮),9,帧标签的使用,在脚本中gotoAndPlay(1);括号中的参数默认为数字,但也可改为帧标签,在时间轴上选中要跳转到的帧,在属性面板中填入标签名(标签名可以是数字或字母)。在脚本助手中,将类型选为标签,然后输入标签名,可发现括号多了双引号gotoAndPlay(3);,示例:03帧标签应用沁园春长沙,10,常量与变量,常量是指某些固定的数字或字母。如1234,true,false,ENTER变量随实际情况变化,可以人为改变或进行运算。如a1=_root._xmouse;a2=_root._ymouse;a1和a2随着鼠标移动而变化。,11,变量定义与赋值,a=10;/定义a为数值型变量并等于10;b=10;/定义b为字符串变量并等于“10”;字符串变量可以转换为数值,如c=Number(b);/将b的字符串变量转换为数值,赋值给c变量;特殊的变量需要指定类型,如var song:Sound=new Sound();/定义变量song为声音类型代表一个新的声音;var my_color:Color=new Color(my_mc);/定义变量my_color为颜色类型代表my_mc的新颜色;,12,变量的应用,定义某个变量并给初始值通过鼠标键盘等输入操作,改变变量的值,在动作函数中调用变量作为参数。或者利用判断语句判断变量的值,执行相应动作。从而控制画面或声音输出效果的变化。示例:做一个动画,时间轴添加a=1;舞台上某一个按钮添加on(release)a+=20;gotoAndPlay(a);测试结果为向前快进,示例:04变量应用与跟踪,13,变量的跟踪,在脚本中加入变量跟踪,可以方便地了解变量的值,如on(release)a+=20;gotoAndPlay(a);trace(a);/跟踪变量a每次按下按钮可以看到a输出不同的值,示例:04变量应用与跟踪,14,输入文本与动态文本,输入文本是指在影片播放的情况下,允许利用键盘在文本框中输入文本字符。输入的字符经过变量读取,可以在动态文本框显示出来。输入文本框同时也具有动态文本的显示功能。,15,输入文本(示例:输入数字显示计算结果),假设输入文本框的实例名为a1,变量名为c;要读取输入文本框的信息,并显示在动态文本框中(变量为b);通过按钮添加on(release)b=a1.text;/必要时写成 b=Number(a1.text)转为数值型 b=2*b;在时间轴上添加:c=“请输入数字”;则测试会出现提示“请输入数字”,当输入数字后点击按钮则出现计算结果。,示例:05输入文本,16,按键控制,按键控制是指通过键盘的某一个(或几个)按键,实现影片或声音的控制。按键控制有两种方法:利用按钮元件添加控制脚本,在脚本助手中指定一个控制按键。持续读取键盘代码,当代码等于某一特定值,表示某一指定按钮被按下,此时执行相应脚本对影片或声音进行控制。,17,按键控制(利用按钮),选中按钮元件,打开脚本助手添加脚本,指定一个按键。,示例:06键盘控制(大炮),18,按键控制(Key.isDown 方法),if(Key.isDown(39)执行动作/小括号的数字为某一按键的代码,键盘上每一按键有唯一代码。,19,按键控制,car_mc.onEnterFrame=function()if(Key.isDown(39)/39是右箭头的代码 this._x+=10;if(Key.isDown(37)/37是左箭头的代码 this._x-=10;if(Key.isDown(38)/38是上箭头的代码 this._y-=10;if(Key.isDown(40)/40是下箭头的代码 this._y+=10;/以上脚本可以通过键盘箭头键实现car_mc的上下左右移动,示例:07箭头键控制小球移动,20,鼠标移动,鼠标移动时,鼠标坐标数值会不断变化,读取鼠标数值,可以判断鼠标位于画面的位置,从而控制影片。onMouseMove=function()/鼠标移动时 x1=_root._xmouse;y1=_root._ymouse;注:x1、y1为变量名,21,如何知道鼠标在某个特定位置,1.在舞台上建立一个特定大小的对象,给出实例名mc,利用碰撞检测函数hitTest(),格式onMouseMove=function()if(mc.hitTest(_root._xmouse,_root._ymouse)执行动作;,示例:08碰撞检测hitTest08电子相册,22,如何知道鼠标在某个特定位置,2.通过坐标值判断onMouseMove=function()a=_root._ymouse;b=_root._xmouse;if(b80),脚本需要手工输入或拷贝,23,鼠标拖动,鼠标拖动是指按下鼠标将影片剪辑进行拖动,同时判断拖动的对象坐标位置的变化情况,利用拖动对象的坐标值对影片实施控制。,24,影片拖动,在舞台上放一个影片剪辑元件并选中,打开动作面板和脚本助手,在全局函数中找到startDrag添加到动作面板,自动生成on(release)startDrag();单击release,将“按下”选中,去掉“释放”对勾,变成on(press)startDrag();09,示例:09拖动交互(基本操作),25,停止影片拖动,(接上一页)在选中影片剪辑元件时,打开动作面板和脚本助手)在全局函数中找到stopDrag添加到动作面板,自动生成on(release)stopDrag();测试影片,用鼠标尝试拖放影片元件,示例:09拖动交互(基本操作),26,手工添加影片拖动脚本,在舞台上放一个影片剪辑元件并选中,在属性面板中给出实例名yuan选中时间轴上某1帧,在动作面板中手工添加yuan.onPress=function()startDrag(yuan);yuan.onRelease=function()stopDrag();,示例:10拖动交互,27,拖动交互的应用,按下鼠标时记下影片剪辑的原始位置,允许拖动影片剪辑,到目标位置附近释放鼠标,此时停止拖动并判断目标是否符合,不符合则回到原始位置,28,影片加载到级别,flash允许在一个影片中调用另一个影片并叠加到画面中。假定已经准备好一个swf影片,文件名为:小球运动(未加脚本).swf新建一个文件保存在同一文件夹,添加一个按钮,选中按钮,打开动作面板和脚本助手,找到loadMovie将其拖至动作面板中,自动生成on(release)loadMovieNum(,0);在url栏填入完整文件名小球运动(未加脚本).swf级别数字改为1,1表示叠加到画面上的第一层,示例:11加载影片至级别,29,影片卸载,(接上一页)如果要去掉刚才加载的影片,再添加一个按钮,选中按钮,打开动作面板和脚本助手,找到unloadMovie将其拖至动作面板中,自动生成on(release)unloadMovieNum(0);级别数字改为1,1表示去掉刚才叠加到画面上的第一层,30,影片加载到目标,如果希望调用另一个影片并叠加到指定的影片剪辑中,要用影片加载到目标。假定已经准备好一个swf影片,文件名为:小球运动(未加脚本).swf新建一个文件保存在同一文件夹,在舞台上建一个影片剪辑,实例名为mc在舞台上添加一个按钮,选中按钮,打开动作面板和脚本助手,找到loadMovie将其拖至动作面板中,自动生成on(release)loadMovieNum(,0);在url栏填入完整文件名小球运动(未加脚本).swf级别改为目标,填入mc,脚本变成on(release)loadMovie(小球运动(未加脚本).swf,mc);,示例:12加载影片至目标,31,级别与目标的差异,当影片加载到级别时,新画面与原画面左上角对齐;新画面可以替代原画面(当Num为0),或者叠加在上面(当Num大于0);叠加在上面的新画面的名称为:_level1,_level后面的数字与Num一致。当影片加载到目标时,新画面与原画面中影片剪辑的左上角对齐;新画面可以替代原画面中的影片剪辑;新画面使用原来影片剪辑的实例名(如mc);,32,级别:将影片放在另一个影片的上面,33,目标:将影片放在另一个影片的内部,34,改变元件对象的坐标,每个元件对象在舞台上均匀它自己的坐标,我们可以读取它的坐标值并通过改变坐标值来改变它的位置。假设影片剪辑的实例名为a2,读取a2的坐标值ax=a2._x;ay=a2._y;改变a2的坐标值(xy坐标分别增加100和200)ax+=100;ay+=200;a2._x=ax;a2._y=ay;简单一点就是a2._x+=100;a2._y+=200;,35,改变元件对象的大小,假设影片剪辑的实例名为a2要改变元件对象的大小可以用两种方法:1.改变其缩放百分比的值a2._xscale=20;a2._yscale=20;/数值小于100为缩小,大于100为放大2.改变其宽高值a2._width=250;/数值表示像素a2._height=350;,36,改变加载影片的坐标和大小,改变加载影片的坐标和大小,道理上与改变元件对象坐标和大小做法相同;但实际上由于加载需要时间,如果在加载影片的同时,直接改变加载影片的大小是不成功的。我们需要设置等待语句,当影片加载完毕后才进行改变。示例:13加载外部图片(待完善)14加载外部图片请注意对比两者的效果差异。,37,按钮透明度、可见性与允许,38,按钮的可见性,假设舞台上放置两个控制按钮:播放和停止,他们的实例名分别为bofang和tingzhi我们希望当影片正在播放时,只需要出现停止按钮,用脚本让播放按钮不可见;tingzhi._visible=true;bofang._visible=false;反之,当影片已经停止时,只需要出现播放按钮,用脚本让停止按钮不可见;tingzhi._visible=false;bofang._visible=true;,示例15两个按钮看起来是一个(实现播放与停止),39,按钮的允许与禁止,如果我们希望按钮还在画面上,只是不可点击,则可用函数enabled来实现。当影片正在播放时,用脚本让播放按钮不可点击;tingzhi.enabled=true;bofang.enabled=false;反之,当影片已经停止时,用脚本让停止按钮不可点击;tingzhi.enabled=false;bofang.enabled=true;,40,改变影片剪辑元件的颜色,为了区别某个对象是否曾经点击过,我们可以用函数setRGB()让点击的对象变色。用法:定义一个变量为Color,令其为某实例对象的新颜色变量.setRGB(0 x十六进制颜色代码)如在舞台上建一个蓝色影片剪辑,实例名为my_mc,将脚本添加到时间轴,var my_color:Color=new Color(my_mc);my_color.setRGB(0 xFF0000);测试后发现蓝色影片剪辑变为红色。,41,改变影片剪辑元件的颜色,var i:Number=-1;var my_color:Color=new Color(my_mc);my_mc.onPress=function()i*=-1;if(i=1)my_color.setRGB(0 xFF0000);/else my_color.setRGB(0 x0000FF);,示例:16改变颜色这个代码的效果是点击影片剪辑时红色和蓝色轮流出现,42,声音调用与控制,43,调用库中的声音文件,调用库中的声音文件用函数attachSound();需要调整某个声音对象的音量,可以用函数setVolume()。其中括号为音量值的百分比用法:导入一个声音文件到库,添加声音文件的链接标识符,如qinyuanchun然后在时间轴上添加脚本var song:Sound=new Sound();/定义变量song.attachSound(qinyuanchun);/调用声音song.start();/声音开始song.setVolume(50);/预设音量50%测试后听到声音,示例:17音量基本练习,44,声音开始与停止,(接上一页)舞台上放两个按钮停止和播放停止按钮添加on(release)song.stop();播放按钮添加on(release)song.start();测试后看能否控制播放,示例:17音量基本练习,45,调整音量大小,(接上一页)舞台上放两个按钮“音量增”和“音量减”,时间轴原来脚本上增加v=50;音量增按钮添加on(release)v+=10;song.setVolume(v);音量减按钮添加on(release)v-=10;song.setVolume(v);测试后看能否调整音量,注意:这个脚本还不完善,因为音量值没有设定上下限,46,声音暂停,时间轴在原脚本增加一行t=0;舞台上放两个按钮暂停和播放暂停按钮添加on(press)t=song.position;/读取已播放的毫秒数t=t/1000;song.stop();播放按钮添加on(release)song.start(t);测试后看能否控制播放,示例:17音量基本练习pause,47,复制影片剪辑,基本格式:duplicateMovieClip(目标,新名字,图层深度);新名字._x=新的坐标值示例duplicateMovieClip(yuan,yuan1,2);yuan1._x=200;,48,复制影片剪辑,p=1;on(release)p+=1;duplicateMovieClip(yuan,yuan+p,p);_rootyuan+p._x=_rootyuan+p._x*p;,示例:18复制影片,49,复制影片剪辑,p初始值为1,按下第一次复制时,p为2所以duplicateMovieClip(yuan,yuan+p,p);相当于duplicateMovieClip(yuan,yuan2,2);_rootyuan+p._x=_rootyuan+p._x*p;相当于_root.yuan2._x=_root.yuan2._x*2;,示例:18复制影片,50,The End,