SWiSH Forum Strona Główna SWiSH Forum
Forum użytkowników programów SWiSH

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload

Poprzedni temat «» Następny temat
kolejność losowa
Autor Wiadomość
Piotrek 
Doradca



Pomógł: 4 razy
Wiek: 40
Dołączył: 01 Sie 2006
Posty: 69
Skąd: Krakow
Wysłany: Czw 28 Sty, 2010 16:44   kolejność losowa

Witam,

Kłopot mam taki, że potrzebuje odtwarzać losowo animacje zawarte w movie clip. Mam kilka movie clipów i są w nich proste animacje. Jak zmusić żeby w pierwszej klatce sceny wybierany był jeden z nich.

Proszę o pomoc :)
 
     
^Januszr 



Pomógł: 216 razy
Dołączył: 11 Maj 2005
Posty: 1854
Skąd: Stolyca od urodzenia
Wysłany: Czw 28 Sty, 2010 18:56   

Dla nazw kolejnych animacji twoj_klip1 ... twoj_klip9:
do sceny:
Kod:
onFrame (1) {
    value = random(9)
    if (value==0)
    {
    twoj_klip1.gotoAndPlay(2);
    }
    if (value==1)
    {
    twoj_klip2.gotoAndPlay(2);
    }
    if (value==2)
    {
    twoj_klip3.gotoAndPlay(2);
    }
    if (value==3)
    {
    twoj_klip4.gotoAndPlay(2);
    }
    if (value==4)
    {
    twoj_klip5.gotoAndPlay(2);
    }
    if (value==5)
    {
    twoj_klip6.gotoAndPlay(2);
    }
    if (value==6)
    {
    twoj_klip7.gotoAndPlay(2);
    }
    if (value==7)
    {
    twoj_klip8.gotoAndPlay(2);
    }
    if (value==8)
    {
    twoj_klip9.gotoAndPlay(2);   
    }}
onFrame (3) {
    stop();
}

Animacje w klipach powinny mieć stop i remove wszystkich obiektów na pierwszej klatce a powinny zaczynać się od klatki 2 :)
bez twojego *.swi nie pomogę bardziej :P
Zdrówko!
 
     
eden
Ekspert


Pomógł: 35 razy
Dołączył: 04 Sty 2008
Posty: 265
Skąd: warsaw
Wysłany: Czw 28 Sty, 2010 20:32   

Pozwole sobie uzupełnic nieco rozwiązanie Janusza, dla ciekawych.

Jesli już chcesz sprawdzać co tam sie wylosowało, to słuzy do tego celu konstrukcja switch

losuj = Math.floor(Math.random()*9);

Kod:
switch (losuj) {
    case 0:   
                klip0.gotoAndPlay(2);
        break ;
    case 1:   
                klip1.gotoAndPlay(2);
        break ;
    case 2:   
                klip2.gotoAndPlay(2);
        break ;   
    case 3:   
                klip3.gotoAndPlay(2);
        break ;
        case 4:   
                klip4.gotoAndPlay(2);
        break ;
        case 5:   
                klip5.gotoAndPlay(2);
        break ;
        case 6:   
                klip6.gotoAndPlay(2);
        break ;
        case 7:   
                klip7.gotoAndPlay(2);
        break ;
        case 8:   
                klip8.gotoAndPlay(2);
        break ;       
    default:
        trace ("Jesli to widzisz, to koniec swiata") ;
    }


zrezygnował bym tez z random(). (mimo ze oczywiście działa). Poniżej powód.

random() - jest funkcją globalną i została zdeprecjonowana od flash 8, Jako, że wtedy wszystko stało sie bardziej obiektowe. Nowy random został dodany jako metoda klasy math, tak jak tego uzyłem powyżej. math.random niedziała w taki sam sposob jak random() czego można by było sie spodziewać, zamiast zwracać liczby całkowite uznano że będzie bardziej uniwersalnie gdy będzie zwracał liczby zmiennoprzecinkowe od 0 do 1. Dlatego idealnym ekwiwalentem dla
random(9) jest Math.floor(Math.random()*9);
Do rzeczy, random() może pewnego dnia poprostu przestać istnieć jako funkcja w zasobach flashplayera i przestanie poprostu działać zmuszając nas do edytowania jakiegos tam swi sprzed miesięcy albo gorzej.

Powyzszy przykład ze switch() jest czysto akademicki, ta składnia najlepiej nadaje sie do switchowania wartości stringowych. W zyciowych warunkach uzył bym jednej lini do odpalenia losowego klipa.

Kod:
this["klip"+losuj].gotoAndPlay(2)
 
     
Piotrek 
Doradca



Pomógł: 4 razy
Wiek: 40
Dołączył: 01 Sie 2006
Posty: 69
Skąd: Krakow
Wysłany: Pią 29 Sty, 2010 06:51   

Obydwu kolegom dziękuję za pomoc i szybką reakcję. :)

A tak na marginesie nie wiecie może co adobe nawywijało z ostatnią wtyczką do flasha?
A może ja coś robie nie tak, albo soft na dwóch pc mi się rozleciał :? .

Akcja jest taka, że robie movie clip w pierwszej klatce stop, i jedyny obiekt w niej jaki jest remove, w drugiej klatce daje najprostszy fade in. W pierwszej klatce sceny daje on frame 1 go to and play movie clip frame 2... efekt taki, że odpala się movie clip aczkolwiek zostaje animacja w 2 klatce i nie chce dalej. W przypadku w którym pomogliście obszedłem sprawę poprzez visible. Ale tak jeszcze podaje plika z tym co się dzieje z pytaniem czy u Was tak samo?
 
     
eden
Ekspert


Pomógł: 35 razy
Dołączył: 04 Sty 2008
Posty: 265
Skąd: warsaw
Wysłany: Pią 29 Sty, 2010 15:12   

to dość popularny problem, jego przyczyn jest kilka. W twoim przypadku jest to zbyt szybkie wywołanie gotoandPlay. Jak dasz to na klatke 2 a na 3 dasz stop; to pewnie zadziała. Dokładnie niewiem czemu tak się dzieje, prawdopodobnie ma to związek z budowaniem obiektów podczas runtime-u)
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


Powered by phpBB modified by Przemo © 2003 phpBB Group
Nowe zasady dotyczące cookies. Wykorzystujemy pliki cookies, aby nasz serwis lepiej spełniał Państwa oczekiwania. Można zablokować zapisywanie cookies, zmieniając ustawienia przeglądarki.
         
Strona wygenerowana w 0.1 sekundy. Zapytań do SQL: 11