Loading:

Książka Zend Framework 3. Poradnik Programisty.

Animowana oraz powiększana galeria zdjęć w ActionScript 3.0

Skrypt tworzy galerię obrazków, animowaną po naciśnięciu przycisku od 1 do 6, dla każdego obrazka. Galeria jest w pełni obrotowa wobec ułożenia pozycji myszki.

 

Wersja On-line:

 

 

Aby skrypt zadziałał potrzebujemy 6 klipów filmowych o nazwach foto1_mc .... foto6_mc, które znajdują się w klipie o nazwie pojemnik_mc. Każdy z klipów osobnego zdjęcia powinien posiadać klip filmowy o nazwie powiększ_mc.

 

Kod dla pliku FotoPanel.AS jest ukazany na dole, należy zaimportować ten plik do pliku FLA.

 

Ten przykład wykorzystuje biblioteke Tween Lite Basic, którą można pobrać tutaj: [ pobierz ]



Napisz Artykuł

Listing

package
{
        import flash.display.*;
        import flash.events.*;
        import gs.*;
        import gs.easing.*;
       
        public class FotoPanel extends MovieClip
        {
                private var zaznaczony:MovieClip;
               
                public function FotoPanel():void
                {
                        inicjalizacja();
                        addEventListener(Event.ENTER_FRAME, nawigacja);
                }
               
                private function inicjalizacja():void
                {
                        var ilosc:int = pojemnik_mc.numChildren;
                        for (var i:int = 0; i<ilosc; i++)
                        {
                                var aktualny:MovieClip = MovieClip(pojemnik_mc.getChildAt(i));
                                aktualny.buttonMode = true;
                                aktualny.lokalizacja = [aktualny.x, aktualny.y];
                                aktualny.addEventListener(MouseEvent.ROLL_OVER, onOver);
                                aktualny.addEventListener(MouseEvent.ROLL_OUT, onOut);
                                aktualny.addEventListener(MouseEvent.CLICK, onClick);
                        }
                }
               
                private function onOver(e:MouseEvent):void
                {
                        var aktualny:MovieClip = MovieClip(e.currentTarget);
                       
                        if (aktualny != zaznaczony) {
                                TweenLite.to(aktualny.powieksz_mc, 0.2, {
                                                                                alpha:1
                                                         });
                        }
                }
               
                private function onOut(e:MouseEvent):void
                {
                        var aktualny:MovieClip = MovieClip(e.currentTarget);
                       
                        TweenLite.to(aktualny.powieksz_mc, 0.2, {
                                                                                        alpha:0
                                                                 });
                }
               
                private function onClick(e:MouseEvent):void
                {
                        var aktualny:MovieClip = MovieClip(e.currentTarget);

                        if(zaznaczony == null)
                        {
                                powieksz(aktualny);
                        }
                        //nacisniecie powiększonego juz zdjęcia
                        //czyli pomnijeszenie go
                        else if(zaznaczony == aktualny)
                        {
                                TweenLite.to(aktualny, 0.5, {
                                                                scaleX:1,
                                                                scaleY:1,
                                                                x:zaznaczony.lokalizacja[0],
                                                                y:zaznaczony.lokalizacja[1],
                                                                ease:Expo.easeInOut,
                                                                onComplete:function(){zaznaczony=null;}
                                                 });
                        }
                        //klikniecie na inny obrazek podczas gdy już mamy
                        //otwarty jeden obraz
                        else
                        {
                                TweenLite.to(zaznaczony, 0.5, {
                                                                scaleX:1,
                                                                scaleY:1,
                                                                x:zaznaczony.lokalizacja[0],
                                                                y:zaznaczony.lokalizacja[1],
                                                                ease:Expo.easeInOut,
                                                                onComplete:powieksz,
                                                                onCompleteParams:[aktualny]
                                                 });
                        }
                }
               
                private function powieksz(aktualny:MovieClip):void
                {
                        zaznaczony = aktualny;
                        pojemnik_mc.addChild(aktualny);
                        //aktualny.enlarge.alpha = 0;
                        TweenLite.to(aktualny, 0.5, {
                                                                scaleX:2,
                                                                scaleY:2,
                                                                x:0,
                                                                y:0,
                                                                ease:Expo.easeInOut
                                                 });
                }
               
                private function nawigacja(e:Event):void
                {
                        //pobieranie procentowej nawigacji myszki do sceny głównej
                        var dystansX:Number = mouseX / 450;
                        var dystansY:Number = mouseY / 300;
                       
                        //określa mc, czas, rotacje maksymalną pomiędzy -70 a 70 stopni
                        TweenLite.to(pojemnik_mc, 2, {
                                                                                rotationY:-70+(140*dystansX),
                                                                                rotationX:70-(140*dystansY),
                                                                                ease:Expo.easeOut
                                                 });
                }
        }
}
 


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=12&t=2870

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: divix
Ranga: Administrator serwisu Punktów: 37169
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-17 v.1.5 | design: diviXdesign & rainbowcolors