设计实现flash小球沿菱形运动

2008-01-16 14:19:22 来源:互联网 作者:sxl001 点击:
如何使小球沿菱形运动(不用引导线),其实方法有多种,下面帖一种比较简单的方法,老鸟们别看了(浪费你的时间).

 
  如何使小球沿菱形运动(不用引导线),其实方法有多种,下面帖一种比较简单的方法,老鸟们别看了(浪费你的时间).
  
  以下代码中 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;
        }
};

精彩推荐
焦点大图推荐
本类热门文章

论坛美图

本周软件下载排行

广告联系 | 版权说明 | 意见建议 | 加入收藏 | 军网站群 [ 军软件园 - 军软件商城 - 军软件园论坛 ]

电信与信息服务业务经营许可证:京ICP证050203