Flash水波特效(BitmapData)


这是一个水波互动效果的动画,文件打开后在画面上单击鼠标,或按住鼠标左键不放在画面上划过就会出现圈圈涟漪和波纹,非常美丽,跟真的水面一样,非常漂亮。以下是制作方法:

一、新建FLA。(flash player 8,as2.0)

二、导入图片到库。不用放到舞台。

三、打开库设置图片链接。标识符为:surface。将“为运行时导入”勾去掉,勾上“为actionscript 导出”和“在第一帧导出”

四、在第一帧插入动作代码。

var ww = Stage.width;
var hh = Stage.height;
var damper = new flash.display.BitmapData(ww/2, hh/2, false, 128);

var result = new flash.display.BitmapData(ww/2, hh/2, false, 128);

var result2 = new flash.display.BitmapData(ww, hh, false, 128);

var source = new flash.display.BitmapData(ww/2, hh/2, false, 128);

var buffer = new flash.display.BitmapData(ww/2, hh/2, false, 128);

var output = new flash.display.BitmapData(ww, hh, true, 128);

var surface = flash.display.BitmapData.loadBitmap("surface");

var bounds = new flash.geom.Rectangle(0, 0, ww/2, hh/2);

var origin = new flash.geom.Point();

var matrix = new flash.geom.Matrix();

var matrix2 = new flash.geom.Matrix();

matrix2.a = matrix2.d=2;

var wave = new flash.filters.ConvolutionFilter(3, 3, [1, 1, 1, 1, 1, 1, 1, 1, 1], 9, 0);

var damp = new flash.geom.ColorTransform(0, 0, 9.960937E-001, 1, 0, 0, 2, 0);

var water = new flash.filters.DisplacementMapFilter(result2, origin, 4, 4, 48, 48, "ignore");

attachBitmap(output,0);

var ms = getTimer();

var frame = 0;

var mouseDown = false;

onMouseDown = function () {
    mouseDown = true;
};

onMouseUp = function () {
    onEnterFrame();
    mouseDown = false;
};

onEnterFrame = function () {
    if (mouseDown) {
        var _loc2 = _xmouse/2;
        var _loc1 = _ymouse/2;
        source.setPixel(_loc2+1,_loc1,16777215);
        source.setPixel(_loc2-1,_loc1,16777215);
        source.setPixel(_loc2,_loc1+1,16777215);
        source.setPixel(_loc2,_loc1-1,16777215);
        source.setPixel(_loc2,_loc1,16777215);
    }
    // end if
    result.applyFilter(source,bounds,origin,wave);
    result.draw(result,matrix,null,"add");
    result.draw(buffer,matrix,null,"difference");
    result.draw(result,matrix,damp);
    result2.draw(result,matrix2,null,null,null,true);
    output.applyFilter(surface,new flash.geom.Rectangle(0, 0, ww, hh),origin,water);
    buffer = source;
    source = result.clone();
};

固定链接  |  引用此贴的链接  |  添加评论(4)  |  浏览()

黑板报最新文章

评论

虎子哥
学习了你好牛呀
quote 4.3sliang-2008-8-11 18:02:52  

代码的头两行,现在是定义的场景的高宽
quote 3.虎子哥-2008-6-27 0:04:02  http://www.freegezi.net/blog/

那这个场景如果变大,应该修改那几个参数呢?
quote 2.lisa-2008-6-26 15:23:49  

这个真的很赞
quote 1.huzimm-2008-5-28 15:42:01  

发表评论:






网站链接





◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Copyright © 2007 Freegezi.net All rights reserved.Powered By Z-Blog