flash影片剪辑控制方法.docx

上传人:b****5 文档编号:29394230 上传时间:2023-07-23 格式:DOCX 页数:15 大小:22.67KB
下载 相关 举报
flash影片剪辑控制方法.docx_第1页
第1页 / 共15页
flash影片剪辑控制方法.docx_第2页
第2页 / 共15页
flash影片剪辑控制方法.docx_第3页
第3页 / 共15页
flash影片剪辑控制方法.docx_第4页
第4页 / 共15页
flash影片剪辑控制方法.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

flash影片剪辑控制方法.docx

《flash影片剪辑控制方法.docx》由会员分享,可在线阅读,更多相关《flash影片剪辑控制方法.docx(15页珍藏版)》请在冰豆网上搜索。

flash影片剪辑控制方法.docx

flash影片剪辑控制方法

flash影片剪辑控制方法

影片剪辑

影片剪辑是Flash中最重要的一种元件,对影片剪辑的控制是ActionScript的最重要功能之一。

从根本上说,Flash的许多复杂动画效果和交互功能都与影片剪辑的运用密不可分。

使用点语法或方括号可以定位影片剪辑。

使用方括号时可以使用由变量表示的影片剪辑实例名,这是它相对于点语法的优点。

可以用脚本控制影片剪辑的各种动作,也可以在影片剪辑的事件处理函数中控制主时间轴和别的影片剪辑。

影片剪辑最重要的两个事件是load和enterFrame。

5.1控制影片剪辑的播放动作

设想一个Flash动画,它的主场景中只有一个帧,舞台中只有一个影片剪辑,影片剪辑中并没有ActionScript。

如何才能控制影片剪辑的播放动作呢?

要控制一个影片剪辑,首先应该为影片剪辑命名。

容易混淆的是,库面板中的影片剪辑本身有一个名称,这里要命名的是场景中影片剪辑实例的名称。

它们可以相同,也可以不相同。

如果你在场景中创建了同样的影片剪辑的多个实例,那么就需要将每个实例以不同的名称命名,才能用ActionScript对每一个实例进行控制。

如果不需要对影片剪辑进行控制,也就不需要为影片剪辑的实例命名。

从本例文件中,你将看到库面板中只有一个影片剪辑rollmc,场景中创建了一个rollmc的实例。

你还可以再从库中拖出若干个rollmc的实例将它们放置到场景中。

选中场景中影片剪辑rollmc的实例,打开属性面板,可以看到它被命名为roll,你同时可以看到该影片剪辑原来的名字rollmc,如图5-1所示。

你也可以为它指定别的名称,也可以是rollmc,Flash并不会混淆它们之间的区别。

此主题相关图片如下:

图5-1为影片剪辑实例命名

实例名称可以在程序中用来指代该影片剪辑实例,如果要控制该实例,就需要在脚本中使用该名称。

下面,我们就来看看如何通过脚本控制影片剪辑实例roll。

分别选中场景中的4个按钮,打开它们的动作面板,查看其中的代码。

“STOP”按钮:

on(release){roll.stop();}

单击“STOP”按钮使roll实例停止播放。

“PLAY”按钮:

on(release){roll.play();}

单击“PLAY”按钮使roll实例继续播放。

“PREV”按钮:

on(release){roll.prevFrame();}

单击“PREV”按钮使roll实例回退一帧并停止。

“NEXT”按钮:

on(release){roll.nextFrame();}

单击“NEXT”按钮使roll实例播放一帧并停止。

按Ctrl+Enter键测试影片,如图5-2所示。

一开始影片剪辑自动播放。

单击不同的按钮看看影片剪辑是否执行相应的动作。

除了这几种命令,你还可以使用gotoAndStop或gotoAndPlay命令控制影片剪辑跳转到具体的帧,但是在命令前面都需要指定影片剪辑的实例名称。

这种方法是在影片剪辑实例所在的层级中控制影片剪辑,如果是在影片剪辑内部,要控制它自身的播放,就可以直接使用stop、play等命令,而不需要指定实例名称。

