Loading:


Efekt zamkniętego elementu w pajęczynie [ ActionScript 3 ]

Przykład ukazuje efekt pajęczyny bazującej na trzech obiektach, które utrzymują środkowy czerwony element.

 

Niebieskie elementy można dowoli przesuwać, oraz obserwować reakcję czerwonego obiektu na każdą taka zmianę.

 

Wersja On-line:

 



Napisz Artyku³

Listing

//Kod dla pliku Pajeczyna.as

package
{
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.MouseEvent;
       
        public class Pajeczyna extends Sprite
        {
                private var pilka:Pilka;
                private var punkty:Array;
                private var odbicie:Number = 0.1;
                private var tarcie:Number = 0.8;
                private var iloscPunktowPajeczyny:Number = 3;
               
                public function Pajeczyna()
                {
                        init();
                }
               
                private function init():void
                {
                        pilka = new Pilka(20);
                        addChild(pilka);
                       
                        punkty = new Array();
                        for(var i:uint = 0; i < iloscPunktowPajeczyny; i++)
                        {
                                var handle:Pilka = new Pilka(10, 0x0000ff);
                                handle.x = Math.random() * stage.stageWidth;
                                handle.y = Math.random() * stage.stageHeight;
                                handle.addEventListener(MouseEvent.MOUSE_DOWN, onPress);
                                addChild(handle);
                                punkty.push(handle);
                        }
                       
                        addEventListener(Event.ENTER_FRAME, onEnterFrame);
                        addEventListener(MouseEvent.MOUSE_UP, onRelease);
                }
               
                private function onEnterFrame(event:Event):void
                {
                        for(var i:uint = 0; i < iloscPunktowPajeczyny; i++)
                        {
                                var handle:Pilka = punkty[i] as Pilka;
                                var dx:Number = handle.x - pilka.x;
                                var dy:Number = handle.y - pilka.y;
                                pilka.vx += dx * odbicie;
                                pilka.vy += dy * odbicie;
                        }
                       
                        pilka.vx *= tarcie;
                        pilka.vy *= tarcie;
                        pilka.x += pilka.vx;
                        pilka.y += pilka.vy;
                       
                        graphics.clear();
                        graphics.lineStyle(1);
                        for(i = 0; i < iloscPunktowPajeczyny; i++)
                        {
                                graphics.moveTo(pilka.x, pilka.y);
                                graphics.lineTo(punkty[i].x, punkty[i].y);
                        }
                }
               
                private function onPress(event:MouseEvent):void
                {
                        event.target.startDrag();
                }
               
                private function onRelease(event:MouseEvent):void
                {
                        event.target.stopDrag();
                }
        }
}


//Kod dla pliku Pilka.as

package {
        import flash.display.Sprite;
       
        public class Pilka extends Sprite {
                private var promien:Number;
                private var kolor:uint;
               
                public function Pilka(promien:Number=40, kolor:uint=0xff0000) {
                        this.promien = promien;
                        this.kolor = kolor;
                        init();
                }
               
                public function init():void {
                        graphics.beginFill(kolor);
                        graphics.drawCircle(0,0, promien);
                        graphics.endFill();
                }
        }
}




Dodano przez: divix
Ranga: Administrator serwisu Punktów: 38423
Komentarze użytkowników
    • Tre¶æ komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2020 v.1.5 | design: diviXdesign & rainbowcolors