Flash课件中的场景转换
- 格式:doc
- 大小:588.50 KB
- 文档页数:5
Flash CS3 设置场景
在Flash 中构成动画的所有元素都被包含在场景中,所以场景在动画制作中是不可缺少的一部分。
当一段动画包含多个场景时,播放器会在播放完第一个场景后自动播放下一个场景的内容,直至播放完最后一个场景。
在默认情况下,Flash 中只有一个场景。
通过执行【窗口】|【其它面板】|【场景】命令(快捷键Shift +F2),可以查看场景个数,如图1-40所示。
图1-40 【场景】面板
如果创建第二个场景,只要单击【场景】面板底部的【添加场景】按钮,直接进入场景2,如图1-41所示。
显示
直接复
制场景 添加场景
图1-41 创建场景2
当Flash 中存在两个或者两个以上的场景时,就可以在不同的场景中创建或者编辑图像或者动画。
从一个场景切换到另外一个场景中的方法非常简单,只要单击【场景】面板中的场景名称,或者单击【编辑场景】按钮,选择场景选项即可,如图1-42所示。
要更改场景的名称时,在【场景】面板中双击场景名称,然后输入
新名称即可。
创建
单击
选择
单击
选择
单击图1-42 切换场景。
flash课件场景之间相互跳转的实现方法在制作fla sh动画的时候,可能会有有很的mc有时会把它放到几个场景中,那么在场景中的跳转如何实现呢?请看教程吧。
1.方法一:(使用tell targ...方法一:(使用tell targe t命令)按钮上的as为:on (releas e) {tellTa rget("/") {gotoAn dPlay ("场景 1", 1);}}2.方法二(用gotoa ndpla...方法二(用gotoa ndpla y命令)主场景2中的m c放到场景2的时间轴上按钮的as:onrelease{gotoAndPlay("场景1",1)}并且在最后一帧加sto p()问题就可以解决了:3.方法三(利用路径_r oot.g...方法三(利用路径_r oot.gotoan dplay())第二个场景2里面只有一个mc,在这个mc的最后一帧是stop和一个replay按钮按钮的as:_root.gotoAn dPlay(1)【即告知按钮回到场景1的第一帧】4.方法四(给场景起不同的名字) ...方法四(给场景起不同的名字)如果你的as这样写:第二个sence里面只有一个mc,在这个mc的最后一帧是stop和一个replay按钮按钮的as:onrelease{gotoAndPlay("sence1",1)}结果按下后却是从这个mc的第一帧开始播放,而不是从sence1的第一帧这是因为主场景的名字默认为sen ceNMC里也可以有多个场景,而mc也是默认为sen ceN所以当你在M C用上go toAnd Play("scene1", 1);时,指的是所在场景中MC里的第一帧,而不是主场景解决的方法,就是给场景定义不同的名字scene1我们改名为:主场景scene2我们改名为:次场景1正确的as应该为:on (releas e) {tellTa rget(_root) {gotoAn dPlay (1);}}如果想实现按钮点击后从次场景播放就可以在按钮上写上:on (releas e) {tellTa rget(_root.次场景) {gotoAn dPlay (1);}}5.方法五(利用标签la bel) ...方法五(利用标签la bel)我们在控制动画的时候一般也不是从开始播放,可能是希望从某个场景的某一个关键帧开始播放,那么标签是最好的实现方法;例如我们希望点击上面的按钮的时候让动画从主场景中的l a bel1开始播放,那么按钮上的a s应该为:on (releas e) {tellTa rget(_root) {gotoAn dPlay ("label1");}例如有3个场景,我们希望点击上面的按钮的时候让动画从次场景1中的la bel4开始播放,那么按钮上的a s应该为:on (releas e) {tellTa rget(_root) {gotoAn dPlay ("次场景 1", "label4");}}}}如果想实现按钮点击后从次场景播放就可以在按钮上写上:on (releas e) {tellTa rget(_root.次场景) {gotoAn dPlay (1);}}Flash课件常见问题解答(共108条)1. 论坛上常说的M C、FS、AS代表什么意思?MC=MovieClip(动画片断);FS=FSCOMM AND,是Flash的一个非常重要的一个命令集合;A S=Action Scrip t是Flas h的编程语言。
FLASH中场景及各帧之间的转换有以下几个代码:FLASH中场景及各帧之间的转换有以下几个代码:1.play() 播放当前动画.2.stop() 暂停播放动画.3gotoAndPlay([scene,] frame) 该动作意思为从某个帧开始播放动画,参数"scene"是设置开始播放帧所在场景,该参数可以省略,省略后则从当前场景播放指定帧,参数"frame"是指定播放的帧.例如想从当前场景第3帧开始播放,则动作为:gotoAndPlay(3);4.gotoAndStop[scene,] frame) 该动作意思为将播放头跳于某帧上并且停在该帧上.其具体参数与上一动作相同.5.nextFrame() 该动作功能为播放下一帧,并停在下一帧.没有参数.6.revFrame() 该动作功能为播放前一帧,并停在前一帧.也没有参数.7nextScene() 动画进入下一场景.没有参数.8.revScene() 动画进入前一场景.没有参数.以上便是FLASH中用于控制场景及帧之间转换的几个动作.下面回答你按钮问题:在影片中按钮的作用是为了让影片观看者能与影片发生互动,但是如果仅仅放一个按纽在影片中是什么作用也没有的,原因是按纽中什么动作也没有.当按纽被按下之后按纽本身不知道该做什么,这就是为什么要在按纽中添加动作的原因.按纽的动作在FLASH中是很多很多的,我这里不能穷举出来.比如上面告诉你的6个动作就可以做为按纽中的动作,用来控制影片的播放.按纽中的具体动作是作者本人写的,作者希望该按纽的功能如何,然后自己组织脚本将其写入按纽中,例如我想通过一个按钮来播放当前的动画,那么我就要在按钮中加如以下的代码:on(press){play();}代码中play()是具体动作,动作可替换为其他的,因功能不同而不同.另一个值得注意的东西是按钮事件处理函数就是以上代码中的"on(press)"地方,该函数是用来判断什么时候触发动作的,共有以下几种:on(press){} 当鼠标按下时触发on(release){} 当鼠标在剪辑上释放时触发on(releaseOutside){} 当用户在剪辑上点击鼠标,后将鼠标拖出剪辑,然后释放时触发on(dragOut){} 当用户在剪辑上点击鼠标,然后将鼠标拖出剪辑时触发on(dragOver){} 当用户在剪辑上点击鼠标,将鼠标移出剪辑,然后再将鼠标移回剪辑区域时触发on(rollOver){}未点击鼠标的情况下,鼠标滑过剪辑时触发on(rollOut){} 未点击鼠标情况下,鼠标滑过剪辑并移出剪辑时触发由以上来看上面我给的那个动作,意思就为,当我在该按钮上点击鼠标时,播放动画.以上是按钮中鼠标事件处理函数,另外还有键盘处理的函数……但是……怕写不下了-_-i如要制作一个简单的按钮我认为以上这些东西已经足够了.但是自FLASH MX2004后FLASH中又引入了另一种按钮,就是用影片剪辑来做的按钮,这种按钮做起来相对要复杂好多,但是做出的按钮也要漂亮很多,这是题外话,这里就不说了……。
flash中实现场景转换中的马赛克效果-电脑资料PowrePoint里面很常用的效果,我说不出名字,姑且叫"马赛克渐变"效果吧. 就是图片方格化退去,显出另一幅图画.另一幅图画过了一会儿又方格化退去,显示下一张.如此循环.大家可以看看我的源文件先.里面用了三幅图.这个效果很实用,.您可以用在LOGO上或企业的产品宣传上,简单美观.好了,闲话不说,介绍一下思路先.我们的思路是:场景里一共有四个MC.最下面一层用做相框,不会用到,我们设深度为0;中间两层是真正要显示的图画,分别设深度为1,2,我们用"上层","下层"来代表. 顶层是遮罩,也是方块效果的关键.我们设为3.既然遮罩层是关键,我们就先说它.这个做为遮罩的MC是用AS建的一个空MC,名儿为mcMask,在mcMask里复制了10*10个并排无隙的小方块,(当然,在实际的代码中可以看到,我把宽和长分开了的,所以实际上可以是长方形,这里只是为了叙述方便).我们的目的是让这些小方块被随机地清除,直到全部被清除掉,由于mcMask是上层图画的遮罩,故该图也就"方块化"地消失了,下层等长宽(我们把图设为等长宽,这些方便一点,也美观一点儿)的图画也就"方块化"地显现了. 当方块全部清除后,我们把下层的图画提高到上层,再复制另一幅图画到下层,做一次循环.这就达到一种周而复始的效果.思路就是这样的,如果你还有些疑惑,别急,先看一下效果,。
下面我讲讲代码的编写您就明白了.主场景中共有三帧代码.第一帧是对一些对象和变量初始化:_global.k = 2;//决定图画的复制._global.xpos = 135;//决定图画的横坐标._global.ypos = 135;//决定图画的横坐标.attachMovie("mc"+3, "mc"+3, 2);//复制初始状态下上层的图画.(希望"上层"这个词您不会产生歧义)with (eval("mc"+3)) {_x = xpos;_y = ypos;}attachMovie("border", "border", 0);//复制相框.放在底层.with (border) {_x = xpos;_y = ypos;}_root.createEmptyMovieClip("mcMask", 3);//生成遮罩层,下一帧我们将在里面复制小方块.with (mcMask) {_x = xpos;_y = ypos;}eval("mc3").setMask(mcMask);//初始状态下的设定遮罩,注意被遮罩的对象._global.xW = (eval("mc"+3)._width)/10;//确定小方块的长._global.yH = (eval("mc"+3)._height)/10;//确定小方块的高.上的面全局全量在下一帧都会有更详细说明.可以看到,我们声明了一些全局变量和MC.如果您对它们的用途有疑问, 不用担心,呆会儿我们就会讲到.第二帧代码:attachMovie("mc"+k, "mc"+k, 1);//复制下层的MC.with (eval("mc"+k)) {_x = xpos;_y = ypos;}for (i=0; i<100; i++) {//在mcMask,也就是遮罩层里复制小方块.mcMask.attachMovie("mcM", "mcM"+i, i);with (mcMask["mcM"+i]) {_width = xW;_height = yH;_x = (i%10-4.5)*xW;//如此决定的坐标值,小方块集合的几何中心就是mcMask的中心点._y = (Math.floor(i/10)-4.5)*yH;}}_global.randomKdiffer = function(n, m, k) {//随机函数,目的是在n~m之间生成k个互异的数,放到数组arrayK中.arrayK = [];var i = 0;while (ia = random(m-n+1)+n; for (var j = 0; jif (a == arrayK[j]) {break;}} if (j == i) {arrayK[i] = a;i++;} }return arrayK;};function maskT() {//主要的函数.在第三帧里面会用setInterval 调用.var a = [];a = randomKdiffer(0, 99, 10);//找到十个随机数,为的是下一步清除对应的小方块.for (var i = 0; i<10; i++) {//一次性清除十个随机的方块,mcMask["mcM"+a[i]].removeMovieClip();}for (j=0; j<100; j++) {//判断小方块是否全被清除.if (_root.mcMask["mcM"+j] != undefined) {break;}}if (j>=100) {//如果全被清除,则重新定义对象和变量值.clearInterval(_root.maskMc);//把清除时间间隔变量(在下一帧中)._root["mc"+k].swapDepths(2);//重新把下层的MC深度提到上层.k--;//控制MC复制的k值减少1,表示再一次复制的时候就复制后一个MC.if (k<1) {//如果k值小于1,就从3开始重新循环.并重新把下层的MC(已提高到上层)定义为被遮罩层.k = 3;eval("mc"+1).setMask(mcMask);} else {eval("mc"+(k+1)).setMask(mcMask);}_root.gotoAndPlay(2);//跳到第二帧重新执行.}}这一帧主要是先定义下层的MC,因为上一层的MC在前一次循环时已经定义过了(初始化由第一帧代码完成),并且在最后(当小方块全消失时,原来的上层已经不可见,这时下层提升到上层,外观上看不出来)提升到上层且被定义为被遮罩.遮罩层的小方块可以看到又重新生成了,所以我拉看到的仍是前一次循环的下层图画.再经历一次循环,利用k值的循环递减,我们可以不断地复制下层的图画,达到周而复始的效果.只要理解了k的作用,其它的也就好懂了.注意第二帧我们复制的深度是1,代表下层.到了小方块全部清除时才提升到2.第三帧就是让时间头停下,间隔0.2秒执行maskT函数.因为一次清除十个 MC(这里有重复也不用担心).所以看起来就是方块随机消失,而消失完后,又返回第二帧开始新的一轮.这一帧是循环的保障.其它的几个全局变量是为了更好地控制图片的位置和尺寸的. 我们可以更改图片的尺寸而不需要改代码. 不过有一点要注意,各图片最好是一样大小.不过,就代码的特点来看,我们也可以把图片设为不同的尺寸,只要稍微改动一下就行了.这里就留给大家自己思考了.如果要加入更多的图片,只要把链接名称命名为"mc"+i(i=1,2,3...)就行了,相应地修改k的循环判断值.。
使用Flash软件制作多场景课件的几种方法作者:程鸿仁来源:《新课程·教育学术》2010年第10期在中小学教学中,教师上课采用的课件大部分是用PowerPoint制作的,而采用Flash软件制作的相对较少,原因是老师不知如何合理设计,特别是对于多场景课件的制作没有掌握科学的方法和流程。
本文结合自己制作课件的体会谈谈制作课件的几种方法。
一、场景跳转法基本思路是把课件分成若干模块,每个模块对应一个场景,然后用代码实现各场景间的跳转。
假设课件有四个模块,分别是导入、讲解、练习、小结。
具体实现步骤如下:1.首先新建Flash影片。
2.制作4个按钮元件,分别命名为导入、讲解、练习、小结。
以制作“导入按钮元件”为例具体制作方法是:(1)打开“插入”下的“新建”,类型选为按钮,按“确定”;(2)进入编辑状态,在第一帧用工具箱的文字工具输入“导入”,在第二帧用矩形工具绘制一个矩形。
其他三个按钮采用复制的方法即可,文字分别替换为相应的文字。
3.增加场景,打开“窗口”菜单,在设计面版中选择“场景”,增加4个场景,分别把场景命名为导入、讲解、练习、小结。
4.制作背景和标题,在图层1上增加一个图层,命名为“背景和标题”,用文本工具输入课件的标题,背景可使用导入命令导入图片或自己制作。
在“背景和标题”层上新增图层,命名为按钮。
从库中把刚做好的按钮拖放到舞台下方排列好。
5.在按钮中写入代码,选中第1个按钮,打开动作窗口,输入以下代码:on(release){gotoAndStop(“导入”,1);//当单击并释放按钮时,跳转到导入场景的第1帧停止。
}其余3个按钮上写入如上代码。
如讲解按钮:on(release) {gotoAndStop(“讲解”,1);}6.在某个分场景中添加1个返回到主场景的按钮,并添加如下代码:on(release) {gotoAndStop(“主场景”,1);}7.按ctrl+enter键测试。
Flashcs6怎么制作点击⽬录按钮切换场景的效果?多场景的切换不仅可以使⽤代码⾃动切换,也可以使⽤按钮进⾏互动切换,flash怎么实现点击按钮让场景进⾏切换呢?下⾯我们就来看看详细的教程。
adobe Flash CS6简体中⽂版(专业动画软件) v12.0.0.481 绿⾊精简版类型:动画制作⼤⼩:176MB语⾔:简体中⽂时间:2018-11-12查看详情1、这⾥⽤的FLASH CS6,打开软件,新建AS3⽂档2、默认只有⼀个场景13、在这个场景中制作⼀段动画4、接着在舞台上制作⼀个按钮5、设置按钮实例名为btn06、因为是AS3只能在时间轴加代码如下:import flash.events.MouseEvent;btn0.addEventListener(MouseEvent.CLICK,ChangeToSence2);function ChangeToSence2(e:MouseEvent):void{this.gotoAndPlay(1,"场景 2");}//注意场景名中的空格7、这时如果操作因为还没创建场景2,所以会报错,现在添加场景2,依次选择菜单--插⼊--场景,即可创建场景28、创建场景2后会⾃动进⾏场景2的舞台9、同样,制作⼀段动画,并添加⼀个按钮放到舞台上10、设置按钮的实例名为btn1,这⾥需要注意的是即使是不同的场景,也不要使⽤相同的实例名11、在时间轴加如下代码:import flash.events.MouseEvent;btn1.addEventListener(MouseEvent.CLICK,ChangeToSence1);function ChangeToSence1(e:MouseEvent):void{this.gotoAndPlay(1,"场景 1");}12、在有些版本中,场景之间的切换是⾃动的,需要在最后⼀帧加代码限制⾃动跳转。
Flash课件中的场景转换
1.新建一个flash文档,保存为“场景转换”。
2.在文档场景1中建立三个图层,分别命名为:动画、按钮、动作,如图A。
图A
3.在动画层中制作一个简单的动画,在按钮层中插入一个向下的按钮,并把按钮的命名为xiangxia_btn。
如图B。
图B 4.在动作层中输入一段代码:
xiangxia_btn.onRelease = function() {
next Scene ();
};如图C:
图C
5.插入一个场景,在场景2中建立三个图层,分别命名为:动画、按钮、动作,如图D。
图D
6.在动画层中作一个简单的动画,在按钮中插入一个向上的按钮,并把按钮的命名为xiangshang_btn,如图E。
图E 7.在动作层中输入一段代码:
xiangshang_btn.onRelease = function() {
PrevScene ();
};
如图F。
图F
在利用Flash制作多媒体课件时,只要你认真思考,大胆想象,多看一些实例教程,我相信每位老师都能成为制作课件的高手。
Flash制作动画时的一些常用命令Flash制作动画时的一些常用命令一、转换查看对象Goto:转移到,它是控制当前舞台上显示哪一个场景。
在它的子菜单中有First(第一个)、Previous(前一个)、Next(下一个)、Last(最后一个)等选项。
当一动画中包含的场景数大于1时,这些命令会根据情况生效或灰化。
另外在这些命令下面显示的是各场景名称,当然我们也可以选择这些场景名来选择当前场景。
还有一点我要补充说明的`是,如何增加或减少场景。
利用“Modify”/“Scene”,打开Scene对话框,点击对话框下面的三个按钮,分别可以进行复制当前场景、增加一个新场景、删除当前场景的操作。
二、调节场景显示比例Zoom In:快捷键(Ctrl+=),放大显示工作区。
Zoom Out:快捷键(Ctrl+-),缩小显示工作区。
Magnification:使用百分比来显示工作区。
他还有25%、50%、100%、200%、400%、800%、Show Frame、Show All等选项。
我们常用100%、Show Frame和Show All。
三、选择查看方式Outlines:快捷键(Ctrl+Shift+Alt+O),显示轮廓;Fast:快捷键(Ctrl+Shift+Alt+F),快速显示;Antialias:快捷键(Ctrl+Shift+Alt+A),反锯齿显示;Antialias Text:快捷键(Ctrl+Shift+Alt+T),反锯齿文字显示。
上面四个选项在实现的运用过程很少使用到,Antialias Text是默认值,他主要控制场景中的内容按什么方式显示。
四、关闭和重组面板Timeline:快捷键(Ctrl+Alt+T),显示时间轴;Work Area:快捷键(Ctrl+Shift+W),显示工作区;Rulers:快捷键(Ctrl+Shift+Alt+R),显示标尺;Grid:显示栅格,还包括Show Grid、Snap to Grid和Edit Grid 几个选项,分别表示显示栅格、按栅格捕捉目标、编辑栅格。
FLASH转场设计第1讲制作淡入动画所谓转场效果,简单来说就是从一个场景(或画面)切换到另一场景(或画面)时,两者重叠期间用来过渡的动画效果。
我们最常见的转场效果一般出现在后期剪辑过的婚庆录像片,或者开会时演讲者使用的PPT 幻灯片中,比如马赛克、百叶窗、淡入/ 淡出等等。
1. 执行菜单“文件> 导入> 导入到库”导入两张荷花的图片到库中。
两张位图的大小已在Photoshop 中处理为550X400px 的尺寸,这也是Flash 默认舞台的大小。
2. 按下Ctrl+L 调出“库”面板,将图片“荷花1”拖入舞台。
调出“属性”面板,将其X、Y 轴的坐标均设为“0”,也就是说该图片与舞台大小、位置相同,如图1-1-1 所示。
图1-1-13. 选择图片“荷花1”,按下F8 键将其转换为元件。
名称为“荷花01”,类型为“图形”,如图1-1-2 所示。
图1-1-24. 将当前层同样命名为“荷花1”,在第20 帧按下F6 插入一个关键帧。
选择第1 帧,调出“属性”面板,在颜色下拉列表中选择Alpha,将其值设为“0%”,如图1-1-3 所示。
图1-1-35. 打在第1 帧到第19 帧中的任意一帧上单击鼠标右键,在弹出的快捷菜单中选择“创建补间动画”。
在第50 帧按下F5 插入一个普通帧用来延续画面停留的时间,如图1-1-4 所示。
图1-1-4第2讲多级元件嵌套使用多级元件嵌套的结构可以制作出变化更加丰富的动画,另一方面修改起来也相当灵活,各元素的可控性和可复用性也加强了。
1. 新建名为“荷花2”的层,在该层第20 帧按下F6 插入一个关键帧。
按下Ctrl+L 把库中的“荷花2”图片拖入,在“属性”面板设其X、Y 坐标均为“0”。
再新建名为“荷花2 遮罩”层,在第20 帧按下F6 插入一个关键帧,如图1-2-1 所示。
图1-2-12. 在“荷花2 遮罩”层第20 帧绘制一个任意颜色的矩形,调出“属性”面板,宽和高均设为“50”,X、Y 坐标均设为“0”,如图1-2-2 所示:图1-2-23. 选择该正方形,开始进行元件的嵌套,分解步骤如下:第一次按下F8 键将其转换为元件,命名为“方1”,类型为“图形”。
Flash课件的单场景内帧的跳转法与多场景的跳转法
陈敏;裴云
【期刊名称】《科技信息》
【年(卷),期】2011(000)004
【摘要】相对PowerPoint制作的课件而言,Flash课件具有直观、互动强以及趣味、体积小、可移植性好等诸多优点.Flash课件能够有效地调动学生的学习积极性,激发学生的学习乐趣.因此,在当前的教学过程中Flash课件的需求越来越大.但目前,在教学中,教师上课采用的课件大部分仍是用PowerPoint制作的,而采用Flash软件制作的相对较少,原因是老师不知如何设计,他们缺少对Flash课件制作科学的方法.为了使更多的老师能够轻松制作出实用的课件,本文结合自己制作课件的体会谈谈使用Flash制作课件的两种方法,希望对老师们有所帮助.
【总页数】2页(P234-235)
【作者】陈敏;裴云
【作者单位】海南软件职业技术学院;海南软件职业技术学院
【正文语种】中文
【相关文献】
1.Flash课件的单场景内帧的跳转法与多场景的跳转法
2.跳(仓下转法第2施03页)工控制大型枢纽站承轨层收缩开裂可行性研究
3.男子单跳形势喜人——2003年全国蹦床锦标赛男子单跳比赛调研报告
4.无线单跳场景下基于网络编码的新型传输模型
5.多跳场景下ECMA-368重叠信标期融合算法的研究与改进
因版权原因,仅展示原文概要,查看原文内容请购买。
flash图片切换效果:Flash 图片轮换效果疯狂代码 / ĵ:http://Flash/Article59249.html 这里图片轮换效果跟新浪那种不太样整个代码都是笔者自己写而且后来下了源码发现里头做法跟笔者也不尽相同它那里基本上是用Interval控制转换特效很多是用纯AS写出来而笔者做那个基本上是时间轴控制特效也不是纯AS从规范标准和运行效率来说新浪那个更接近规范标准语言运行效率更高从制作方便性和直观性来说笔者那个制作起来更为方便更为直观对于不是员出身Flasher来说笔者这个更好理解 考虑到AS也趋向于规范标准性笔者前段时间也用纯AS2.0类把这个轮换效果写成了组件但是笔者多类编程思想还不很了解导致贻笑大方故本篇文章就先介绍笔者这个时间轴版轮换效果制作过程整个流程: 1、 该图像列表是读XML故第步先读取并分析XML把相关信息存于里头该分析是时间轴第部分 2、 分析到XML以后根据图像源把所有图片先载入到swf在图片切换过程中不允许有图像消失现象或者延迟现象出现图片是通过用遮罩效果把新张覆盖掉旧张来 实现切换因此需要有 3个图层:个放旧图片个放新图片其中新图片被遮罩为了不让切换时图像有不可见现象或者出现延迟加载时放旧图片和放新图片MC里头都要先载入所有图像然后通过设置可见性来显示相应图像 这是时间轴第 2部分 3、 然后将有比较长段时间轴这个其实就是图片轮换延迟时间 4、 此时就要进入下轮切换了这里可以通过attachMovie或者duplicateMovieClip放入个载入所有图MC但可惜是这么做需要重新loadMovie故不可取或者通过交换深度来实现不过每次交换深度也很麻烦要重新设置遮罩在这里笔者将利用人眼睛错觉来方便实现这过程 具体做法如下: 这切换过程完成了个周期结束 5 、接下来讲述随机效果实现: 如果在mask里就个单效果切换时间轴动画那么每次轮换效果将都是样这里笔者提供两种随机效果实现思路方法: A 把遮罩做成个MC时间轴如下: 点击放大 其中无标签空白关键帧均输入代码:stop_parent.play; 在遮罩效果时候用个随机数来控制使用何种特效:mask.gotoAndPlay("效果"+(random(3)+1)) 笔者不推荐使用该法把所有效果放在同时间轴里容易乱而且不知道是不是Flash有BUGMCgotoAndPlay如果使用帧标签容易出错使用帧号话将很麻烦要手动把关键帧标签所在帧号(26,47,65)放在个里面旦效果增加或者改变很大又要手动修改 笔者推荐使用办法是: 每个效果都放在个MC里头单独控制在效果结束后运行stop;_parent._parent.play; 6、 按钮切换实现: 切换过程中显示哪个图片可以在主时间轴通过个变量来控制有两个图片所以就需要两个变量笔者定义为lastIndex和thisIndex 如果没有按钮控制图片轮换是以图片顺序为根据根据上述错觉显示法在将要切换时候运行 lastIndex=thisIndex thisIndex1 对于thisIndex如果超过了图片信息下标则需要进行判断这将在介绍具体做法时候提到 如果换作了按钮则thisIndex不是加1而是换成按钮所传过去变量而lastIndex=thisIndex这个把新图片放到旧图片操作不变具体做法: 0.1、准备好外部文件:在你硬盘里新建个文件夹里头放入个图像列表文件list.xml使用如下格式<?xml version="1.0" encoding="GB2312"?><images><i s="images/v82008.jpg"a="images_abbr/v82008.jpg">未被直播超女复活赛</i><i s="images/060820110116v82009.jpg"a="images_abbr/060820110116v82009.jpg">吃“最便宜盒饭”</i><is="images/060820110131v82010.jpg" a="images_abbr/060820110131v82010.jpg">本报记者亲历长沙“超级女声”台前幕后</i></images> 根据这里路径放置图像文件PS:这样写法其实名称不好看明白但当初笔者考虑传输时间就在变量这里对xml文件做了压缩 0.2 、新建个Flash文档大小定为300*225(参考)保存为picsExchange.fla位置跟list.xml在同目录 1.1、 开始进入读取分析XML工作并把所有信息存放于里头这里笔者创建了 3个:descriptionsimgabbrsimgs 1.2 、在第帧里加上代码:stop; //是时间轴版所以需要先停止播放等xml读取和分析完成以后才可以进入时间轴第 2段.useCodepage=true //防止中文乱码var imgList:XML= XML //创建读取xml对象imgList.load("list.xml") //读取list.xml文件var descriptions:Arrayvar imgabbrs:Arrayvar imgs:Array //定义 3个用于存放图像信息var imgsNum:Number=0; //放置图片数目变量imgList.onLoad=function(success){ imgList.ignoreWhite=true (success){ descriptions= Array imgabbrs= Array imgs= Array //该步用于化在重新读取时候把里内容清空 imgsNum=imgList.childNodes[0].childNodes.length for(var i in imgList.childNodes[0].childNodes){ var imgNode:XMLNode=imgList.childNodes[0].childNodes[i] descriptions[i]=imgNode.childNodes[0].nodeValue //这是图片文字描述 trace("description:"+descriptions[i]) imgabbrs[i]=imgNode.attributes.a //这是缩略图路径 trace("imgabbr:"+imgabbrs[i]) imgs[i]=imgNode.attributes.s //这是源图路径 trace("img:"+imgs[i]) } play; //分析完毕可以让时间轴播放 }{ trace("loading error!") }} 1.3、 确定所有内容正确输出以后就可以进入加载图片操作 2.1、 按照下图创建 3个图层 其中动作脚本层就是1.2中输入代码图层 2.2 、在旧图片图层里新建个MC命名为loadPic例子名为lastPic并让该MC注册点放在主场景左上方然后双击进入该MC在里头再创建个MC元件名称和例子名均为graph 2.3 这里我们将通过复制graph载入列表中所有图像名称将按graph0graph1规则来命名因此在这里帧先定义个设置图像可见性function Image(imgIndex){ for(var i in _parent.imgabbrs){ this["graph"+i]._visible=false }//先把所有图片隐藏 this["graph"+imgIndex]._visible=true //把需要显示图像重新显示出来} 然后把loadPic这MC复制个到新图片所在图层例子名为thisPic并让两个loadPic重合 3.1、 到显示图片了先在第 3帧里化下thisIndex和lastIndex值这两个值分别控制两个图片容器显示哪个图片 第 3帧代码:var thisIndex:Number=0var lastIndex:Number=-1 其实是开始没有旧图片所以lastPic里头实际上是不显示任何图片正如此这代码只运行次就把它单独放到第 3帧了 第 4帧就正式显示图片了而且每次切换都要重新次:thisPic._visible=true;lastPic._visible=true;thisPic.Image(thisIndex);lastPic.Image(lastIndex);// Image刚在是loadPic里头写好控制里第几张图片显示 3.2 、进入图片停止状态加段比较长时间轴笔者加到第42帧并在42帧里加入代码:lastIndex=thisIndex //让下次新图片放到旧图片位置thisIndex=(thisIndex+1)%imgabbrs.length //显示下张图片%运算让图片显示最后张后可以回到第张 3.3、 在44帧里添加帧代码:gotoAndPlay(4); 个切换周期完成 此时运行影片如果图像列表和图片都没有话图像就会轮着显示但是现在效果很生硬是还没有遮罩动画做过渡 4.1、要添加遮罩了在遮罩图层第帧里创建个mc元件名和例子名均为mask接着在里头添加这么段形状补间动画: 其中时间轴上首尾两帧均加上:stop; 主时间轴第 4帧追加:mask.gotoAndPlay(2); 此时运行效果就不再生硬了是个简单遮罩动画切换效果 但是为了更方便地实现随机效果这种刚才笔者不推荐做法就不再用了刚才只是为了方便大家测试效果而已 5.1、 把时间轴改成下图设置: 动作脚本中每帧都是写:stop;mask.gotoAndPlay(2); 而遮罩mc这图层区别帧都放置些跟刚才形状补间类似MC动画例子名均为mask最好动画开头都不跟图片容器有接触结尾则把整个图片容器覆盖达到遮罩显示新图片效果 然后主场景第 4帧控制mask代码也要跟着改变把mask.gotoAndPlay(2);改为mask.gotoAndStop(1+random(mask._totalframes-1))于是每次切换mask就会跳转到区别帧 5.2 、修复个Bug: 笔者以为已经成功时候测试才发现有些时候还是不能自然过渡直以为是动画效果问题调来调去还是不行好不容易地笔者通过输出每次跳转帧才知道原来当两次跳转位置样时候遮罩动画动不起来没有发生帧跳转为此笔者想到了用如下思路方法调整: 把随机跳转代码转移到mask里头在mask里添加最后帧其中在遮罩MC图层里随便放入些图形但是不要跟图片容器重叠该帧动作脚本图层添加代码:gotoAndStop(random(_totalframes-1)+1)跳转到除最后帧任帧里头运行遮罩动画效果然后主时间轴第 4帧中最后句也相应地改为mask.gotoAndStop(mask._totalframes)让mask先跳转到最后帧再随机播放效果这样哪怕两次随机值样帧也会发生跳转过渡动画定可以播放成功 这里需要介绍说明点是如果你在2.2步创建graph元件不是矩形或者Alpha不等于100话那么当图形比例问题而不占满整个graph时候旧图片将有可能新图片面积小而不会被完全覆盖在下次轮换时候就会看到很生硬图片消失效果所以笔者建议大家graph元件最好是个全不透明矩形 至此自动过渡播放效果已经实现了下面就是按钮控制实现 6.1 按钮功能实现: 如果要添加按钮功能首先就得添加按钮这个道理连小学生都明白然而it's easier said than done具体如何创建按钮就不是那么简单了图像数目是不确定因此需要动态创建 创建按钮其实只需要在载入全部图像进入第轮显示时候创建次就可以了因此可以把该段创建按钮代码放在第 3帧为了让美工高手能有发挥自己才华机会笔者在这里就不用代码写按钮了而是先在库里手动创建个接着通过attachMovie载入 为了让按钮深度更好管理笔者建议大家把所有按钮载入到个mc里头于是在遮罩层上面新建个图层命名为按钮然后放置个空mc元件名和例子名均为button_Field位置根据你个人喜好而定 接着在第 3帧追加代码:for (var i in imgabbrs) { var btn:MovieClip = button_Field.attachMovie("button", "button"+i, i);//从库里载入button元件创建思路方法在后面介绍 btn._x = i*btn._width; btn._y = 0;//这两句让按钮横向排列 btn.index=Number(i)+1;//给按钮定义个属性这个属性表示第几张图片将在个动态文本里显示} 6.2 按钮到现在还没创建所以大家可能不明白上面代码有些到底是用来干啥 现在笔者就给大家讲述如何先创建个按钮 在库里右键—新建元件命名为button类型为mc打开“高级”对话框点中“为动作脚本导出”和“在第帧导出” 在该元件里创建两个图层 其中按钮图层放个按钮添加代码:on(release){ _parent._stIndex=_parent._parent.thisIndex //让新图片放到旧图片所在地方 _parent._parent.thisIndex=(index-1) //获得新图片索引 _parent._parent.gotoAndPlay(43) //跳转到43帧从而跳过42帧自动切换代码} 文字图层放动态文本变量名为index 现在测试下基本效果就出来了但是还有个小Bug就是当图片切换效果动画还没完成时候马上切换下个图动画效果过渡就不自然解决办法有两个第个很简单就是把44帧代码拖后点但是不能从根本上解决问题第 2个办法相对复杂将在下帖再作介绍 6.3 从根本上解决上述小Bug: 新浪新闻图片轮换里如果遮罩效果运行时候点了别图片话Flash会等效果运行结束就马上切换到所点到图像因此在这里我们应该让控制主时间轴帧跳转代码gotoAndPlay(43)放在效果运行结束以后 那么效果运行结束的后如何知道的前点了按钮呢?这个很好处理只要设个布尔变量havePressed=true就可以了动画效果结束以后检查havePressed值就可以了因此我们还需要在开始切换图片时候要让havePressed变回false否则即使下次不点按钮也会在遮罩效果结束后马上切换到下图 但是这样又会有新问题如果在遮罩效果运行结束后已经检查了havePressed再点切换按钮话检查havePressed操作就不能再在点击按钮时进行导致立即切换图片操作失败 由此可见效果运行时和效果运行结束两种状态需要分别处理故还需要定义个布尔变量存放当前效果运行状态是运行时还是运行结束在遮罩效果开始时设置running=true运行结束让running=false 于是要修改代码地方就比较多了 首先按钮代码需要改为:on (release) { _parent._stIndex = _parent._parent.thisIndex; //让新图片放到旧图片所在地方 _parent._parent.thisIndex = (index-1); //获得新图片索引 (_parent._parent.running) { //如果遮罩效果正在运行 _parent._parent.havePressed = true; //主时间轴不能直接跳转而要等到效果运行结束后检查到havePressed=true时才可以 } { _parent._parent.gotoAndPlay(43); //跳转到43帧从而跳过42帧自动切换代码 }} 主时间轴第 3帧声明两个布尔变量:var running:Boolean;var havePressed:Boolean; 主时间轴第 4帧为切换周期开始遮罩效果处于运行时状态而还没点击过按钮故追加:running=true;havePressed=false; 的后在每个遮罩动画效果运行结束后要让running=false运行已经结束并且检测是否在效果运行这段时间内点过按钮因此都追加代码:_parent._parent.running=false;//running是在主场景里声明故需要指向于主场景(_parent._parent.havePressed){//假如在效果运行时点了按钮根据按钮代码该值定为true否则就是false _parent._parent.gotoAndPlay(43);//检查到点过话就在效果运行结束这刻马上切换图片} 至此整个图片轮换效果完成了但是大家也许会提问为什么那些很眩百叶窗效果丰富多彩形状变化还没做出来啊?其实那些都是在遮罩mc里做笔者在这里只拿了个最简单效果作为例子大家完全可以根据自己需要把那里效果换成自己想要效果2009-1-23 2:07:40疯狂代码 /。
Flash课件中的场景转换
1.新建一个flash文档,保存为“场景转换”。
2.在文档场景1中建立三个图层,分别命名为:动画、按钮、动作,如图A。
图A
3.在动画层中制作一个简单的动画,在按钮层中插入一个向下的按钮,并把按钮的命名为xiangxia_btn。
如图B。
图B 4.在动作层中输入一段代码:
xiangxia_btn.onRelease = function() {
next Scene ();
};如图C:
图C
5.插入一个场景,在场景2中建立三个图层,分别命名为:动画、按钮、动作,如图D。
图D
6.在动画层中作一个简单的动画,在按钮中插入一个向上的按钮,并把按钮的命名为xiangshang_btn,如图E。
图E 7.在动作层中输入一段代码:
xiangshang_btn.onRelease = function() {
PrevScene ();
};
如图F。
图F
在利用Flash制作多媒体课件时,只要你认真思考,大胆想象,多看一些实例教程,我相信每位老师都能成为制作课件的高手。