Akcija na dugmetu - pomoc

1

Akcija na dugmetu - pomoc

offline
  • Pridružio: 06 Sep 2008
  • Poruke: 150
  • Gde živiš: Obrenovac

Znam da je za vas majstore flasha ovo trivijalno pitanje, ali meni treba pomoc.
Ovako: Pravim jedan flash, imam recimo 5 layera u njemu, u svakom layeru je po nesto. U jednom nekoliko slika, u drugom nekoliko tekstova, u trecem movie clip i tako dalje. Svaki layer ima samo jedan frame u kojem je sve ovo.
Ja bih sada zeleo 5 dugmeta on/off koji ce u startu biti svi "on". Klikom na jedno dugme, ono treba da promeni izgled u "off" i da iskljuci vidljivost celog layera na koji se odnosi. Sledeci klik da radi suprotno: da promeni izgled dugmeta u "on" i da sve u layeru na koji se odnosi ponovo postane vidljivo.

Hteo bih otprilike da ta dugmad funkcionisu kao ono oko u .fla dokumentu.
Kad kliknem na to oko ono postane "precrtano oko" i ceo layer postane nevidljiv.
Obicno dugme znam da napravim, cak i da mu ubacim poneke akcije, ali ovo mi nikako ne uspeva.

Hvala unapred...



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 19 Maj 2005
  • Poruke: 5224
  • Gde živiš: Oslo

AS2.0

kod u frame 1:
stop(); var kliknuto:Boolean; dugme.onRelease=function(){               if(!kliknuto){                     this.gotoAndStop(2);           gotoAndStop(2);           kliknuto=true; }else{            this.gotoAndStop(1);            gotoAndStop(1);           kliknuto=false; } }

u frame 2 stavi samo:

stop();


Dugme napravi da bude movieClip. Dupli klik na njega. U dugmetovoj vremenskoj liniji napravi jos jedan key frame. U njega stavi sliku precrtanog dugmeta ili sta vec zelis. Upisi stop(); na oba ova "unutrasnja" key frame-a.

Na glavnoj vremenskoj liniji dodaj jos po jedan frejm (prazan key frame za svaki layer) i napravi kako hoces da ti scena izgleda kad se sve skloni sa nje.
Dugme neka zauzima oba frejma, i 1 i 2.
Dugmetu daj ime: dugme (u properties).



offline
  • Pridružio: 06 Sep 2008
  • Poruke: 150
  • Gde živiš: Obrenovac

Hvala Tamtitam. tvoje resenje radi izvanredno, ali ipak nije ono sto sam ja zeleo. Ili mozda nisam sve uradio kako treba. Najbolje da budem konkretan:

Pravim plan grada u flashu, i do sada sam uradio ovako:
- layer1 - nacrtao sam ulice, reke i obojio pozadinu i to je osnova koja se uvek vidi.
- layer2 - napisao nazive ulica i naselja
- layer3 - nacrtao semafore i obelezio jednosmerne ulice
- layer4 - nacrtao i obelezio najznacajnije objekte grada
- layer5 - postavio ikonice sa kojih se otvaraju fotografije grada
- layer6 - nacrtao koordinatnu mrezu
- layer7 - nisam jos nacrtao, ali planiram da ubacim linije gradskog prevoza i gradske autobuske stanice.

E sada, ovakav plan grada moze da bude veoma pretrpan. Zato ja zelim da onaj ko gleda plan moze da izabere sta ce se videti. Tako na primer, layer1 ce biti stalno vidljiv, jedan korisnik zeli da vidi samo nazive ulica i koordinatnu mrezu, drugi zeli samo semafore i znacajne objekte, treci zeli objekte i fotografije, cetvrti samo objekte i linije gradskog prevoza i tako dalje. U startu bi sve bilo vidljivo, a posetilac bi po potrebi iskljucio ono sto mu smeta, po potrebi ponovo ga ukljucio, a iskljucio nesto drugo i tako dalje.

Znaci, sve kombinacije trebaju biti u opticaju. Da li je ovako nesto uopste moguce?

Pozdrav...

offline
  • lnenad  Male
  • Stručni saradnik
    Web
  • Nenad
  • Arhitetak
  • Pridružio: 16 Jan 2007
  • Poruke: 2860
  • Gde živiš: Bijeljina

AS 2.0 (kopiram moga gurua tj. Tamtitam:))

stop(); var kliknuto:Boolean; dugme.onRelease=function(){               if(!kliknuto){          _root.mc_imelayera._visible = true;           kliknuto=true; }else{          _root.mc_imelayera._visible = false;           kliknuto=false; } }

E sad ovo je sa glave mrsko mi da testiram ispravi me Tamti ako ne valja Smile

offline
  • Pridružio: 19 Maj 2005
  • Poruke: 5224
  • Gde živiš: Oslo

...iliti 'gurka' u zenskom rodu Mr. Green

Inenade, to resenje je skroz u redu, samo jedno kratko dodatno objasnjenje:
mc_imelayera mora biti movieClip koji ce sadrzati sve elemente sa jednog layera. Dakle, ne mozes sam layer da ucinis nevidljivim, ali mozes sve sto se na njemu nalazi da "upakujes" u jedan movieClip, da taj movieClip nazoves mc_imelayera u properties i da to ime posle koristis u toj
mc_imelayera._visible = true;
naredbi.
Ovo ponovis za svaki layer ili ako imas volje, sve odradis kroz array dugmadi i layera.

