怎能制作质感的水晶泡泡动画?
读趣百科>科普>科技数码

怎能制作质感的水晶泡泡动画?

今天教大家利用Flash CS4制作质感的水晶泡泡动画,并通过编写get 和 set 存取器函数,为创建的元件类提供易于使用的编程接口,使得元件类的属性在可以被访问的基础上进行良好的隐藏和封装。本例还配合使用三角函数知识创建丰富特效,通过本例的制作,读者可以掌握如何为元件类提供易于使用的编程接口,以及加深对三角函数知识的理解应用。

本例思路:

<1>创建实例背景。

<2>绘制类似水泡的图形,并转换为元件类。

<3>编写元件类扩展类。

<4>创建文档类。

实例步骤:

(1)新建一个空白文档,舞台大小设置为400*300,帧频设置为30,将舞台背景颜色设置为 618D0E,绘制一个直径为舞台高度大小的正圆,并填充放射状渐变色,调整高光位置在下方,如下图10-1所示。

其填充放射状渐变色值为:A7E600- 078914- 00552F。调整色柄值,参数依次为:

色柄一:红: 167,绿:230,蓝: 0 Alpha: 100%

色柄二:红: 7,绿:137,蓝: 20 Alpha: 100%

色柄三:红: 0,绿:85,蓝: 47 Alpha: 100%

图10-1 绘制背景

(2)创建一个新图层,命名为“高光”。绘制一个半径与步骤(1)中的圆形略小的同心圆形,并填充线性渐变色,使用“渐变变形工具”进行调整高光位置由上至下分布,如图10-2 所示。

其填充线性渐变色值为:FFFFFF- FFFFFF。调整色柄值,参数依次为:

色柄一:红: 255,绿:255,蓝: 255 Alpha: 0%

色柄二:红: 255,绿:255,蓝: 255 Alpha: 100%

图10- 2 高光部分

(3)再创建一个新图层,命名为“顶部高光” 。使用“椭圆工具”在顶部绘制一个椭圆,填充线性渐变色,高光位置同上一样分布,如图10- 3所示。

其填充线性渐变色值为:FFFFFF- FFFFFF。调整色柄值,参数依次为:

色柄一:红: 255,绿:255,蓝: 255 Alpha: 0%

色柄二:红: 255,绿:255,蓝: 255 Alpha: 68%

图10-3 顶部高光

(4)新建一个影片剪辑,命名为“Ball_mc” 。绘制类似小水泡的图形,这里我们绘制一个放射状渐变的圆形,大小约在20左右,如图10-4所示。

其填充放射状渐变色值为:FFFFFF- FFFFFF- FFFFFF。调整色柄值,参数依次为:

色柄一:红: 255,绿:255,蓝: 255 Alpha: 36%

色柄二:红: 255,绿:255,蓝: 255 Alpha: 9%

色柄二:红: 255,绿:255,蓝: 255 Alpha: 0%

图10-4绘制类似水泡图形

(5)为影片剪辑“Ball_mc”添加元件类,如图10-5所示。

图10-5 添加元件类

(6)下面是元件类扩展类。该类有三个私有属性,如第11到13行代码所示,我们在第22、第25行代码分别定义其属性对应的get()方法,为该元件类实例提供可访问对应属性的接口,第三个属性还提供set()方法,如第29行代码所示。在该类构造函数中还初始化了三个属性,分别产生随机的newX、newY值,如第17到19行代码所示。

AS3代码:

复制代码

代码如下:

**

* 该类为扩展元件类

* @author lbynet

* @version 0.1

*/

package {

import flash.display.Sprite;

public class Ball_mc extends Sprite {

private var newX:Number;

private var newY:Number;

private var W:Number;

public function Ball_mc() {

this.newX = 1 + Math.random()*100; //x轴上的随机速度

this.newY = 1 + Math.random()*20; //y轴上的随机速度

this.W = 0;//用于改变 x轴上的随机速度 值

}

public function get _newX():Number{

return this.newX;

}

public function get _newY():Number{

return this.newY;

}

public function set _W(i:Number){

this.W = i;

}

public function get _W():Number{

return this.W;

}

}

}

(7) 下面的Main类是本实例的文档类,该类定义了三个属性,分别是存储水泡总数、数量累加变量和随机宽、高比例值, 第12到14行代码所示。在构造函数中调用init()方法进行初始化两个属性值,并注册ENTER_FRAME 事件侦听器,如第20到22行代码所示。

/

复制代码

代码如下:

**

* 该类为主程序类

* @author lbynet

* @version 0.1

*/

