用FLASH做动态的水滴在水里然后泛起涟漪怎么做

2025-11-27 21:06:50
推荐回答(2个)
回答1:

我提供个代码,你自己试试:
背景位图导入到库里,右键属性选为as导出,起名surface,然后第一贞拽入到舞台,在第一贞创建关键帧,黏贴代码如下:

fscommand("fullscreen", "true");

var damper = new flash.display.BitmapData(400, 300, false, 400);
var result = new flash.display.BitmapData(400, 300, false, 400);
var result2 = new flash.display.BitmapData(800, 600, false, 400);
var source = new flash.display.BitmapData(400, 300, false, 300);
var buffer = new flash.display.BitmapData(400, 300, false, 300);
var output = new flash.display.BitmapData(800, 600, true, 300);
var surface = flash.display.BitmapData.loadBitmap("surface");
var bounds = new flash.geom.Rectangle(0, 0, 400, 300);
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, 120, 120, "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);
}
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, 800, 600), origin, water);
buffer = source;
source = result.clone();
};

回答2:

用遮罩层做,画几个圆形,只要线框,F8转换图形,将圆形缩的很小,放到一个点上,做帧动画,由小到大,分层做,变成遮罩层,在最后放上张水的图片。测试OK