如果你在影片剪辑内部的时间轴中使用了名称roll,Flash会在影片剪辑内部的时间轴中寻找该实例。

5.2定位影片剪辑

我们已经了解了如何使用最简单的方法定位一个影片剪辑,即使用影片剪辑的实例名,后面紧跟一个点记号“.”,然后是你想要影片剪辑执行的命令。

还有许多方法可以定位影片剪辑。

首先,我们来看看如何定位Flash影片中不同层级的对象。

Flash影片中最基本的目标层级就是它的主时间轴。

可以用关键字_root来表示和定位主时间轴。

例如,你要向主时间轴发送一个gotoAndStop命令,可以使用如下所示的语句:

_root.gotoAndStop(9);

如果这个命令是包含在主时间轴的某一帧上的,则可以省略目标_root。

如果这个命令是包含在主时间轴上某个影片剪辑中,需要由影片剪辑来控制它上一级的主时间轴,_root就很有必要了。

通常,要定位包含某一对象的上一级对象,可以使用关键字_parent。

所以,如果一个影片剪辑是包含在主时间轴中,在影片剪辑中使用_parent和_root的效果是一样的。

如果影片剪辑与主时间轴相差两个层级,即当影片剪辑包含在另一个位于主时间轴中的影片剪辑中,这时在该影片剪辑中使用_parent指代的是它上一级的影片剪辑,而_root是指它上两级的主时间轴。

在主时间轴中不能使用_parent,因为主时间轴没有上一级。

可以用数字来方便地说明这种层级关系。

主时间轴,它始终是最初级,作为层级0。

主时间轴中的一个影片剪辑处于层级1。

如果影片剪辑中包含另一个影片剪辑,它处于层级2。

对层级2上的影片剪辑来说,_parent指代的就是层级1上的影片剪辑,而不管对哪一级来说,_root始终指代层级0上的主时间轴。

除了用点记号连接_root和实例名,还可以使用方括号表示_root上的对象。

对上例中的按钮“STOP”来说,如下所示的3种方法作用是一样的:

rool.stop();

_root.roll.stop();

_root["roll"].stop();

还有一个关键字this,它代表脚本当前所在的层级。

如果脚本位于主时间轴中,this即指代主时间轴;如果脚本位于影片剪辑中,this即指代该影片剪辑。

所以以上语句还可以用以下两种方式表示:

this.roll.stop();

this["roll"].stop();

使用_root和this时还可以用变量来定位影片剪辑,如下所示:

varmcInsName="roll";

_root[mcInsName].stop();

今后我们会遇到这种情况,即有roll0~rool99共100个影片剪辑实例,可以使用下面的语句来控制它们:

on(release){for(vari=0;i<100;i++){_root["roll"+i].stop();}}

多数情况下我们习惯使用_root,但在某些情况下使用this比_root更简便。

如要在某个影片剪辑中定位包含在此影片剪辑中的另一影片剪辑childMC,就可以直接使用this.childMC。

5.3为影片剪辑添加脚本

现在你已经知道如何向帧和按钮中添加脚本,下面需要知道如何向影片剪辑中添加脚本。

要为影片剪辑添加脚本,首先要选中影片剪辑,再打开它对应的动作面板,然后在其中输入脚本。

影片剪辑脚本和按钮的脚本类似,它们都使用事件处理函数,与按钮的on关键字不同,影片剪辑使用onClipEvent关键字。

当某种影片剪辑事件发生时,就会触发相应的事件处理函数。

影片剪辑最重要的两种事件是load和enterFrame。

load事件在影片剪辑完全加载到内存中时发生。

在每次播放Flash影片时,每个影片剪辑的load事件只发生一次。

在主时间轴停止播放时,影片中的影片剪辑并不会停止播放,这个特性决定了影片剪辑的另一个事件enterFrame的重要性。

enterFrame事件在影片每次播放到影片剪辑所在帧时发生。

