当前位置:首页>网络学院>网页制作>Flash教程>文章内容

flash8水波制作简明实例-探篇

[ 来源:www.it55.com | 作者: | 时间:2007-07-12 | 收藏 | 推荐 ] 【


  一直一来,flash8的水波制作都是比较让我向往的,网上也出了不少的教材,闪吧的高手HBB和xiankevin都出过相关的教程,不过当时我没时间学习,看源文件看的是一塌糊涂,到头来是今天看,明天忘。 这几天学习flash新增的类,终于学到了DisplacementMapFilter滤镜类,一切豁然开朗,原来水波制作这么简单,下面是昨天学习,今天做的一个小实例。很简单,基本上三步走就完成了一个水波制作的雏形。明天再试试用BitmapData.perlinNoise 方法加深一下印象。

  先看效果: sflj www.it55.com kg^&fgd



sflj www.it55.com kg^&fgd

www.it55.com在线教程


首先我们需要找到一个背景(大小和场景相同),或者自己手绘一个,这里我用的是博客的图标。也可以用一张图片做成mc来代替。做好后,将这个mc拖入到场景中,中心对齐,并给它实例命名为pic 
vd;k;l www.it55.com rdfg


flash8水波<a href='/html/xueyuan/wangyezhizuo'><u>制作</u></a>简明实例-探篇(图一) www.it55.com在线教程


  第二步新建一个mc,绘制一个黑白颜色的放射性渐变的圆,并把它做成动态的效果,效果看这里:
http://www.webjx.com/upfiles/20060221/20060221002112_2.swf
 
这个会动的放射性渐变mc,我们在库中给它添加标识符(就叫ball好了),你也可以不用这样做,后面的讲解中有可以选择的余地

  第三步,再次新建一个mc,里面绘制一个和场景大小相同的矩形(注意这个矩形要与mc的场景中心进行“左上”对齐)如下图,这个矩形就是将来在pic那个图片效果上做水波的区域,如果你不绘制这个矩形,将来出来的效果就会感觉有个边缘,视觉上就比较假,当然如果你有心,完全有别的方法可以来解决这个问题。

http://www.it55.com/


flash8水波<a href='/html/xueyuan/wangyezhizuo'><u>制作</u></a>简明实例-探篇(图二) it55.com


  接下来,如果你刚才懒的命名标识符,就可以在这个mc里新建一个层,把刚才的那个放射性渐变的mc(会动的那个)拖入进来,位置就放到这个矩形的中间。 it55.com


  如果你命名了标识符,就可以直接在帧上添加以下代码:  www.it55.com在线教程


var depth:Number = this.getNextHighestDepth();  
file://获取可用层级,返回一个数字  
this.attachMovie("ball", "ball"+depth, depth);  
file://加载库中的放射性渐变动画。  
this["ball"+depth]._x = Stage.width/2;  
file://确定位置。具体用什么参数,看你的个儿喜好啦。  
this["ball"+depth]._y = Stage.height/2;  
最后,回到主场景,这时主场景中已经有最初制作的实例名叫pic的背景(关的博客);现在只需把刚才制作的包含矩形的mc拖入进来,把它远远的扔到一边就可以了,下面是主场景帧上的代码:  
file://by 关  
file://禁止动画缩放。  
Stage.scaleMode = "noScale";  
file://导入相关的类,死记硬背下面三个import。  
import flash.display.*;  
import flash.filters.*;  
import flash.geom.*;   45398 www.it55.com it55学习IT知识,享受IT生活 4dfkjn
file://创建一个bitmapdata对象,大小和放射性渐变的mc相同  
var bit:BitmapData = (new BitmapData(mask._width, mask._height, true));  
file://zjx、zjy是渲染动画时所使用的通道,数值为1、2、4、8,对应红、绿、兰、alpha通道。我看基本可以死记硬背就好。  
var zjx:Number = 1;  
var zjy:Number = 2;  
file://sfx、sfy这两个数据可以改变水波的强度,即图像在x轴和y轴扭曲的程度。  
var sfx:Number = 10;  
var sfy:Number = 20;  
file://逐帧调用,你也可以用setInterval来实现,因为那个放射性渐变是动态的,而bitmap对象要模仿它的话,就必须做到动态跟踪。  

(阅读次数:

返回顶部
共2页: 上一页 1 [2] 下一页  

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]

最新文章