Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [AS3] addChild

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929

    [AS3] addChild

    ciao a tutti,
    con questa funzione io vorrei creare una clip contenitore e dentro diverse clip una affianco all'altra, riesco a creare il contenitore (anche se non si centra bene) ma quando aggiungo la clip all'interno del contenitore non funziona, o meglio la clip viene aggiunta ma non al suo interno...
    qualcuno saprebbe darmi una mano?

    grazie

    codice:
    this.addEventListener(Event.ADDED_TO_STAGE,function() { DisegnaMenu(6,0xFF0000,"ciao");});
    
    
    		private function DisegnaMenu(nMenu,colore,testo) {
    			var LarghezzaMenu = (spazioMax-DimLogo)/nMenu;
    			var TotIngombro = LarghezzaMenu*nMenu;
    			var DimStageWidth = stage.stageWidth;
    			var CentraMenu  = (DimStageWidth-TotIngombro)/2;
    			// Creo la clip per contenere il menu
    			var contenitoreMenu:MovieClip = new MovieClip();
    			contenitoreMenu.graphics.lineStyle (5,0xFFFFFF);
    			contenitoreMenu.graphics.drawRect(stage.stageWidth/2-this.width/2,stage.stageHeight/2-this.height/2,TotIngombro, AltezzaMenu);
    			addChild(contenitoreMenu)
    			
    			//Definisco il rettangolo
    			var rettangolo:Shape = new Shape();
    			rettangolo.graphics.lineStyle (1,colore);
    			rettangolo.graphics.beginFill(colore);
    			rettangolo.graphics.drawRect(0,0,LarghezzaMenu, AltezzaMenu);
    			contenitoreMenu.addChild(rettangolo);
    
    		}

  2. #2
    Provato al volo in timeline (levando il listener dell'ADDED_TO_STAGE) e funziona .... secondo me è lì il problema.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    se lo tolgo ricevo questo errore

    codice:
    TypeError: Error #1009: Impossibile accedere a una proprietà o a un metodo di un riferimento oggetto null.
    	at actionlab::MenuMove/DisegnaMenu()
    	at actionlab::MenuMove()
    	at home_fla::MainTimeline/frame2()

  4. #4
    No aspè scusa una cosa, sto codice dove sta? Nella Document Class vè?
    Cioè scritto meglio sarebbe così, no (ovviamente da mettere il package e gli import)?

    codice:
    public class Main extends MovieClip
    {
    	public function Main() 
    	{
    		if (stage) init();
    		else addEventListener(Event.ADDED_TO_STAGE, init);
    	}
    	
    	private function init(e:Event = null):void 
    	{
    		if (e) removeEventListener(Event.ADDED_TO_STAGE, init);
    		
    		DisegnaMenu(6, 0xFF0000, "ciao");
    	}
    	
    	private function DisegnaMenu(nMenu:int, colore:uint, testo:String) 
    	{
    		var LarghezzaMenu = (spazioMax-DimLogo) / nMenu;
    		var TotIngombro = LarghezzaMenu * nMenu;
    		var DimStageWidth = stage.stageWidth;
    		var CentraMenu  = (DimStageWidth-TotIngombro) / 2;
    		// Creo la clip per contenere il menu
    		var contenitoreMenu:MovieClip = new MovieClip();
    		contenitoreMenu.graphics.lineStyle (5, 0xFFFFFF);
    		contenitoreMenu.graphics.drawRect(stage.stageWidth / 2 - this.width / 2, stage.stageHeight / 2 - this.height / 2, TotIngombro, AltezzaMenu);
    		addChild(contenitoreMenu);
    		
    		//Definisco il rettangolo
    		var rettangolo:Shape = new Shape();
    		rettangolo.graphics.lineStyle (1, colore);
    		rettangolo.graphics.beginFill(colore);
    		rettangolo.graphics.drawRect(0, 0, LarghezzaMenu, AltezzaMenu);
    		contenitoreMenu.addChild(rettangolo);
    	}
    
    }

  5. #5
    Ops, ho letto adesso che questa cosa non è nella DC, ma l'hai attaccata ad un clip.
    Cmq poco importa, immagino che ti sei creata una classe per questa clip no?

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    no asp.. adesso ho modificato un pò

    copia questo per prova

    codice:
    package lab{
         
        import flash.display.*; 
        import flash.events.*; 
        import caurina.transitions.*; 
    	
    	
         
        public class MenuMove extends MovieClip { 
    
    		public var spazioMax:Number = 800;
    		public var DimLogo:Number = 190;
    		private var AltezzaMenu:Number = 60;
    		private var DimStage:Number = 0;
    		private var nMenu:Number = 6; // indicare il numero di menu che si vuole realizzare
    		private var rettangolo:Array = ["ABOUT","PHILOSOPHY","COLLECTION","REEL","DOWNLOAD","CONTACT"];  // Testo dei menu
    		private var colore_menu:Array = [0xFF0000,0x0000FF,0xFF00CC,0x06FE06,0x00FFFF,0xFFFF00];  // Colore dei menu
    		private	var margine_sinistro:Number = 92; // Questa variabile setta la distanza di partenza da sinistra dello schermo ed è strattamente legata alla dimensione del logo
            private var lg:MovieClip = new MovieClip(); 
    		
    		
            public function MenuMove(){ 
                this.addEventListener(Event.ADDED_TO_STAGE, centra_logo); 
    			this.addEventListener(Event.ADDED_TO_STAGE,function() { DisegnaMenu();});
    
                 
            }    //fine funzione di classe 
    		
    		private function DisegnaMenu() {
    			var LarghezzaMenu = (spazioMax-DimLogo)/nMenu;
    			// Creo le clip menu
    			for (var i:uint=0; i<nMenu; i++) { 
    				rettangolo[i] = new Sprite(); 
    				rettangolo[i].graphics.lineStyle (1,colore_menu[i]);
    				rettangolo[i].graphics.beginFill(colore_menu[i]);
    				rettangolo[i].graphics.drawRect(0,0,LarghezzaMenu, AltezzaMenu);
    				rettangolo[i].y = stage.stageHeight/2-AltezzaMenu/2;
    				var taglia = nMenu/2;
    				if(i >= taglia){
    					
    					rettangolo[i].x = DimLogo+(margine_sinistro+(LarghezzaMenu+2)*i);
    				}else{
    					rettangolo[i].x = margine_sinistro+(LarghezzaMenu+2)*i;
    				}
    				addChild(rettangolo[i]); 
    				trace(rettangolo[i].name)
    			}
    		}
             
            private function centra_logo(e:Event = null){
                lg=this.parent.getChildByName('logo') as MovieClip;
                lg.x=stage.stageWidth/2-lg.width/2; 
                lg.y=stage.stageHeight/2-lg.height/2; 
            } 
    		
        }    // chiusura classe 
         
    }    // chiusura pacchetto
    e nel primo frame
    codice:
    import lab.MenuMove; 
    var classe:MenuMove = new MenuMove(); 
    addChild(classe);
    stop();
    adesso diciamo che fa piu o meno quello che deve... anche se non so come inserire una casella di testo dentro ad ogni clip...



Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.