设计实现flash小球沿菱形运动
2008-01-17 11:19:41 来源:WEB开发网如何使小球沿菱形运动(不用引导线),其实方法有多种,下面帖一种比较简单的方法,老鸟们别看了(浪费你的时间).
以下代码中 ball是那个红色小圆点, rhombus 是那个菱形
//初始值
var x0:Number = rhombus._x, y0:Number = rhombus._y, w:Number = rhombus._width, h:Number = rhombus._height;
//四个顶点的坐标(从上往右往下往左)
var xy_array:Array = [[x0, y0-h/2], [x0+w/2, y0], [x0, y0+h/2], [x0-w/2, y0]];
//开始点坐标,定点在最高处,其中startX startY 两个变量决定到达转折点折反时的起始坐标值
var startX:Number = ball._x=xy_array[0][0];
var startY:Number = ball._y=xy_array[0][1];
//k 决定取数组中哪个元素的值
var k:Number = 1;
ball.onEnterFrame = function() {
//匀速运动,也就是将终点坐标与起点坐标的长度分成50个等份,ball坐标每次移动1个等份,直到终点
this._x += (xy_array[k][0]-startX)/50;
this._y += (xy_array[k][1]-startY)/50;
//当到达最右边点时
if (this._x>=(xy_array[1][0]-1)) {
//定义ball坐标和起点坐标的值,防止ball出现偏移,下面各个if 中意思相似
this._x = startX=xy_array[1][0];
this._y = startY=xy_array[1][1];
k = 2;
// k值变化决定终点坐标值,下同
}
if (this._y>=(xy_array[2][1]-1)) {
this._x = startX=xy_array[2][0];
this._y = startY=xy_array[2][1];
k = 3;
}
if (this._x<=(xy_array[3][0]+1)) {
this._x = startX=xy_array[3][0];
this._y = startY=xy_array[3][1];
k = 0;
}
if (this._y<=(xy_array[0][1]+1)) {
this._x = startX=xy_array[0][0];
this._y = startY=xy_array[0][1];
k = 1;
}
};
更多精彩
赞助商链接