import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Matrix;
this.createEmptyMovieClip("man_mc", _root.getNextHighestDepth());
man_mc.beginFill(0xFF0000, 100);
man_mc.moveTo(0, 0);
man_mc.lineTo(-20, -80);
man_mc.lineTo(20, -80);
man_mc.endFill();
man_mc._x = 200;
this.createEmptyMovieClip("action_mc", _root.getNextHighestDepth());
action_mc._y = 500;
//山的初始位置
var fillColor = 0x9999FF;
//山的颜色
var totalWidth = 1500;
var x0 = 0;
var y0 = action_mc._y;
var dy = 20;
var y_arr:Array = [];
var rate = 200;
var timeCount = 0;
var timeRate = 20;
//控制多少桢绘画出新的山峰(谷),必须是能被rate整除的数
var scaley = 2;
//鼠标差值和产生的山峰(谷)的比例,值越大波浪越小
for (var i = 0; i<=Math.floor(totalWidth/rate+1); i++) {
y_arr.push(Math.random()*(Stage.height-action_mc._y)/scaley);
}
//action_mc.lineStyle(5, 0xFF00FF, 100);
drawPic = function () {
action_mc.clear();
action_mc.beginFill(fillColor, 100);
action_mc.moveTo(0, (y_arr[0]+y_arr[1])/2+dy/2);
for (var i = 1; i<=y_arr.length-1; i += 1) {
action_mc.curveTo(i*rate-rate/2, y_arr[i]-i*dy+dy, i*rate, (y_arr[i]+y_arr[i+1])/2-i*dy+dy/2);
}
action_mc.lineTo((y_arr.length-1)*rate, 400);
action_mc.lineTo(0, 400);
action_mc.endFill();
};
drawPic();
_root.onEnterFrame = function() {
action_mc._x -= rate/timeRate;
action_mc._y += dy/timeRate;
timeCount++;
if (timeCount%timeRate == 0) {
y_arr.shift();
y_arr.push(action_mc._ymouse/scaley);
if (timeCount%(timeRate*2) == 0) {
}
action_mc._x = x0;
action_mc._y = y0;
}
drawPic();
var manSpeed = rate/(timeRate*2);
var manDx = _root._xmouse-man_mc._x;
if (Math.abs(manDx)>manSpeed) {
man_mc._x += (manDx>0) ? manSpeed : (-manSpeed);
}
man_mc._y = getY(man_mc._x);
};
var getY = function (x):Number {
var bb:BitmapData = new BitmapData(action_mc._width, Stage.height, true, 0);
bb.draw(action_mc, new Matrix(1, 0, 0, 1, action_mc._x, action_mc._y));
var y = 0;
while (bb.getPixel(x, y) == !fillColor) {
y++;
}
bb.dispose();
return (y);
};
不知道有没有更高效的方法,欢迎拍砖,测试:
XYZBLOG
WELCOME
|
新近日志
新近留言
友情链接
统计信息
|
XYZ | comment (0) | trackback (0) | view (270)
http://127.0.0.1/blog/trackback.asp?q=502261124
|




