2021-09-11 来源:网络
今天我们来讲解一个通过FLASH AS3来制作特酷的遮罩动画效果的教程,先看一下最终效果吧:
这里以FLASH CS4来讲解,具体制作步骤如下:
步骤一、打开FLASH CS4,新建一个FLASH文档,选择AS3,然后按Ctrl+J进行文档属性设置,把文档的高度、宽度分别设置为550×314(这个大小与背景图片大小相同),如图:

步骤二、导入作为背景图片,选中背景图片,按下【F8】,转为【影片剪辑】,名称填写【背景图】,这个名称你可以自己任意填写名称,点【确定】,如图所示:

接着对这个有背景图的图层进行锁定,如图:

步骤三、新建一个图层,取个名称遮罩层,然后椭圆工具画一个禁止笔触为50*50的圆,填充黑色(其实这里可以填充任何一种颜色),然后按F8,把这个圆转为影片剪辑,名称设为mask,如图所示:

步骤四、删除舞台中的这个圆,把该图层改名为AS。
步骤五、新建ActionScript文件,编写一个外部的MyMask.as文件。在编译器中输入代码如下:
package {
import flash.display.MovieClip;
public class MyMask extends MovieClip {
//Mask's x and y speed
public var speedX:Number;
public var speedY:Number;
//Set the given scale for this mask, when we create a new
//mask object
public function MyMask(scale:Number) {
this.scaleX = scale;
this.scaleY = scale;
}
}
}步骤六、转到flash中的as层,输入如下as代码:
//We use an array to hold all our masks.
//(Except the mask that follows our cursor)
var masks:Array = new Array();
//We add all of the masks to a container
var maskContainer:Sprite = new Sprite();
//Set the maskContainer to be the image's mask
backgroundImage.mask=maskContainer;
//Add the container on the stage
addChild(maskContainer);
//Create the mask which follows cursor movement (master mask)
var masterMask:MyMask=new MyMask(1);
//Set the master masks's coordinates to match cursor's coordinates
masterMask.x=mouseX;
masterMask.y=mouseY;
//Add the master mask to a container
maskContainer.addChild(masterMask);
//Cache the image and container as bitmap, so we
//can animate the alpha of the masks
maskContainer.cacheAsBitmap=true;
backgroundImage.cacheAsBitmap=true;
//Create a timer that is called every 0.2 seconds
var timer:Timer=new Timer(200,0);
timer.addEventListener(TimerEvent.TIMER, timerEvent);
timer.start();
//This function is called every 0.2 seconds.
//We create a new mask in this function.
function timerEvent(e:TimerEvent):void {
//Calculate a random scale for the new mask (0 to 1.5)
var scale:Number=Math.random()*1.5 + 0.5;
//Create a new mask with random scale
var newMask:MyMask=new MyMask(scale);
//Set the position for the new mask
newMask.x=mouseX;
newMask.y=mouseY;
//Assign a random x and y speed for the mask
newMask.speedX=Math.random()*20-10;
newMask.speedY=Math.random()*20-10;
//Add the mask to the container
maskContainer.addChild(newMask);
//Add the mask to the array
masks.push(newMask);
}
//We need ENTER_FRAME to animate the masks
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
//This function is called in each frame
function enterFrameHandler(e:Event):void {
//Loop through the mask array
for (var i:uint = 0; i < masks.length; i++) {
//Save a mask to a local variable
var myMask:MyMask = (MyMask)(masks[i]);
//Update the x and y position
myMask.x+=myMask.speedX;
myMask.y+=myMask.speedY;
//Increase the scale
myMask.scaleX+=0.1;
myMask.scaleY+=0.1;
//Reduce the alpha
myMask.alpha-=0.01;
//If the alpha is below 0, remove the mask
//from the container and from the array
if (myMask.alpha<0) {
masks.splice(i,1);
maskContainer.removeChild(myMask);
}
}
//Update the master mask position
masterMask.x=mouseX;
masterMask.y=mouseY;
}
至此,整个用AS3制作的特酷的遮罩动画效果动画就制作完成了,你可以按Ctrl+Enter进行测试。
感兴趣的朋友可以直接下载flash源码研究一下。