flash课件特效之雪花飘飘
下雨下雪是课件常常要表现的情景,这里搜集整理了几例下雪特效,以AS3.0代码重新编写,作为备用: 一、雪花徐徐飘落 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ 1.新建一个flash文档,舞台大小800*600,背景为黑。 2.插入一个元件,类型为影片剪辑,元件名为snow,确定后进入元件编辑状态。 3.打开颜面板,使用放射状态填充类型,白,圆心部分透明度为100%,边缘部分透明度为0%,产生渐变效果。 4.在中央位置画个圆,圆心与“+”对齐,将图形高度、宽度设为5像素。 5.在库中到刚做好的元件snow,右击,在弹出地菜单中选择“链接”。 钩选“为ActionScript导出”、“在第一帧导出”两个选项,在“类”名为“snow”(默认会以元件名为名,所以不用输入) 基类名保持不变。 6.返回主场景,在第一帧加入代码: var nWidth:uint = stage.stageWidth; var nHeight:uint = stage.stageHeight; var snowflakes:uint = 100; //雪花数量,根据舞台的需要来定 var max_snowsize:uint = 20; //同上 init(); function init() { for (var i:uint = 0; i < snowflakes; i++) { var _snow:snow = new snow(); addChild(_snow); _snow.alpha = 0.2 + Math.random() * 0.6; _snow.x = nWidth / -2 + Math.random() * 1.5 * nWidth; _snow.y = nHeight / -2 + Math.random() * 1.5 * nHeight; _snow.scaleX = _snow.scaleY = 0.5 + Math.random() * max_snowsize / 10; _snow.k = Math.random() * 2 + 1; _snow.wind = -1.5 + Math.random() * 1.4 * 3; _snow.addEventListener(Event.ENTER_FRAME,mover); } } function mover(evt:Event) { evt.target.y += evt.target.k; evt.target.x += evt.target.wind; if (evt.target.y > nHeight + 10) { evt.target.y = -20; } if (evt.target.x > nWidth + 20) { evt.target.x = nWidth / -2 + Math.random() * 1.5 * nWidth; evt.target.y = -20; } else if (evt.target.x < -20) { evt.target.x = nWidth / -2 + Math.random() * 1.5 * nWidth; evt.target.y = -20; } } 二、雪花风中狂舞 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ (一)新建雪花图形 1.新建一个flash文档,舞台大小640*480,背景为黑。 2.插入一个元件,类型为图形,元件名任意,确定后进入元件编辑状态。 3.画一个圆,填充为白,将图形高度、宽度设为6像素,圆心与“+”对齐。 (二)制作雪花飘落引导线动画 1.插入一个元件,类型为影片剪辑,元件名称为XueHua ,确定后进入元件编辑状态。 2.在第一帧,将上一步完成的雪花图形元件拖入到场内,在第60帧处插入关键帧,并在1到60帧之间创建补间动画。 3.新建一个引导层,从中间“十”字形处开始,向下画一条蛇形引导线,引导线总高度400像素左右。 4.在第1帧和第60帧上,将雪花图形分别对齐到引导线的起点和终点上,测试一下,使雪花能沿着蛇形引导线向下播放,有雪花左 右飘悠的感觉。 5.在库中到刚做好的动画元件snow,右击,在弹出地菜单中选择“链接”。 钩选“为ActionScript导出”、“在第一帧导出”两个选项,在“类(C)”中输入“XueHua”,基类名自动生成不变。 (三)在主场景第一帧上输入代码 var xuehuaNum:uint = 300; //雪花数量,根据舞台的需要来定 var timer:Timer = new Timer(30,xuehuaNum); timer.addEventListener("timer",timerHandler); timer.start(); function timerHandler(evt:Event) { var _xuehua:XueHua = new XueHua(); addChild(_xuehua); _xuehua.x = Math.random() * stage.stageWidth; _xuehua.y = Math.random() * 100; _ation = Math.random() * 150 - 90; _xuehua.scaleX = Math.random() * 0.4 + 0.7; _xuehua.scaleY = Math.random() * 0.4 + 0.7; _xuehua.alpha = Math.random() * 0.3 + 0.7; } 三、雪花倾泄而下 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ (一)snow元件: 1.新建一个flash文档,舞台大小640*480,背景为黑。 2.插入一个元件,类型为影片剪辑,元件名snow,确定后进入元件编辑状态。 3.画一个圆,填充为白,将图形高度、宽度设为1像素,圆心与“+”对齐,由于较小可在放大视图下操作。 4.画完圆后,打开动作面板,在第一帧上添加如下代码。 一般为了规范,不要在圆形所在的帧上加代码,应该在上方添加一层,然后添加代码,把代码和图形层分开两层。 本例与之前其他案例不同之处,就是元件中也添加了代码。 var Parent:Object = this.parent; var speed = Parent.randRange(2, 7); this.width = Parent.randRange(3, 5); this.height = this.width; this.x = Parent.randRange(-100, Parent.mw + 100); this.y = Parent.randRange(0, -20); this.alpha = Math.random() * 0.6 + 0.5; this.addEventListener(Event.ENTER_FRAME,onEnterEvent); function onEnterEvent(evt:Event) { if (evt.target.y > Parent.mh) { Parent.kar_adedi--; html特效代码雨代码veEventListener(Event.ENTER_FRAME,onEnterEvent); evt.target.visible = false; return; } evt.target.y += speed; evt.target.x += Parent.interval; evt.target.alpha -= 0.005; if (evt.target.alpha<=0) {evt.target.visible = false;} } 5.在库中到刚做好的元件snow,右击,在弹出地菜单中选择“链接”。 钩选“为ActionScript导出”、“在第一帧导出”两个选项,在“类”名为“snow”,基类默认保持不变。 (二)主场景添加代码: 完成snow元件后,返回到主场景,第一帧添加代码: var mw = stage.stageWidth; var mh = stage.stageHeight; var kar_adedi:uint = 0; var interval:Number = 2;//倾斜度,0为直下,负数向左,正数向右 var totalSnow:uint = 500;//雪花数量 var countSnow:uint; var intID = setInterval (loadSnow, 60); function randRange(min, max) { var randomNum = und (Math.random () * (max - min)) + min; return randomNum; } function loadSnow() { if (countSnow > totalSnow) {countSnow = 0;return;} if (kar_adedi > totalSnow) {return;} for (var t:uint = 0; t < 5; t++) {countSnow++;var _snow:Snow = new Snow();addChild(_snow);} kar_adedi += 5; } 三、儿童卡通式雪花 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ 1.新建一个flash文档,舞台大小550*400,背景为黑,保存这个文档。 2.在属性面板的“文档类”中输入SnowMove。 3.新建一个ActionScript文件,保存到与flash文档相同的位置,文件名为SnowMove.as,这里的SnowMove 与属性面板“文档类”中输入的一定要一样,包括大小写然后粘贴入代码: package { import flash.display.Sprite; import flash.utils.Timer; import flash.events.TimerEvent; public class SnowMove extends Sprite { private var stageWidth:uint = 550;//根据舞台实际宽度 private var stageHeiht:uint = 400;//根据舞台实际高度 private var nSnow = 150;//雪花的数量,根据舞台调整 public function SnowMove () { init(); } private function init() { for (var j:int = 0; j < nSnow; j++) { var snow:Sprite = drawSnow(); snow.x = stageWidth * Math.random(); snow.y = stageHeiht * Math.random() * -1; snow.alpha = 0.5*Math.random() + 0.5; snow.scaleX = snow.scaleY = 0.5*Math.random() + 0.5; snow.name = "_snow" + j; addChild(snow); } var timer:Timer = new Timer(50); timer.start(); timer.addEventListener(TimerEvent.TIMER, gotoSnow); } private function gotoSnow(evt:TimerEvent):void { for (var j:int = 0; j < nSnow; j++) { var snows = getChildByName("_snow" + j) as Sprite; snows.x += Math.random() * 2 - 1; snows.y += Math.random() * 3; snows.alpha = Math.random() * 0.5 + 0.5; ation += Math.random() * 18 - 9; if (snows.x > stageWidth || snows.x < 0 || snows.y > stageHeiht) { snows.x = stageWidth * Math.random(); snows.y = 0; } evt.updateAfterEvent(); } } private function drawSnow():Sprite { var nSnowLength:Number = Math.floor(Math.random() * 5) + 8; var nSnowRadius:Number = Math.random() * 5 + 5; var sprite:Sprite = new Sprite; aphics.lineStyle(1, 0xffffff); for (var i:int = 0; i < nSnowLength; i++) { veTo(0,0); var nAngle:Number = 2 * Math.PI * i / nSnowLength; var nLineX = nSnowRadius * s(nAngle); var nLineY = nSnowRadius * Math.sin(nAngle); aphics.lineTo(nLineX, nLineY); } return sprite; } } } //代码结束********************************************************************* |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论