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
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) |
|
|
|
 |
|