Actionscript : ใช้เทคนิคการเคลื่อนที่แบบสุ่ม

ใน ตัวอย่างนี้เราจะเพิ่มความซับซ้อนให้กับตัวแปรโดยกำหนดให้มีการเปลี่ยนแปลง ค่า x และ y ที่เป็นอิสระต่อกัน เพื่อให้ได้รูปแบบการเคลื่อนที่แบบสุ่ม และเราจะเพิ่มตัวการ์ตูนเข้าไปเพื่อให้เห็นถึงการประยุกต์ใช้งาน

package{
    import flash.display.Sprite;
    import flash.display.Loader;
    import flash.display.BitmapData;
    import flash.display.Graphics;
    import flash.events.Event;
    import flash.events.TimerEvent;
    import flash.utils.Timer;
    import flash.net.URLRequest;

 public class RandomMoving extends Sprite{
                     private var _xRadius:Number = 100; /**** ****/
                     private var _xAngle:Number=10; /**** degree ****/
                     private var _yAngle:Number=0;
                     private var _yRadius:Number=100;
                     private var _xSpeed:Number=0.15;
                     private var _ySpeed:Number=0.5;
                     private var _imgLoc:String='http://www.n3amedia.info/bee_icon.png';

             public function RandomMoving(){
                                       this.loadImg();
                     this.setPosition(0,400);
                     var timer:Timer  = new Timer(50,0);
                     timer.addEventListener("timer",moveMe);
                     _yAngle=_yAngle*Math.PI/180;
                     _xAngle=_xAngle*Math.PI/180;
                     timer.start();
             }
            public function setPosition(x:Number,y:Number):void{
                    this.x=x;
                    this.y=y;
            }
           private function loadImg():void{
               var loader:Loader = new Loader();
               loader.addEventListener(Event.COMPLETE,onLoadComplete);
               var req:URLRequest=new URLRequest(_imgLoc);
               loader.load(req);
               addChild(loader);
           }
          private function onLoadComplete(e:Event):void{
               var l:Loader = e.target as Loader;
               var bd:BitmapData=new BitmapData(l.contentLoaderInfo.width,l.contentLoaderInfo.height);
               bd.draw(l);
               
               this.graphics.beginBitmapFill(bd,null,true);
               this.graphics.endFill();
          }

            private function drawMe():void{
                   /**** to draw a red circle with 50 pixels radias ****/
                       this.graphics.beginFill(0xFF0000,200);
                       this.graphics.drawCircle(0,0,10);
                       this.graphics.endFill();
            }

           private function moveMe(e:TimerEvent):void{
                   this.x=200+Math.sin(_xAngle)*_xRadius;
                   this.y=200+Math.cos(_yAngle)*_yRadius;                   
                   this._xAngle+=_xSpeed;
                   this._yAngle+=_ySpeed;
           }
 }
}

ส่วนของคำสั่งทีทำให้เกิดการเคลื่อนแบบสุ่มคือ

          this.x=200+Math.sin(_xAngle)*_xRadius;
                   this.y=200+Math.cos(_yAngle)*_yRadius;                   
                   this._xAngle+=_xSpeed;
                   this._yAngle+=_ySpeed;


Demo :

Bubble Bee - wonderfl build flash online

ความคิดเห็น