本例中我们用Flash的ActionScript代码控制制作小球沿不规则的路径上移动的卡通动画。
主要使用BitmapData.getPixel();函数。
原理:路径为一像素的纯色的不规则的曲线(如红色),用getPixel();函数记录曲线上的所有坐标。
ActionScript代码如下:
import flash.display.BitmapData; import flash.geom.Point; var pointArr:Array = []; var ypos:Number = 200; var curve:MovieClip = this.createEmptyMovieClip("curve", 10); with (curve) { lineStyle(1, 0xFF0000); moveTo(0, ypos); for (var i:Number = 0; i<550; i += 6) { lineTo(i, ypos+i/10*Math.sin(i/20)); } } var X:Number = curve._width; var Y:Number = ypos+curve._height; var copyBitmap:BitmapData = new BitmapData(X, Y, true, 0); copyBitmap.draw(curve); var color:Number = Number(0xFF0000); for (var i:Number = 0; i<X; i += 10) { for (var j:Number = 0; j<Y; j++) { if (copyBitmap.getPixel(i, j) == color) { pointArr.push(new Point(i, j)); break; } } } copyBitmap.dispose(); var ball:MovieClip = this.createEmptyMovieClip("ball", 20); with(ball){ lineStyle(20); moveTo(0, 0); lineTo(.2, 0); } this.onEnterFrame = function() { ball._x = pointArr[0].x; ball._y = pointArr[0].y-10; pointArr.shift(); if (pointArr.length == 0) { delete this.onEnterFrame; trace("over"); } }; |
|