Flash Gallery | Flash Templates | Flash Menu | Flash Design | Flash Audio & Video

Video Corsi Actionscript 3.0


+ Reply to Thread
Results 1 to 7 of 7

Thread: Prima Classe (perchè non utilizzate mai la costruttrice?)

  1. #1
    Member Flash Addict nuovobuio is on a distinguished road
    Join Date
    Jul 2009
    Posts
    99
    Rep Power
    2

    Exclamation Prima Classe (perchè non utilizzate mai la costruttrice?)

    flash templates
    Notte ragazzi, tramite i tutorial di Flep, sto cercando di capire il funzionamento delle classi, ho messo su una prima classe, che dovrebbe rappresentare il punto di partenza di ogni nuovo lavoro, un fluido, un movieclip e un nuovo elemento nel menu del tasto destro.

    Ho fatto bene? Vedete qualcosa di sbagliato? Perchè in quasi tutti i vostri esempi, la funzione costruttrice è quasi vuota?
    Preferite utilizzare una "init" privata e non la public principale, per attivare tutto il codice, non capisco perchè, è un errore il mio?

    PHP Code:
    package codice
    {
        
    import flash.display.*;
        
    import flash.events.*;
        
    import flash.net.*;
        
    import flash.ui.*;

        public class 
    Main extends MovieClip
        
    {

            private var 
    numero:Number 8;
            private var 
    coloreUno:Number 0xf1f5fa;
            private var 
    coloreDue:Number 0x00FF00;
            private var 
    mc:MovieClip;


            public function 
    Main()
            {
                
    stage.scaleMode StageScaleMode.NO_SCALE;
                
    stage.align StageAlign.TOP_LEFT;
                
    stage.addEventListener(Event.RESIZE,funzioneResize);
                
    initMenu();
                
    init();
                
    funzioneResize(null);
            }

            private function 
    init():void
            
    {

                
    mc = new MovieClip  ;
                
    mc.graphics.beginFill(coloreDue,1);
                
    mc.graphics.drawRect(0,0,100,100);
                
    addChild(mc);
            }

            private function 
    initMenu():void
            
    {
                var 
    etichetta:String "Nuova Etichetta";
                var 
    nuovoMenu:ContextMenu = new ContextMenu  ;
                var 
    item:ContextMenuItem = new ContextMenuItem(etichetta);
                
    nuovoMenu.hideBuiltInItems();
                
    nuovoMenu.customItems.push(item);
                
    item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,nuovoItem);
                
    this.contextMenu nuovoMenu;
            }

            private function 
    nuovoItem(event:ContextMenuEvent):void
            
    {
                var 
    url:String "http://www.google.com/";
                var 
    request:URLRequest = new URLRequest(url);
                
    navigateToURL(request,'_parent');
            }

            private function 
    funzioneResize(event:Event):void
            
    {

                var 
    sw:Number stage.stageWidth;
                var 
    sh:Number stage.stageHeight;
                
    mc.sw mc.width 2;
                
    mc.sh mc.height 2;

            }
        }


  2. #2
    Member Flash Addict nuovobuio is on a distinguished road
    Join Date
    Jul 2009
    Posts
    99
    Rep Power
    2

    Re: Prima Classe (perchè non utilizzate mai la costruttrice?)

    ho fatto la mia ennesima domanda scema?

  3. #3
    Member Flash Addict nuovobuio is on a distinguished road
    Join Date
    Jul 2009
    Posts
    99
    Rep Power
    2

    Re: Prima Classe (perchè non utilizzate mai la costruttrice?)

    ecco, voi avreste fatto così, utilizzando la costruttrice solo per attivare la funzione di inizializzazione.

    Perchè non inizializzate direttamente dalla costruttrice?

    PHP Code:
    package codice
    {

        
    import flash.display.*;
        
    import flash.display.StageAlign;
        
    import flash.display.StageScaleMode;
        
    import flash.events.*;
        
    import flash.net.*;
        
    import flash.ui.*;

        public class 
    Main extends MovieClip
        
    {
            private var 
    numero:Number 8;
            private var 
    coloreUno:uint 0xf1f5fa;
            private var 
    coloreDue:uint 0x00FF00;
            private var 
    mc:MovieClip;

            public function 
    Main()
            {
                
    init();
            }
            private function 
    init():void
            
    {
                
    stage.align StageAlign.TOP_LEFT;
                
    stage.scaleMode StageScaleMode.NO_SCALE;
                
    stage.addEventListener(Event.RESIZEonResize);

                
    mc = new MovieClip  ;
                
    mc.graphics.beginFill(coloreDue,1);
                
    mc.graphics.drawRect(0,0,100,100);
                
    addChild(mc);

                
    onResize(null);
                
    initMenu();
            }

            private function 
    initMenu():void
            
    {
                var 
    etichetta:String "Nuova Etichetta";
                var 
    nuovoMenu:ContextMenu = new ContextMenu  ;
                var 
    item:ContextMenuItem = new ContextMenuItem(etichetta);
                
    nuovoMenu.hideBuiltInItems();
                
    nuovoMenu.customItems.push(item);
                
    item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,nuovoItem);
                
    this.contextMenu nuovoMenu;
            }

            private function 
    nuovoItem(event:ContextMenuEvent):void
            
    {
                var 
    url:String "http://www.google.com/";
                var 
    request:URLRequest = new URLRequest(url);
                
    navigateToURL(request,'_parent');
            }

            private function 
    onResize(event:Event):void
            
    {
                var 
    sw:Number stage.stageWidth;
                var 
    sh:Number stage.stageHeight;

                
    mc.sw mc.width 2;
                
    mc.sh mc.height 2;
            }
        }


  4. #4
    Member Flash Addict nuovobuio is on a distinguished road
    Join Date
    Jul 2009
    Posts
    99
    Rep Power
    2

    Re: Prima Classe (perchè non utilizzate mai la costruttrice?)

    come non detto -.-

  5. #5
    Junior Member Settled In Golden is on a distinguished road
    Join Date
    Jul 2010
    Posts
    1
    Rep Power
    0

    Re: Prima Classe (perchè non utilizzate mai la costruttrice?)

    Penso che sia per una questione di chiarezza.
    Ad esempio si inizializzano le varie parti in sequenza come segue (evitando richiami annidati come hai fatto tu):

    Code:
     
    ...
    public function Main()
    {
        init();
        initMenu();
    }
    ...
    In questo modo il codice è più leggibile con tutti i benefici che ciò comporta. Quindi è corretto anche come fai tu ma meno leggibile.
    Spero di avere chiarito il tuo dubbio

    Ciao,
    Davide

  6. #6
    Member Flash Addict nuovobuio is on a distinguished road
    Join Date
    Jul 2009
    Posts
    99
    Rep Power
    2

    Re: Prima Classe (perchè non utilizzate mai la costruttrice?)

    Ti ringrazio Davide, ho capito.

    Usate la costruttrice come una sorta di indice di un libro, chiarissimo! In effetti è molto più leggibile così..

    Sembrava una scemenza ma io non me lo spiegavo e volevo capire

    Grazie mille

  7. #7
    Member Flash Addict nuovobuio is on a distinguished road
    Join Date
    Jul 2009
    Posts
    99
    Rep Power
    2

    Re: Prima Classe (perchè non utilizzate mai la costruttrice?)

    Ciao Davide, sono sempre io e sempre con lo stesso dubbio.

    Seguendo il tuo ragionamento, quindi utilizzando la costruttrice come una sorta di indice senza annidare le chiamate alle varie funzioni, mi ritroverei a non poter gestire gli eventi, no?

    Metti il caso che dalla costruttrice faccio partire un parsing(), al complete, con i dati caricati, mi chiamo la funzione esempio(), funzione, che non funzionerebbe prima, senza i dati caricati e analizzati dal parser, quindi mi troverei costretto ad annidare la chiamata esempio() al complete del parsing().

    Da vedere è brutto, e poco pulito, c'è qualche trucco, qualche metodo che voi utilizzate? Come fate a non annidare una chiamata?! Io non ci riesco proprio, ma voglio farlo!!

+ Reply to Thread

Similar Threads

  1. Movieclip che non cambiano colore.. perchè?
    By xeninweb in forum Video corsi
    Replies: 5
    Last Post: 23-11-09, 06:35
  2. il colorpicker scompare se il wmode è transparent, perchè?
    By nextframe in forum Actionscript 3.0 base
    Replies: 5
    Last Post: 24-03-09, 12:15
  3. Aiutooo non capisco perchè...
    By lionwar in forum Actionscript 3.0 base
    Replies: 4
    Last Post: 01-04-08, 10:47
  4. prima l'interfaccia o prima il codice delle logiche?
    By nootropic.kint in forum Flash CS3 Design
    Replies: 3
    Last Post: 23-11-07, 12:19
  5. Perchè non usare stage.addChild(myMovieClip) ???
    By nextpaco in forum Actionscript 3.0 avanzato
    Replies: 3
    Last Post: 14-11-07, 11:34

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts