弹簧算法

来源:互联网 发布:装配式住宅 知乎 编辑:程序博客网 时间:2024/04/27 19:58
 
package com.klstudio.algorithms {      import flash.events.MouseEvent;      import flash.events.Event;      import flash.display.MovieClip;      import flash.display.Sprite;        /**      * 摆动算法      * @author Kinglong(kinglong@gmail.com)      * @since:2010-9-20      */      [SWF(width = 550, height = 400, frameRate = 24, backgroundColor = 0x333333)]        public class Swing extends Sprite {          /**          * 显示元件          */          private var _icon : MovieClip;            /**          * xy弧度          */          private var _xAngle : Number;          private var _yAngle : Number;          /**          * xy摆动的速度          */          private var _xSpeed : Number;          private var _ySpeed : Number;          /**          * xy摆动的振幅          */          private var _xRadius : Number;          private var _yRadius : Number;            private var _mod : int;            public function Swing() {              _icon = new jAcid_smiley();                       addChild(_icon);                      initParams();                 stage.addEventListener(MouseEvent.CLICK, stageHandler);                   addEventListener(Event.ENTER_FRAME, enterFrameHandler);          }            private function initParams(mod : int = 0) : void {              _mod = mod;              switch(_mod) {                  case 0:                                   case 1:                  case 2:                      _xAngle = _yAngle = 0;                      _xSpeed = _ySpeed = 0.05;                      _xRadius = _yRadius = 100;                      break;                  case 3:                      _xSpeed = 0.15;                      _ySpeed = 0.05;                      _xRadius = 100;                      _yRadius = 50;                      break;              }          }            private function stageHandler(event : Event) : void {              var mod : int = _mod + 1;              initParams(mod % 4);          }            private function enterFrameHandler(event : Event) : void {              switch(_mod) {                  case 0:                      _icon.x = 0;                      _icon.y = 100;                      _icon.x = 200 + Math.sin(_xAngle) * _xRadius;                      _xAngle += _xSpeed;                      break;                                case 1:                      _icon.x = 100;                      _icon.y = 100;                      _icon.y = 200 + Math.cos(_yAngle) * _yRadius;                                         _yAngle += _ySpeed;                       break;                  case 2:                  case 3:                      _icon.x = 0;                      _icon.y = 100;                      _icon.x = 200 + Math.sin(_xAngle) * _xRadius;                                         _icon.y = 200 + Math.cos(_yAngle) * _yRadius;                      _xAngle += _xSpeed;                                   _yAngle += _ySpeed;                                           break;                            }          }      }  }  

原创粉丝点击