如果主时间轴中只有一帧,且不论它是否在该帧停止,该帧中的影片剪辑都会不断触发enterFrame事件,且触发的频率与Flash影片的帧频一致。

影片剪辑事件的使用方法如下所示:

onClipEvent(load){vari=0;}

onClipEvent(enterFrame){trace(i);i++;}

当影片剪辑的load事件发生时,将变量i设置为0。

当影片剪辑的enterFrame事件发生时,向输出窗口中发送i的值,然后将i加1。

输出窗口中会从0开始输出以1递增的数字序列,直到影片被关闭为止。

为了熟悉影片剪辑事件处理函数的用法,我们来为影片剪辑编写一段简单的脚本,使影片剪辑逆序播放,

我们将从影片剪辑的最后一帧处开始播放,使用prevFrame命令使影片剪辑每次后退一帧。

本例文件场景中有一个影片剪辑元件rollmc,查看一下它的属性面板,并没有为其实例命名,这是因为我们要直接在影片剪辑的动作面板中添加脚本,并不需要用到实例名称。

选中影片剪辑rollmc,此时动作面板的标题栏中应为“动作-影片剪辑”。

打开动作面板,其中添加了如下ActionScript:

onClipEvent(load){gotoAndStop(40);}

onClipEvent(enterFrame){prevFrame();}

在事件处理函数onClipEvent(load)中,令Flash影片的播放头转到影片剪辑的第40帧(即最后一帧)。

这个事件处理函数只在影片剪辑被加载完成时执行1次。

第2个事件处理函数onClipEvent(enterFrame)每播放1帧就执行1次,使影片剪辑回退1帧。

按Ctrl+Enter键测试影片,你将看到齿轮以与上例相反的方向转动,直到影片剪辑的时间轴回到第1帧,prevFrame命令不起作用,影片剪辑停止播放。

要让它连续不断的播放,可以在影片剪辑元件rollmc的时间轴第1帧的动作面板中添加如下语句:

gotoAndStop(40);

5.4用影片剪辑控制别的影片剪辑

一个影片剪辑可以控制别的影片剪辑。

综合使用_root或_parent关键字、点符号和影片剪辑实例名称可以将命令发送给另一个影片剪辑实例。

例如,在主时间轴上的影片剪辑实例roll1中添加如下脚本以控制同在主时间轴上的影片剪辑实例roll2回退1帧:

_root.roll2.prevFrame();

或者使用方括号表示如下:

_root["roll2"].prevFrame();

如果两个影片剪辑不同在主时间轴上,而是同在别的层级上,可以使用_parent关键字。

如果它们不同在一个层级上,也只需要使用点符号逐级标明所在的路径即可。

下面综合运用以上知识实现以影片剪辑控制另一个剪辑的播放动作。

(1)打开本例文件。

分别查看场景中的每一层。

按Ctrl+L打开库面板。

库面板中有三个影片剪辑元件,分别是hour、minute和second。

(2)分别双击每个影片剪辑元件,查看它们的时间轴。

(3)second元件的的时间轴共60帧,secondhand图形元件顺时针旋转1周。

在第1帧中添加了如下ActionScript:

stop();

在最后1帧中添加了如下ActionScript:

_root[target].nextFrame();

gotoAndStop

(1);

(4)minute元件的的时间轴共60帧,minutehand图形元件顺时针旋转1周。

在第1帧中添加了如下ActionScript:

stop();

在最后1帧中添加了如下ActionScript:

_root[target].nextFrame();

gotoAndStop

(1);

(5)hour元件的的时间轴共12帧,hourhand图形元件顺时针旋转1周。

在第1帧中添加了如下ActionScript:

stop();

(6)回到主场景,在属性面板中为hour影片剪辑和minute影片剪辑指定了与元件名称相同的实例名称。

(7)选中second元件实例,打开其动作面板,其中添加了如下ActionScript:

onClipEvent(load){target="minute";}

onClipEvent(enterFrame){nextFrame();}

(8)选中minute元件实例,打开其动作面板,其中添加了如下ActionScript:

