Results 1 to 3 of 3

Thread: Random Move ??

  1. #1
    one1989's Avatar
    one1989 is offline Laskar Babaflash
    Join Date
    Apr 2009
    Location
    Jogjakarta
    Posts
    30

    Default Random Move ??

    Tanya dong tentang mengenerate random.
    Jadi, saya pingin membuat sebuah animasi beberapa ikan yang bergerak secara random pada stage. Setiap ikan bergerak dari satu titik ke titik lain ada perlambatan yang terjadi,. Kemudian saat perlambatan selesai atau ikan telah berhenti, ikan akan bergerak ke posisi berikutnya dengan tetap dengan perlambatan. Saya tidak menggunakan Tween Class karena grakannya kurang acak dn takut susah mengatur fungsi enterFrame nya. Berikut ini codenya..

    Pertama saya buat class untuk mengatur gerakan ikan..
    Code:
    package { 
        import flash.display.*; 
        import flash.events.*; 
     
        public class Fish extends MovieClip { 
            private var easing:Number; 
            private var Xtarget:Number; 
            private var Ytarget:Number; 
            private var batasKa:Number = 400; 
            private var batasBa:Number = 300; 
             
            public function Fish(X:Number, Y:Number) { 
                Xtarget = X; 
                Ytarget = Y; 
                easing = 0.05; 
                 
                addEventListener(Event.ENTER_FRAME, moveThis);             
            } 
             
            private function moveThis(e:Event):void { 
         
                    var vx:Number = (Xtarget - this.x) * easing; 
                    var vy:Number = (Ytarget - this.y) * easing; 
                    var deltaX:Number = Xtarget - this.x; 
                 
                    this.x += vx; 
                    this.y += vy; 
                 
                    //---------tunggu ikan hampir berhenti bergerak---------- 
                 
                    var point:Number = Math.random()*0.6 + 0.7; 
                     
                    if(vx < point) { 
                        Xtarget = Math.random() * batasKa; 
                        Ytarget = Math.random() * batasBa; 
                        easing = Math.random() * 0.03 + 0.01; 
                    } 
                 
                    if(deltaX < 0) { 
                        this.scaleX = -1; 
                    }else { 
                        this.scaleX = 1; 
                    } 
                } 
            } 
             
    }
    Kemudian pada class utama diberikan kode berikut..
    Code:
    package { 
        import flash.display.*; 
        import flash.events.*; 
     
        public class FishMove extends MovieClip { 
            private var ikanAr:Array;             
            private var X:Number; 
            private var Y:Number; 
             
            public function FishMove() { 
                ikanAr = new Array(); 
                newFish(); 
            } 
             
            private function newFish() { 
                for(var i:uint=0; i<5; i++) { 
                    X = Math.random() * stage.stageWidth; 
                    Y = Math.random() * stage.stageHeight; 
                    var ikan:Fish = new Fish(X, Y); 
                    addChild(ikan); 
                    ikan.x = Math.random() * 400; 
                    ikan.y = Math.random() * 300; 
                    ikanAr.push(ikan); 
                } 
            } 
        } 
    }
    Nah, yg jadi masalah, jika dijalankan maka gerakan ikan tidak sesuai seperti yang diharapkan. Saat bergerak dari kiri ke kanan, gerakannya bisa bagus, tapi saat dari kanan ke kiri, gerakannya terlalu cepat dan kaku. Coba lihat hasilnya biar lebih jelas..

    http://helawan-oye.web.ugm.ac.id/wp-...s/FishMove.swf

    Ada yang bisa bantu. Please tolongin ya...

  2. #2
    buceqk's Avatar
    buceqk is offline Laskar Babaflash
    Join Date
    Apr 2010
    Location
    Ibu Kota
    Posts
    97

    Default

    hmmm...coba code:
    Code:
    this.x += vx;
    this.y += vy;
    
    if (vx < point) {
        Xtarget = Math.random() * batasKa;
        Ytarget = Math.random() * batasBa;
        easing = Math.random() * 0.03 + 0.01;
    }
    di ganti ma:

    Code:
    if (Math.abs(deltaX) < 1) {
        Xtarget = Math.random() * batasKa;
        Ytarget = Math.random() * batasBa;
        easing = Math.random() * 0.03 + 0.01;
    }else {
        this.x += vx;
        this.y += vy
    }

  3. #3
    one1989's Avatar
    one1989 is offline Laskar Babaflash
    Join Date
    Apr 2009
    Location
    Jogjakarta
    Posts
    30

    Default

    Iya.. Udah bisa koq. Solusi yang ane dapet juga hampir sama kaya yang di atas. Jadi emang untuk point ternyata ada nilai positif sama negatifnya. Yang kemaren point baru bernilai positif jadi gerakan yang ke kiri otomatis cuma bentar. Makasih ya buat sarannya..

Similar Threads

  1. nax soal actionscripx move
    By athasamid in forum ActionScript
    Replies: 1
    Last Post: 12-28-2010, 11:24 AM
  2. random gambar???
    By ulinha in forum Beginner
    Replies: 10
    Last Post: 06-14-2010, 12:56 PM
  3. random frameLabel ?
    By sambu in forum Beginner
    Replies: 2
    Last Post: 05-17-2010, 12:50 PM
  4. Script Random
    By mas-wahyu in forum ActionScript 1.0/2.0
    Replies: 5
    Last Post: 12-23-2009, 08:56 PM
  5. Random?????
    By Blue_maniac7 in forum Flash CS3, CS4, CS5.5 dan Action Script 3
    Replies: 2
    Last Post: 08-06-2009, 04:09 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •