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帧处插入关键帧,并在160帧之间创建补间动画。 
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小时内删除。