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

    [AS3] Accedere a proprietà/clip di altra classe

    Mettiamo che ho questo codice, pensavo che rendendo la variabile public fosse possibile richiamarla ma invece no

    codice:
    package Classi
    {
    	public Classe1 extends Sprite{
                 public MioClip:Sprite = new Sprite()
            }
    {

    come faccio io da un'altra classe a chiamare MioClip, è possibile?

  2. #2
    Provo a spiegarmi diversamente.

    Ho un sito diviso totalmente in classi, ogni sezione è un classe che si compone di elementi, clip, testi, quant'altro, con altre classi.

    Ho una classe che mi crea un menu, composto dalla singole voci e da un background.

    Se io voglio richiamare quel background da fuori la classe per metterlo alpha0 non c'è modo?
    Immagino di si perché se la classe può avere metodi pubblici, potrà avere anche delle proprietà pubbliche.

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    puoi sicuramente accedervi se l'hai impostata come public
    dov'è esattamente il problema (codice) ?

  4. #4
    E' complicato...son tutte classi annidate...provo a ricostruire


    se io faccio public sul menu e tipo il menu lo

    Classe che crea il menu
    codice:
    public class Menu{
        public fondo:Sprite
    }
    e poi faccio su

    Classe che richiama la class menu, sotto crea anche le varie sezioni chiamando la classe sezione
    codice:
    public class sito{
        private var site_menu:Menu= new Menu()
    }
    da

    codice:
    public class Collezione{
    
    }
    come faccio a puntare al fondo del menu? Sto con Flex e non riesco mai a beccare la proprità :asd:

    Devo dichiarare public ogni passaggio e poi girare per le classi?
    tipo sito.sezione.menu.fondo?

  5. #5
    Ho pensato che poso fare così

    codice:
    public class sito{
        public sfondo:Sprite
        private site_menu
        public function sito(){
         private var site_menu:Menu= new Menu()
         sfondo.site_menu.fondo
       }
    }
    etc

  6. #6
    Ok ho risolto, ma non so se è una cafonata

    se faccio tipo
    codice:
    public var sfondo
    public class menu{
    
    
    }
    sfondo lo vedo da ovunque


    ahahah niente, in fase di compilazione non va non ci possono essere due definizioni public

  7. #7
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    Teoricamente è un po più complessa la cosa.

    Per mantenere un riferimento a tutte le istanze create per le diverse classi del tuo package dovresti utilizzare la main class.

    tipo

    class Main {

    private var sfondo:Sfondo = new Sfondo();
    private var menu:Menu = new Menu()

    eccetera....


    }

    Una volta istanziate nella main class tutti gli oggetti che ti servono ne possiedi anche i riferimenti, quindi tutte le interazioni tra i tuoi oggetti andrebbero gestiti nei metodi della main class.


    Ogni classe, tipo Menu Sfondo eccetera, dovrebbe implementare proprietà e metodi inerenti solo al suo funzionamento interno... poi attraverso questi tu li fai interagire con gli altri oggetti. Non ha senso che all'interno di una classe Menu tu abbia bisogno di interagire con una istanza Sfondo e viceversa. Ha senso se all'interno della main class tu attraverso i metodi di queste due istanze crei una interazione.

    In ogni caso, se vuoi accedere a delle proprietà o metodi di una classe senza creare una istanza e possederne un riferimento dovresti creare proprietà e metodi non semplicemente public ma anche static. Occhio però che poi che le proprietà static fanno riferimento alla classe intera e non alle singole istanze che poi andrai a creare...


    Non penso di essere stato molto chiaro, spero di si, ma il discorso sarebbe abbastanza lungo.



  8. #8
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    Cioè dichiarare una variabile public non significa che sia visibile ovunque.

    Esempio:

    class Test {

    private var pippo:Number = 0;
    public var pluto;Number = 0;

    function Test() {

    trace(pippo + pluto);

    }

    }

    In questa classe abbiamo due variabili o proprietà, una pubblica e una privata:

    Se creo una istanza di test:

    var test:Test = new Test();

    attraverso questa istanza potrò accedere direttamente alla variabile pubblica ma non a quella privata, che è ad esclusivo uso interno della classe.

    quindi potrei accedere a:

    test.pippo

    ma non a test.pluto


    Per accedere alle variabili private di una classe e di una istanza generalmente si usano setter e getter ed è buona norma, tranne in casi particolari, mantenere tutte le proprietà come private e creare i relativi setter e getter nel caso si voglia dare la possibilità di accedere e modificare a tali valori. E' buona norma perchè in questo modo si ha un maggiore controllo sui valori che si vanno ad assegnare alle proprietà.



  9. #9
    Ecco, grazie della spiegazione ^^

    Ho pensato di aggirare il problema con dei listener da mettere sul menu, e che "scateno" dall'altra classe. Deve funzionare, ma non funziona, domani vedo

  10. #10
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    Originariamente inviato da Stan
    Ecco, grazie della spiegazione ^^

    Ho pensato di aggirare il problema con dei listener da mettere sul menu, e che "scateno" dall'altra classe. Deve funzionare, ma non funziona, domani vedo
    Beh dispatchare degli eventi custom dalle istanze delle singole classi è una possibilità, assolutamente. Poi non ti rimane che registrare a tali eventi tutti gli oggetti interessati.



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.