offline
  • Pridružio: 06 Sep 2008
  • Poruke: 150
  • Gde živiš: Obrenovac

Hvala oboma na trudu. Tek danas sam stigao da isprobam ovo po vasim savetima. Skoro da sam uspeo....

Nesto nisam dobro uradio, pa nisam dobio rezultat kakav sam zeleo.

Ovako: U posebnom layeru, koji sam nazvao "on/off" sam napravio dugme-obican zeleni kruzic i pretvorio ga u movie clip. Unutar njega sam u prvi frame napisao kod stop();, a u drugi frame takodje samo sto je sada crveni kruzic. Na glavnoj sceni u layeru "on/off" uneo sam kod koji je napisao Inenad. Sve elemente layera koji se zove "mreza" pretvorio sam u movie clip koji sam nazvao "mc_mreza".

Kada se pokrene swf na prvi klik se ne desava nista. Od drugog klika pa na dalje dugme iskljucuje i ukljucuje vidljivost movie clipa mc_mreza, ali dugme stalno ostaje zeleno.

Gde sam pogresio???

Pozdrav...

offline
  • Pridružio: 19 Maj 2005
  • Poruke: 5224
  • Gde živiš: Oslo

Fali ti mozda
this.gotoAndStop(2); u prvom delu "if" upita (pomera dugmetov frejm na 2.)
i
this.gotoAndStop(1); (vraca ga nazad)
u "else" delu.

Inace, cini se da je greska u logici, promeni if(!kliknuto) u if(kliknuto) pa testiraj.

offline
  • Pridružio: 06 Sep 2008
  • Poruke: 150
  • Gde živiš: Obrenovac

Evo opet mene i evo opet skoro da sam uspeo. Juce sam probao, eksperimentisao, patio se.... Tacno je da mi je falilo ono "this.gotoAndStop" zbog cega dugme nije htelo da pocrveni. Ali, ako je inenad napisao kod bez toga, a Tamtitam podvrdila da je to skroz u redu, sta ja sad tu smem da cackam? Very Happy
Dosao sam do toga da kod mora da izgleda ovako:stop(); var kliknuto:Boolean; dugme.onRelease=function(){               if(!kliknuto){          this.gotoAndStop(2);        _root.mc_koordinate._visible = false;           kliknuto=true; }else{          this.gotoAndStop(1);        _root.mc_koordinate._visible = true;           kliknuto=false; } }Nijedna druga kombinacija true i false ne radi kako treba. Ovo radi savrseno.
Ali radi savrseno kada je samo jedno dugme u pitanju. Po istom principu sam nacrtatao i ubacio jos dugmadi. I svako dugme samo za sebe radi to sto treba da radi.
E, sad.... prvi klik na bilo koje dugme radi kako treba. Ako posle jednog klika na neko dugme kliknem na neko drugo, ono ne reaguje na prvi klik, vec na drugi. I na drugi klik uradi to sto treba. Eksperimentisao sam sa brisanjem stop naredbi u svom kodovima, menjao gotoAndStop u gotoAndPlay, ali nisam uspeo ovo da izbegnem.

Nije ovo preveliki problem, jer ce onaj koji koristi ovaj flash pomisliti da prvi put nije kliknuo kako treba, kliknuce opet i uradice to sto je zeleo Very Happy Very Happy Very Happy Ali ipak, moze li i ovo da se popravi.

Pozdrav . . .

offline
  • lnenad  Male
  • Stručni saradnik
    Web
  • Nenad
  • Arhitetak
  • Pridružio: 16 Jan 2007
  • Poruke: 2860
  • Gde živiš: Bijeljina

Da bih ti olaksali najbolje bi ti bilo da uploadujes negdje fla pa da ga postavis ovdje.

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Probaj ovako...
(ovo [Bindable] ima u Flex-u, za flesh ne znam, ali mislim da je poneta u tome sto niko ne zna da se varijabla promenila.

Probaj prvo ovo:

[Bindable] var kliknuto:Boolean = false; //malo otimizacije code-a dugme.onRelease=function()  {       if(!kliknuto)       {          this.gotoAndStop(2);        _root.mc_koordinate._visible = kliknuto;          }      else     {         this.gotoAndStop(1);        _root.mc_koordinate._visible = kliknuto;      }   kliknuto = !kliknuto; }

Ukoliko [Bindable] ne radi, moraces da napravis setter i getter za kliknuto. Samo kada je setter namesten, event je poslat da se varijabla promenila.

Ko je trenutno na forumu
 

Ukupno su 1293 korisnika na forumu :: 53 registrovanih, 7 sakrivenih i 1233 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, _Petar, Aleksandar Tomić, aramis s, Atomski čoban, bokisha253, brundo65, BSD, dane007, darkangel, delrey, DPera, Excalibur13, flash12, Frunze, gmlale, HrcAk47, Istman, ivica976, JOntra, jukeboxer, Koridor, Krusarac, kunktator, ljuba, LUDI, Marko Marković, MILICAT, Ne doznajem se u oružje, Nemanja.M, nemkea71, novator, nuke92, oldtimer, ozzy, pacika, pein, repac, robert1979, rovac, Sirius, SR-3m, stegonosa, Toper, vladaa012, vladulns, vobo, voja64, wizzardone, Wrangler, yufighter, zixmix, šumar bk2