onClipEvent(load){target="hour";}

以上脚本的原理是:

使每个影片剪辑都在各自的第1帧停止。

在second的enterFrame事件中令其自身移到下一帧。

直到second元件转动完一周,到达最后一帧,使用_root[target].nextFrame();命令将target所指目标后移1帧,这里的target是在second影片剪辑实例的load事件中定义的,也就是minute。

同样,直到minute元件转动完一周到达最后1帧,使用_root[target].nextFrame();命令将target所指目标后移1帧,这里的target是在minute影片剪辑实例的load事件中定义的,也就是hour。

由于影片剪辑的转动是由nextFrame命令实现的,所以在每个元件内部时间轴的最后1帧中添加了跳转到第1帧的语句,避免停止在最后1帧上。

上面的ActionScript主要有两种,一种是在影片剪辑内部时间轴上的帧脚本,另一种是在主时间轴中的影片剪辑脚本。

我们使用一个全局变量target记录影片剪辑实例名称,这个动作是在影片剪辑的事件处理函数中完成的,然后将这个全局变量应用到影片剪辑内部的帧脚本中。

从这里也可以看到,影片剪辑动作和影片剪辑内部的帧动作是可以进行通信的,全局变量在它们之间有效,但在两个影片剪辑之间就变得无效,所以我们可以在两个影片剪辑中同时使用target而互不影响。

怎样在FLASH按扭中控制元件的消失与出现

答复共1条

首先这个元件的类型需要是影片剪辑,并把实例命名为mymc,名字随便,因为以后要控制他.所以要命名.

然后搞个按钮进来.把按钮命名为mybtn.在点一下祯,在点动作,输入如下代码

vari=0;

this.mybtn.onPress=function(){if(i==0){this._parent.mymc._visible=false;

i=1;}else{this._parent.mymc._visible=true;i=0;}};

1

on(rollOver){this.m11._visible=true; (m11)/(m1)是影片实例}

on(rollOut){this.m11._visible=false;}

on(release){if(i1==0){this.m1._visible=true;  i1=1;}else{  this.m1._visible=false;  i1=0;}}

2

_root.m11._visible=false;

_root.m22._visible=false;

_root.m33._visible=false;

_root.m1._visible=false;

_root.m2._visible=false;

_root.m3._visible=false;

//这一段的意思是让所有的剪辑不可见

vari1=0;

vari2=0;

vari3=0;

on(release){this._visible=false;_parent.i1=0;}

在除了主窗体外的其他窗体中扑捉鼠标按键发生,如果一定时间没有事件发生,就触发定时器,回到主窗口.

回答:

20function  cursorstoptime:

integer;//得到无输入状态的时间,然后你就可以回到主窗口了  

var       linput:

tlastinputinfo;  

begin       linput.cbSize:

=sizeof(tlastinputinfo); getlastinputinfo(linput); 

     result:

=gettickcount()-linput.dwTime;  

end;

FLASH透明度放大及缩小高品质和低品质可见性

步骤;

1.打开FlashMX2004,新建文档,设置文档大小为300*300像素

2.新建一按钮,将按钮拖至舞台上,复制6份,共产生7个按钮实例,并将它们排列好。

3.用文字工具和线条工具在这些按钮上写上或画上相应符号。

4.导入或建立你需要观察的对象,可以是图片(矢量或位图)或视频,但应放在影片剪辑中,这里用瓢虫(ladybug)矢量图作观察对象,其实例名为ladybug。

5.选择透明度增大按钮,按F9键打开动作脚本编辑窗口,输入以下代码:

on(release){this.ladybug._alpha+=5;

if(this.ladybug._alpha>=100){this.ladybug._alpha=100;}}

6.回主场景,选择透明度减小按钮,按F9键打开动作脚本编辑窗口,输入以下代码:

on(release){this.ladybug._alpha-=5;

if(this.ladybug._alpha<=0){this.ladybug._alpha=0;}}

