Dobrodošli, goste ( Prijava | Registracija )

 
Reply to this topicStart new topic

OOP Help, AS3 OOP Problemi

V
jossaric
poruka Jul 1 2011, 16:18
Poruka #1




Grupa: Članovi
Poruke: 247
Datum reg.: 23-August 07
Lokacija: Mostar
Član broj: 13,637



Dakle, imam problem, radim svoju prvu oop stranicu i malo me grebe logika.

napravio sam Main klasu i u packageu sam radio ostale klase.
Koristim SWFAddress i problem je ovaj.

imam klasu za meni i klasu za dugme.

u dugme klasi su samo definirani event listeneri i pripadajuće funkcije

CODE
package com.jossaric{
    import flash.display.MovieClip;
    import flash.events.MouseEvent;    
    import com.greensock.*;
    
    public class RestoBut extends MovieClip{

        public function RestoBut() {
            var rb:MovieClip = this as MovieClip;
            rb.mouseChildren = false;
            rb.buttonMode = true;
            
            rb.addEventListener(MouseEvent.MOUSE_OVER, restoButOver);
            rb.addEventListener(MouseEvent.MOUSE_OUT, restoButOut);
            rb.addEventListener(MouseEvent.CLICK, restoButClick);
        }
        
        private function restoButOver(e:MouseEvent):void{
            TweenMax.to(e.target.bg, .3, {tint:0x333333});
        }
        private function restoButOut(e:MouseEvent):void{
            TweenMax.to(e.target.bg, .3, {tint:null});
        }
        private function restoButClick(e:MouseEvent):void{    
            var t:String = e.target.name.substr(2);
            Main.setAddress(t);
        }
    }
    
}


Svako dugme sa ovakvom klasom je dodano u meni klasu. Kao što vidite ovdje ja prosljeđujem varijablu (dio imena koji je u biti id) u main klasu i tamo želim da prema tome označim i disejblam odnosno odznačim i enablam određenu dugmad.

Funkcija kojom želim da označavam dugmad u meniju nalazi se u Main klasi i glasi

CODE
public static function markRestoNav(list:XMLList, mc:MovieClip):void{
            for(var i:uint = 0; i<list.length(); i++) {
                var bt:MovieClip = mc.getChildByName('bt' + i) as MovieClip;
                trace(bt);
            }
        }



a pokrećem je iz main klase iz change address handlera sa

CODE
if(_xml != null && t1 != null) {
                var rm:MovieClip = getChildByName('restoMenu') as MovieClip;
                RestoMenu.markRestoNav(_xml, rm);
            }


i trejsuje mi bt kao null, pokušao sam na razne načine no očito imam rupu u logici.
Go to the top of the page
 
+Quote Post
the
poruka Jul 2 2011, 13:27
Poruka #2


određeni član

Grupa: Urednici
Poruke: 2,628
Datum reg.: 6-February 05
Lokacija: orion
Član broj: 227



baš grebe... smile.gif

kao što i sam vidiš, ovo ne radi a pritom je i komplikovano.
lepo u main klasi postavi listener na custom event PRITISO_DUGMENCE, a u button klasi dispečuj taj isti event, i stvar je rešena...
u Main klasi ćeš lako išlitati sve "id" parametre button-a, bez potrebe da prenosiš informacije tamo-amo.

.getChildBy... je as2 logika.

ne znam šta je konkretan problem u slučaju tvog koda, ali svakako promeni koncept.
Go to the top of the page
 
+Quote Post
iki_xx
poruka Jul 2 2011, 14:39
Poruka #3




Grupa: Članovi
Poruke: 788
Datum reg.: 28-June 05
Lokacija: Novi Sad
Član broj: 1,078



Kao sto the rece, zakomplikovao si logiku.
Ako vec neces da menjas kod, probaj :
- da trejsujes taj mc sto treba da ima bt
- probaj da tresujes hard coded bt.
- koristi http://demonsterdebugger.com/ da vidis kako izlgeda display lista @ runtime.
Go to the top of the page
 
+Quote Post
jossaric
poruka Jul 5 2011, 14:05
Poruka #4




Grupa: Članovi
Poruke: 247
Datum reg.: 23-August 07
Lokacija: Mostar
Član broj: 13,637



Da, ja baš želim da mijenjam kod. Dakle nije dobro da radim po as2 logici jer naravno želim napredovati tako da ću se potruditi da uradim ovo jednostavnije. Pokušat ću da riješim ovo kako the kaže pa se javim za help ako zapnem opet da mi ispravite smjer.

Tnx.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic

 



Lo-fi verzija Trenutno vreme: Saturday 18. May 2013 - 12:32

Sve informacije (poruke, teme i sl.) predstavljaju stavove samo njihovih autora.
Objavljivanje informacija sa sajta u nekomercijalne svrhe moguće je samo uz navođenje URL adrese diskusije.
Za sve druge vidove distribucije potrebno je imati izričitu dozvolu administratora Dizajn Zone i/ili autora poruka.
Autorska prava za sadržaj poruke zadržava njihov autor, osim ako nije drugačije naznačeno.

powered by:Plus hosting