Autor Zpráva
zaxa
Profil
Když mám ve flashi nějaké tlačítko - řekněme "tlačítko1" - je to button, a mám vytvořený mc - řekněme "clip1" (bude jich více, asi 14)
a potřebuju aby mi každé tlačítko spustilo konkrétní animaci(tedy mc), kam mám vložit skript pro spuštění animace?
A jak by měl vypadat? Zkoušela jsem snad všechno co mě napadlo, ale nic nefunguje jak bych si přála.
Chtěla bych mít na obrazovce dva sloupce - 7+7 malých náhledů na obrázky na bokách, a každý z těch náhledů je jedno tlačítko.
Při kliknutí (nebo jen rollover - to je už jedno) bych chtěla aby se uprostřed mezi těmi sloupci náhledů otevřel obrázek ve větším ( pomocí animace-že se třeba zvětší, nebo "odprůhlední", nebo přijede...)
Potřebuju teda aby při spuštění flashe všechny animace stály, spustila se vždy jen ta jedna správná kterou kliknutím aktivuji, jednou se přehrála a zůstala stát až do té doby, než opustím myší tlačítko a přejedu někam jinam.
Myslím, že by to mělo být asi takhle:

tlačítko1.onRollOver = function () {

clip1.play ();

};

tlačítko1.onRollOut = function () {

clip1.gotoAndStop (1);

};

nevím ale kam ten skript vložit - na tlačítko? na clip? na první snímek? nebo kam?
a kam mám vůbec vložit ten clip? na osu, nebo jen do knihovny?
už to motám všechno dohromady, zkoušim i nesmysly a pořád to nefunguje jak bych chtěla.
Díky za každou radu
dredie
Profil *
veskery skript, pokud to jde, centralizuj na snimek 1 hlavni casove osy, kdyz skript rozhazis na tlacitka a instance klipu, nikdo jiny se v tom nikdy nevyzna a ty za par tydnu uz taky ne. Tudiz:

1. udelej si ty animace (klipy) jako symboly, vsem z nich dej na prvni snimek jejich timeline akci stop(); (stop je jedna zvyjimek, ktera se z pravidla dava na casove osy jednotlivych klipu)

2. symboly umisti na scenu na hlavni casove ose, dej kazdymu unikatni instance name (v panelu properties), dejme tomu, ze jsou pojmenovane myMcl1, myMcl2.....

3. udelej si tlacitka bud jako movie clipy (flexibilnejsi nez buttony, v tomhle pripade opet musis napsat stop() akce na prvni snimek kazdeho klipu) nebo buttony, nasazej je na scenu a dej jim instance name, dejme tomu ze je to myBtn1, myBtn2.....

4. na prvni snimek main timeline nadatlujes skript:

myBtn1.onRollOver = function () {
this._parent.myMcl1.gotoAndPlay(1);
}
myBtn.onRollOut = function () {
this._parent.myMcl2.gotoAndPlay(10);
}

tento skript predpoklada, ze pocatecni snimky pro animace jsou 1 a 10 a ze jak animace tak tlacitka jsou pouze na hlavni casove ose. Pouziti this._parent je relativni cesta - this oznacuje casovou osu toho symbolu, na na ktery se odkazujes (ve skriptu vyse tedy this poukazuje na casovou osu myBtn1), ._parent pak nadrazenou casovou osu, coz je v tomto pripade hlavni casova osa (to sane jako _root). Kdybys to cele vnorila do jednoho dalsiho symbolu, bude to pak cesta k casove ose tohoto symbolu. Pouzivani relativnich cest patri k dobremu skripterskemu zvyku a navic to dopomaha konzistentosti skriptu pri dynamickem nacitani jinych souboru etc. Nicmene muzes pouzit i aboslutni cesty (_root.myMcl1), je to jednodussi, ale zradnejsi.

Osobne bych jeste doporucil v gotoAndPlay pouzivat misto explictniho urceni cisla snimku popisy snimku (pridas je v dane casove ose v panelu properites -> frame label) - je to opet dobry zvyk hlavne z toho duvodu, ze kdyz predelavas animace a treba zmenis pocet snimku, nemusis prepisovat skript na rollOver a rollOut.

tak a ted doufam ze jsem sem nenapsal nejaky kraviny :)

D.
XXX
Profil
trosicku bych poupravil radu cislo 1. od dredie ,kterou vyse poznamenal dredie. teoreticky bude skript o par znaku delsi, ale jeste elegantnejsi, nez do kazdeho MovieClipu davat na prvni snimek akci stop, je nastavit tohle vsechno jen primo na prni snimek hlavni casove osy, a sice napr. movieClip1_mc.stop(); atd... krome toho, ze tak bude veskery skript jen v jednom jedinem snimku je jako dalsi a daleko vetsi vyhoda to, ze se casto stava, ze se dany movieClip nema prehrat az po kliknuti na "neco" a skoncit zase na prvnim snimku, ale ma se animace provadet porad dokola, dokud se neco zase neprovede. V pripade akce stop(); na prvnim snimku se tohle nestane a animace probehne jen jednou. Z tohoto duvodu je lepsi vse ridit z hlavni casove osy, i kdyz jsou pripady, zvlaste u slozitejsich animaci, kdy je urcity skript primo v danem movieClipu vhodny, ovsem tenhle pripad mezi ne nepatri ;)
zaxa
Profil
Děkuju moc, vyzkoušim to a pak dám vědět jak to dopadlo.
Ještě mě napadla jedna věc na kterou se zeptat.
Když mám na pozadí obrázek, a chtěla bych aby se nad ním objevil jiný. Nechci ale aby přijel, nebo se zvětšil, nebo tak něco.Chci aby byl jako průhledný a pozvolna se vybarvil.
Jak to udělat co nejjednodušeji? nějak přes masku?
A nebo jde udělat shape tween jakoby z prázdného čtverce bez výplně až do konečné fotky?
Kdyby bylo pozadí prázdné - bílé, tak bych asi udělala shape z bílého čtverce až na fotku, ale jde to když je tam tmavý obrázek na pozadí?
Fakticky nevím - nezkoušela jsem to, napadlo mě to teď jak Vám píšu. Taky doufám, že to není nějaká kravina :-)
dredie
Profil *
XXX jo mas pravdu zapomnel jsem ze neloaduje externe, uz z tech skriptu magorim :D


zaxa: no to pozadi udelas jako movie clip a v nem pomoci motion tween naanimujes pruhlednost...

D.
Toto téma je uzamčeno. Odpověď nelze zaslat.