package {

import flash.display.Sprite;

import flash.events.Event;

public class Main extends Sprite {

private var totalNum:uint;

private var i:uint;

private var dim:Number;

public function Main() {

init();

}

private function init() {

this.totalNum = 70;

this.i = 0;

stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler);

}

(8)下面是两个侦听器函数,enterFrameHandler是前面注册的侦听器对应的函数,该函数创建了totalNum+1个Ball_mc实例,并实例的y坐标值统一设置在舞台高度之外,如第29到31行代码所示。接着我们在第33行代码中随机生成一个0到1之间的随机小数,并与生成的Ball_mc实例对应的宽、高进行相乘得到随机的宽、高值,如第33到35行代码所示。If()语句的最后将Ball_mc实例添加到显示列表并注册ENTER_FRAME 事件侦听器,和进行i值的累加,如第37到39行代码所示。

AS3代码

复制代码

代码如下:

private function enterFrameHandler(event:Event) {

var _mc:Sprite;

if (this.i<= totalNum) {

_mc = new Ball_mc();

_mc.y = stage.stageHeight;

this.dim = Math.random();

_mc.width *= dim;

_mc.height *= dim;

addChild(_mc);

_mc.addEventListener(Event.ENTER_FRAME, removeEnterFrameHandler);

this.i++;

}

}

private function removeEnterFrameHandler(event:Event) {

var _mc:* = event.target as Sprite;

_mc._W += .1;

_mc.x = Math.sin(_mc._W)*_mc._newX + stage.stageWidth/2;

_mc.y -= _mc._newY;

if (_mc.y<= 0) {

_mc.removeEventListener(Event.ENTER_FRAME, removeEnterFrameHandler);

removeChild(_mc);

this.i--; //使得i的值小于totalNum,从而重新创建water_mc

(9)removeEnterFrameHandler是生成的每个Ball_mc实例对应的侦听器函数,在该函数中,我们对Ball_mc实例的W属性进行累加,并设置其X、Y坐标值,如上图中第45到48行代码所示,其中X坐标值被设置为舞台中间大小 + 对应Ball_mc实例的newX属性值 * 其W属性的正弦值,如上图中第47行代码所示,从而使对应Ball_mc实例在舞台中间的左右来回作运动,而在Y轴方向上赋予其newY值,使其产生Y轴方向上的递减(也就是Ball_mc实例向上运动),如上图中第48行代码所示,最终产生盘旋上升效果,如本例效果图所示。下图所示是本例所使用的三角函数简单原理图。

图10-6 三角函数原理

(10) 当Ball_mc实例运动致舞台上方外,便清除该实例注册的ENTER_FRAME 事件侦听器和该该实例,并进行i值的递减,如步骤(7)第50到55行代码所示。我们还可以扩展思路,创作更多效果,如下图所示的小球从向而上运动,作类似喷泉效果。还可以做各种类似冒泡效果

图10-7 扩展实例

教程已完毕,希望对大家都有一定的帮助。

最新科技数码科普

音响有哪些品牌 音响品牌推荐

现在各种播放音乐的产品层出不穷,音响的产品也在不断的更新换代,现在市面上的音响品牌真的很多,有很多朋友都搞不清楚哪些品牌才是好的,下面就来给大家介绍一些好的音...
展开详情

怎样安装机箱风扇散热最好

怎样安装机箱风扇散热最好对于很多一般装机配置来说,机箱上无需安装散热风扇影响也不大,但对于各类主流游戏电脑用户,在夏天就非常容易引起机箱内部散热不良,导致电脑...
展开详情

CAD打开文件提示字体怎么选择

当AutoCAD打开文件提示选择字体时候,怎么选择呢?直接选择“GB”开头的样式即可,如果一直提示,就反复选择“GB”字体样式,确定即可。具体步骤,请看演示。...
展开详情

在excel表格中如何按单元格颜色排序

在使用Excel表格的时候,经常会通过将数据填充不同的颜色进行区分,数据较多的时候,想要找出填充相同颜色的数据就比较麻烦,工作量较大,如果能够将数据按照填充颜...
展开详情

WinRAR如何设置个性化导入导出

使用WinRAR的过程中,难免要对WinRAR根据个人的爱好进行必要的设置,而如果到别的机器上后再运行WinRAR会发现风格与自己的不符,这时候又得重新进行设...
展开详情

word如何快速输入商标版权符号

由于工作需要,有些用户在编辑word文档时,需要输入商标符号、版权符号等其他特殊符号,那么word怎么快速输入商标版权符号?方法很简单,下面我们快快来学习一下...
展开详情

打印cad文件图纸如何进行页面设置

在创建完成一个CAD图形文件后,要打印输出,这就涉及到怎么进行页面设置,类似于WORD打印时的输出设置,打印设备的选择,图纸的大小的选定,打印区域的选项,图形...
展开详情

Excel怎么使用And函数检查数据是否满足条件

你还在为Excel中And函数的使用方法而苦恼吗,今天小编教你Excel中And函数的使用方法,让你告别Excel中And函数的使用方法的烦恼。一、and函数...
展开详情
热门推荐

如何用flash制作纸飞机滑翔天空的动画效果

这一节主要来学习flash动画中的动作补间动画,来制作滑翔的纸飞机动画。大家一起来欣赏学习下吧!滑翔纸飞机动画制作步奏:1、这里使用的纸飞机素材图片是从网上下...
展开详情

3DS MAX怎么制作楼房生长动画

很多朋友肯定很赞叹电影中或者是房地产宣传广告中这样的动画镜头:平坦的大地长出一大片楼房,而这些楼房又是线框形式的,再由线框变成实景。我试了几种方法,觉得下面这...
展开详情

CAD中多重引线看不到箭头怎么办

常常遇到画图使用“引线”,可是有些图引线有箭头,而有些图怎么画都看不到箭头,而且不论怎么放大缩小都看不到箭头,就算选中箭头并在特性中更改,但是依然无济于事,经...
展开详情

cad怎么创建动态块

本文详细的介绍了创建动态门图块的过程和方法,让读者掌握创建动态图块的方法和步骤,从而能对更好的学习cad软件。1、正常启动autocad 2013软件,系统自...
展开详情

cad栅格如何使用

刚打开CAD,CAD会新建一张空图,在图中就可以看到一些等距排列的点或线,这就是栅格。在低版本CAD中,默认使用的是栅格点,在高版本的CAD中通常显示的是栅格...
展开详情