Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Neocron
    Registrato dal
    Jul 2002
    Messaggi
    524

    [AS3] Classe esterna, riferimento stage

    Ciao ragazzi! ho creato una classe esterna che fa riferimento in punto del codice a: stage.mouseX e stage.mouseY. Quando eseguo il filmato che poi importa la mia classe esterna, mi viene restituito questo errore:

    1120: Accesso alla proprietà non definita stage.

  2. #2
    Utente di HTML.it L'avatar di Neocron
    Registrato dal
    Jul 2002
    Messaggi
    524
    Tutto questo, esattamente nei punti dove dove è definita la richiesta delle variabili definite sopra. Ora, mi rendo conto che la mia classe esterna non riesce ad accedere all'istanza stage, e mi domando, c'è qualche rimedio? La classe stage non dovrebbe essere accessibile ovunque? Come mai as3 si comporta così?

    Grazie infinite come sempre.

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Probabilmente non riuscirò a spiegarmi bene, ma spero di poterti aiutare a capire meglio la questione...
    stage scritto tutto in minuscolo è una proprietà appartenente agli oggetti di visualizzazione (DisplayObject) che vengono appunto visualizzati sullo stage, qualsiasi sia l'oggetto di visualizzazione che li contiene (DisplayObjectContainer) e restituisce sempre l'unico oggetto Stage del filmato, l'elemento più alto nel sistema di visualizzazione e che quindi contiene tutto il resto.
    Premesso questo, quando tu accedi all'oggetto sulla timeline principale è come se stessi scrivendo this.stage che per "nidificazione" degli elementi visuali all'interno del filmato equivale a scrivere this.parent o semplicemente parent.
    Mentre quando tenti di accedervi da una classe che non ha collegamenti con lo stage (dovrebbe essere una classe visuale e dovrebbe già essere visualizzata sullo stage), ottieni un errore perché effettivamente non esiste per la tua classe una proprietà con il nome "stage".
    Per ovviare al problema puoi agire almeno in due modi:
    1. (consigliato) passare al costruttore della classe la proprietà stage e renderla visibile nella classe tramite una proprietà privata o protetta, potendola quindi utilizzare ovunque nella classe.
    2. (sconsigliato ma fattibile) creare un oggetto visuale all'interno della classe, attaccarlo allo stage (sarà un elemento vuoto, quindi in pratica non cambierebbe nulla per l'utente) e utilizzare la sua proprietà "stage".

  4. #4
    Utente di HTML.it L'avatar di Neocron
    Registrato dal
    Jul 2002
    Messaggi
    524
    Originariamente inviato da and80
    1. (consigliato) passare al costruttore della classe la proprietà stage e renderla visibile nella classe tramite una proprietà privata o protetta, potendola quindi utilizzare ovunque nella classe.
    Ti sei spiegato benissimo, non potevo sperare in una risposta migliore, grazie infinite. ;-)

    Userò l'opzione 1, as3 concettualmente è molto vicino a Java, non pensavo di dover cambiare radicalmente metodo di ragionamento venendo da as2.

    Grazie ancora!

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.