7.回主场景,选择放大按钮,按F9键打开动作脚本编辑窗口,输入以下代码:

on(release){this.ladybug._xscale+=5;this.ladybug._yscale+=5;}

8.回主场景,选择缩小按钮,按F9键打开动作脚本编辑窗口,输入以下代码:

on(release){this.ladybug._xscale-=5;this.ladybug._yscale-=5;}

9.回主场景,选择高品质按钮,按F9键打开动作脚本编辑窗口,输入以下代码:

on(release){this.ladybug._highquality=2;}

10.回主场景,选择低品质按钮,按F9键打开动作脚本编辑窗口,输入以下代码:

on(release){this.ladybug._highquality=0;}

可见性的设置稍微复杂一些,其步骤如下:

11.回主场景,选择可见性按钮,按F8键将其转换为电影剪辑(实质是将可见性按钮包含于此电影剪辑中),选择此电影剪辑,按F9键打开动作脚本编辑窗口,输入以下代码:

onClipEvent(load){w=true;}

注:

设置一变量w记录此按钮点击状态,w实际是此电影剪辑内时间轴变量,不能用var语法声明它,否则变为本地变量。

12.返回主场景,双击可见性电影剪辑,进入此电影剪辑,再选择可见性按钮,按F9键打开动作脚本编辑窗口,输入以下代码:

on(release){w=!

w;

if(w==true){_parent.ladybug._visible=true;}else{_parent.ladybug._visible=false;}}

至此,全部工作完成。

为网页添加放大或缩小文字

最近小弟看到这样的一个好东东,就是可以为我们的主页设置出一些可以放大或缩小的文字来,好东东不想独占还是拿出来吧!

代码如下:

--Begin

varspeed=20;

varcycledelay=1000;

varmaxsize=48;

varx=0;

vary=0;

varthemessage,size;

varesize="";

functioninitArray(){this.length=initArray.arguments.length;

for(vari=0;i

varthemessage2=newinitArray("免费软件随意传播","中国电脑教育报和资源站点",

"网站:

","请多多留意最新版");

if(navigator.appName=="Netscape")

document.write('
');

if(navigator.appVersion.indexOf("MSIE")!

=-1)

document.write('
');

functionupwords(){themessage=themessage2[y];

if(x

elsesetTimeout("downwords()",cycledelay);

if(navigator.appName=="Netscape"){size="";

document.wds.document.write(size+"

"+themessage+"
"+esize);

document.wds.document.close();}

if(navigator.appVersion.indexOf("MSIE")!

=-1){wds.innerHTML="

"+themessage+"
";wds.style.fontSize=x+'px'}}

functiondownwords(){if(x>1){x--;setTimeout("downwords()",speed);}

else{setTimeout("upwords()",cycledelay);y++;if(y>themessage2.length-1)y=0;}

if(navigator.appName=="Netscape"){size="";

document.wds.document.write(size+"

"+themessage+"
"+esize);

document.wds.document.close();}

if(navigator.appVersion.indexOf("MSIE")!

=-1){wds.innerHTML="

"+themessage+"
";wds.style.fontSize=x+'px'}}

setTimeout("upwords()",speed);//End-->

在放大缩小实体时,总是两边同时放大和缩小,如何固定一边,放大或缩小一边呢?

按工具面板的SnaptoObjects按钮,然后选择菜单Modify>Thansform>Edit>Center命令(注意,要先把此对象生成Graphic,或者MC),在实体中心出现空心的十字号后,用鼠标拖动这个十字,把它移动到需要固定不变的哪个边线上,接下来缩放另一边即可。

如果水平调宽和水平调高同时进行,那么把十字移动到需要固定的两个边线交汇的哪个角上。

ActionScript_图片放大缩小移动类-flash

   ActionScript_图片放大缩小移动类-flash-图片放大缩小移动类:

-----------------------class-------------------------

classZoomOpenMove{

  privatevarobj:

MovieClip;

  privatevarpos_scale:

Number;

  privatevarx_speed:

Number

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1