Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [mx] oop

  1. #1
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    [mx] oop

    Salve, stavo provando a creare delle classi:
    la level è la madre mentre cards è la figlia...

    codice:
    // level Class
    level = function (xline,yline) {
    	this.xline = xline;
    	this.yline = yline;
    	this.test = 5;
    }
    
    // cards Class
    cards = function(numcard){
    	this.numcard = numcard;
    }
    cards.prototype.__proto__ = level.prototype;
    
    level1 = new level(3,2);
    c = new cards(level1.numcard);
    Perchè quando faccio il trace

    trace(c.test) -> 5 //ok
    trace(c.xline) -> undefined

    c.test funziona mentre c.xline no?
    come lo richiamo? posso arrivarci solo da level1.xline?
    わさび

  2. #2
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Una cosa alla volta:

    1. level non ha la proprietà numcard
    2. anche se hai creato una relazione tra le due classi, la classe madre (level) non eredita le proprietà della figlia
    3. per impostare quelle proprietà, devi chiamare super(argomenti)

    Che cosa stai cercando di fare?

  3. #3
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Originariamente inviato da negatyve
    Una cosa alla volta:

    1. level non ha la proprietà numcard
    2. anche se hai creato una relazione tra le due classi, la classe madre (level) non eredita le proprietà della figlia
    3. per impostare quelle proprietà, devi chiamare super(argomenti)

    Che cosa stai cercando di fare?
    ciao nega,
    hai ragione
    la classe level non ha la proprietà numcard... l'ho cancellata manualmente perchè di proprietà ne ha un'altra dozzina =_='
    quello che intendevo fare era proprio impostare super ma non sono molto pratico (come puoi notare) nè di OOP, nè della sua sintassi in Flash.
    Ho letto molte volte una guida di OOP per Flash è i concetti mi sembrano chiari (almeno per l'80%), per questo ho deciso di mettere su carta e di fare qualche prova...
    わさび

  4. #4
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    In pratica, meglio ancora, c dovrebbe essere dentro level1 ereditando le sue proprietà appena passate.
    Così al posto di scrivere:
    codice:
    level1 = new level(3,2);
    c = new cards(level1.numcard);
    scriverei:
    codice:
    level1 = new level(3,2);
    c = new cards();
    perchè tutto ciò che è di level1 è anche di c
    È un modo sbagliato di pensare le classi?
    わさび

  5. #5
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    >perchè tutto ciò che è di level1 è anche di c
    >È un modo sbagliato di pensare le classi?

    Assolutamente si, sbagliatissimo. Infatti, in questo script:
    codice:
    level1 = new level(3,2);
    c = new cards();
    dov'è la connessione tra "c" e "level1" ? Ricordati che sono istanze delle classi, e non classi.

  6. #6
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Originariamente inviato da negatyve
    >perchè tutto ciò che è di level1 è anche di c
    >È un modo sbagliato di pensare le classi?

    Assolutamente si, sbagliatissimo. Infatti, in questo script:
    codice:
    level1 = new level(3,2);
    c = new cards();
    dov'è la connessione tra "c" e "level1" ? Ricordati che sono istanze delle classi, e non classi.
    Hai ragione =_='
    Allora come posso fare direttamente tutto da level?
    Ossia chiamando:
    codice:
    level1 = new level(3,2);
    viene richiamata e creata automaticamente anche un'istanza cards?
    わさび

  7. #7
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Ad esempio, senza creare l'ereditarietà, di cui qui non si vede il significato:

    codice:
    // cards Class
    cards = function(numcard){
    	this.numcard = numcard;
    }
    // level Class
    level = function (xline,yline) {
    	this.xline = xline;
    	this.yline = yline;
    	this.test = 5;
    	this.c = new cards();
    }

  8. #8
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Originariamente inviato da negatyve
    Ad esempio, senza creare l'ereditarietà, di cui qui non si vede il significato:

    codice:
    // cards Class
    cards = function(numcard){
    	this.numcard = numcard;
    }
    // level Class
    level = function (xline,yline) {
    	this.xline = xline;
    	this.yline = yline;
    	this.test = 5;
    	this.c = new cards();
    }
    Perfect grazie 1000
    わさび

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.