Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    ancora classi e oggetti in flash

    Sto ancora cercando di implementare questo dannato Albero binario di ricerca.
    Avevo finito... e credevo anche funzionasse.
    Invece niente.
    Probabilmente c'è qualche meccanismo di flash che non mi è ancora del tutto chiaro.
    I nodi dell'albero dovrebbero contenere un indirizzo di una ipotetica rubrica telefonica, ciascuno di questi è composto da un nome, un cognome e un numero di telefono.
    Questo è il codice:
    codice:
    /*
    	Costruttore per il nodo.
    */
    
    function Node(name, secondName, phone)
    {
    	this.name = name;
    	this.secondName = secondName;
    	this.phone = phone;
    	this.right = null; // figlio destro
    	this.left = null; // figlio sinistro
    	this.parent = null; // padre
    
    	return this; // restituisce il nodo
    }
    
    /*
    	Costruttore per l'albero.
    */
    
    function binTree(name, secondName, phone)
    {
    	this.rootNode = new Node(name, secondName, phone); 
    	this.cardinality = 1;
    	
    	// Provo a tracciare questi parametri:
    	
    	trace(name);
    	trace(secondName);
    	trace(phone);
    
    	return this;
    }
    Adesso mi creo l'oggetto:

    codice:
    albero = new binTree(naighes, superNaighes, 144);
    Il trace mi visualizza solo il numero di telefono!
    Ecco il mio trace:
    codice:
    
    144144144
    Sembra quindi che name e secondName siano stringhe vuote...
    Mi chiedo il perchè...
    Qualcuno mi sa aiutare a capire dove sto sbagliando?

    Vi ringrazio in anticipo.
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

  2. #2
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    codice:
    albero = new binTree("naighes", "superNaighes", 144);
    Come l'avevi scritto tu, erano variabili, e non essendo definite..

  3. #3
    Me ne sono accorto!
    Il fatto è che ero fuori casa e non sapevo come avvertire!
    Visto che la mia interminabile collezione di figuracce non è ancora completa, voglio chiedere altre delucidazioni.
    Dunque, riscriviamo il codice:

    Per il nodo:
    codice:
    function Node(name, secondName, phone)
    {
    	this.name = name;
    	this.secondName = secondName;
    	this.phone = phone;
    	this.right = null; // figlio destro
    	this.left = null; // figlio sinistro
    	this.parent = null; // padre
    
    	return this; // restituisce il nodo
    }
    Per l'albero:

    codice:
    function binTree(name, secondName, phone)
    {
    	this.rootNode = new Node(name, secondName, phone); 
    	this.cardinality = 1;
    	return this;
    }
    E fin qui ci sono...
    Adesso vi mostro la procedura per effettuare una visita sull'albero:

    codice:
    binTree.prototype.visit = function ()
    {
    	this.visitNode = this.rootNode;
    	if (visitNode != null)
    	{
     		this.visit(visitNode.left);
    		vis = this.vis + this.visitNode.secondName;
    		this.visit(visitNode.right);
     	} 	
    }
    Dove vis è il nome variabile di un campo di testo dinamico presente sullo stage.

    Ad un pulsante associo la seguente azione:

    [code]on (release)
    {
    albero.visit();
    }

    Creo ovviamente un oggetto di tipo binTree:

    codice:
    albero = new binTree("naighes", "superNaighes", 144);
    Bene, clicco sul pulsante e il campo this non mi visualizza niente!
    Invece dovrebbe restiruirmi il valori contenuti in rootNode!
    Perchè?

    Grazie in anticipo.
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

  4. #4
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Non ho capito niente, ma:


    - svuota il campo "Variable" della casella di testo, e usa un nome di istanza, ad esempio "vis_txt"
    - nel pulsante:

    codice:
    on (release){
    	albero = new binTree("naighes", "superNaighes", 144);
    	albero.visit(vis_txt); //passi il vampo di testo
    }
    il resto del codice:

    codice:
    function Node(name, secondName, phone)
    {
    	this.name = name;
    	this.secondName = secondName;
    	this.phone = phone;
    	this.right = null; // figlio destro
    	this.left = null; // figlio sinistro
    	this.parent = null; // padre
    
    	return this; // restituisce il nodo
    }
    function binTree(name, secondName, phone)
    {
    	this.rootNode = new Node(name, secondName, phone); 
    	this.cardinality = 1;
    	return this;
    }
    binTree.prototype.visit = function (txt)
    {
    	this.visitNode = this.rootNode;
    	if (this.visitNode != null)
    	{
     		txt.text += this.visitNode.secondName;
     	} 	
    }

  5. #5
    Intanto ti ringrazio per la risposta.

    Volevo sapere cosa significa questo:

    codice:
    txt.text += this.visitNode.secondName;
    Perchè .text?
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

  6. #6
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    .text è la proprietà del campo di testo che contiene effettivamente le parole visualizzate.

  7. #7
    Negatyve, scusa, ma non funziona.

    Allora i due costruttori sono identici a quelli che ti ho postato.
    Nello stesso keyframe dove sono definiti ho aggiunto:

    codice:
    albero = new binTree("naighes", "superNaighes", "144");
    trace(albero.rootNode.secondName);
    Ok, il trace mi visualizza superNaighes

    Il metodo l'ho modificato come tu mi hai detto:

    codice:
    binTree.prototype.visit = function (txt)
    {
    	this.visitNode = this.rootNode;
    	if (visitNode != null)
    	{
     		// this.visit(visitNode.left);
    		txt.text += this.visitNode.secondName;
    		// this.visit(visitNode.right);
     	} 	
    }
    Escludiamo momentaneamente le chiamate ricorsive. (tanto per il solo rootNode non mi servono, me lo deve restituire comunque)

    Al pulsante poi:
    codice:
    on (release)
    {
    	albero.visit(vis_txt);
    }
    Cambiando ovviamente il nome alla variabile corrispondente al campo di testo.

    Però il campo di testo non visualizza niente.
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

  8. #8
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Attento, è:

    codice:
    binTree.prototype.visit = function (txt)
    {
    	this.visitNode = this.rootNode;
    	if (this.visitNode != null)
    	{
     		// this.visit(visitNode.left);
    		txt.text += this.visitNode.secondName;
    		// this.visit(visitNode.right);
     	} 	
    }

  9. #9
    Hai ragione... ma anche così non funziona!
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

  10. #10
    Vuoi sapere la cosa buffa?

    Se eseguo un trace nel seguente modo:

    codice:
    binTree.prototype.visit = function (txt)
    {
    	this.visitNode = this.rootNode;
    	if (this.visitNode != null)
    	{
     		//this.visit(visitNode.left);
    		txt.text += this.visitNode.secondName;
    		trace(this.visitNode.secondName);
    		//this.visit(visitNode.right);
     	} 	
    }
    E' perfetto, mi visualiza superNaighes.
    Mi domando cosa ci sia che non va...
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

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.