Akcija na dugmetu - pomoc

2

Akcija na dugmetu - pomoc

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

Da, sve je to bilo prilagodjeno za samo jedno dugme i jedan movieClip, zato nastaje guzva.

@beli
na zalost, nema bindable, ali u pravu si da u tome lezi problem. 'kliknuto' je zajednicko za svu dugmad i ako imamo vise dugmadi na sceni, ta jadna promenljiva ce se potpuno pogubiti.
Jednostavno receno- ne zna kome pripada...

E sad, ono sto si hteo sa bindable da uradis, mozemo postici sa uvodjenjem klase Dugme.

Na sceni imamo 3 movieClipa. Recimo da se zovu crveno, zeleno i zuto. Ta imena im damo i u properties. (naravno da mozes imati milion klipova, ne igra nikakvu ulogu)
Na sceni leze ,takodje, za svaki klip, tri odgovarajuca dugmeta (sa sve po dva frejma u njima kao i nasa prethodna dugmad).

Ovo je novo: klikni na svako dugme u library, desni klik->linkage ->zatim "ostriklaj" "export for ActionScript".
Pod class upisi Dugme- to je ime klase koju cemo da napisemo.

Idemo na new->ActionScript file (sad pisemo klasu ne .fla!)i tu, u nasu novu klasu, unesemo kod koji je zajednicki za svu dugmad (beli, hvala na poboljsanju koda!) :

class Dugme extends MovieClip {     public var kliknuto:Boolean;     public function Dugme(){        this.kliknuto=false;    this.onRelease=function(){              if(!kliknuto)       {          this.gotoAndStop(2);               }      else     {         this.gotoAndStop(1);              }   this.mc_koordinate._visible = this.kliknuto;   this.kliknuto = !this.kliknuto;  } } }

Ovo je , kao sto vidis, to sto nam je radilo posao do sada a nalazilo se u samom fla.
Sta smo postigli? Da svako dugme ima svoj sopstveni argument "kliknuto" te nece doci do brljanja sta je on a sta je off.

Nas .fla fajl vise nema onaj kod u sebi, ali sada moramo da vezemo svako dugme za odgovarajuci movieClip.
Udji u recimo, zeleno dugme. U prvom frejmu treba da stoji
stop(); _root.zeleno._visible=true; //zeleno je ime movieClipa kojim ovo dugme "upravlja"

a u drugom frejmu:
stop(); _root.zeleno._visible=false;

Ukoliko hoces da ti u startu sve bude nevidljivo, a da se pojavi kad kliknes, onda samo zameni "true" za false" i obrnuto.

You've got the idea... tako uradis za svaki par dugme-movieClip.
E sad, sacuvaj klasu pod imenom Dugme i svoj fla u isti direktorijum.

Ako nesto nisi uradio kako treba, proveri na primeru:


https://www.mycity.rs/must-login.png
https://www.mycity.rs/must-login.png

Na kraju treba samo da svoje klipove zamenis sa zutim, crvenim i zelemin klipom. Klasa ostaje ista.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

pa mozda je uvodjenje klase malo preterano za tako jednostabnu operaciju..
Ako nema bindable, kao sto kazes, setter i getter su jednostavnije varijante:

private var _kliknuto:Boolean; public function set kliknuto(value:Boolean):void {  _kliknuto = value;  // ovde automatski ide dispatch eventa koji obavestava sve da se vrednost promenila } public function get kliknuto():Boolean {  return _kliknuto; }



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

Hmmm. Ne bi trebalo da se plasimo klasa... I MovieClip je klasa koju koristimo naveliko- samo sto ju je neko drugi napisao Wink

Gledam tvoje resenje pa mi treba samo malo objasnjenje kako set i get rade posao u ovom slucaju. Ako imas 500 dugmadi na sceni od kojih je 250 on a 250 off... sta je onda vrednost za "kliknuto" ako ne pripada ni jednom objektu?

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

a, pa to se onda ne radi tako. Kako je bilo postavljeno na pocetku, iz code-a se videlo da je zadatak samo da se setuje varijabla za on i off jednog digmeta.

Ako pak ima gomila dugmeta, trebala bi da postoji controller klasa, onako sve lepo "by the book", interfejs koja ona implementira, ili pak singleton controller u zavisnosti kako je aplikacija dizajnirana
.
Zato ja volim da koristim neki framework. Od najboljih izvajam najomrazeniji PureMVC, ali taj nije za male sisteme. Tu bi mozda MVC bio ok.

a setter i getter su jednostavno "property" za setovanje vrednosti. Dobro ih je koristiti jer na setter-u, se odradi bubbled dispatch eventa da je varijabla promenjena, tako da ko god ima vezanu tu varijablu, obavesten je da je vrednost promenjena.

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

@beli
Hehe, and who is scary now? Very Happy
Razjuricemo bre i ovo malo gledalaca ako budemo uvodili i patterne. Mada se potpuno slazem da je opravdano njihovo koriscenje.
Vi profi programeri morate imate malo razumevanje za one koji tek pocinju Razz

Da, problem se razvio sa jednog na vise dugmadi negde u sredini diskusije, no nije vazno. Valjda ce se stogor snaci iz svega sto smo napisali.

PS
BTW, welcome back executor Zagrljaj

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

pa iskreno se nadam da se nece preplashiti.
Nije to strasno uopste. Narocito kad se malo prelistaju knjige, videce se da je lakse tako raditi nego bez. Narocito kada se pravi nesto vise od "test" aplikacije.
Do dushe, stoji cinjenica da se nista ne moze nauciti dok se ne krene sa ozbiljnim stvarima koje generisu ozbiljne probleme.

Nije na odmet procitati Design Patterns, u kom god jeziku se programira.

PS. Thanks, Tamtitam.

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

USPEO SAM!
Hvala vam svima na trudu i pomoci. Priznajem da je ono o cemu je beli pisao za mene spansko selo, ali resenje koje nudi Tamtitam nije puno komplikovano, a sto je najvaznije radi upravo onako kako sam ja u startu zeleo.

Tami carica si! Hvala puno! Samo jos nesto. U kodu koji si ti napisala, tamo pri kraju stoji "this.mc_koordinate._visible = this.kliknuto;". To je ostatak od nekog mog ranijeg koda gde se jedan MovieClip zvao mc_koordinate. Ja sam ga jednostavno izbacio i sve i dalje radi super.

P.S. Vi slobodno nastavite raspravu o onim spanskim selima... Very Happy Very Happy Very Happy

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

Nema na cemu Smile
a ja sam dobila dragocenu akceleraciju, da ne kazem kick in the butt za ovo:
http://www.amazon.com/exec/obidos/tg/detail/-/0596528469/
Wink

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

Eheheh...odlican izbor

Ko je trenutno na forumu
 

Ukupno su 818 korisnika na forumu :: 14 registrovanih, 3 sakrivenih i 801 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: brundo65, comi_pfc, DonRumataEstorski, dragoljub11987, Kenanjoz, Krvava Devetka, mikki jons, novator, radionica1, saputnik plavetnila, sasa76, slonic_tonic, Srle993, wizzardone