Visualizzazione dei risultati da 1 a 4 su 4

Discussione: info per AS3.0

  1. #1

    info per AS3.0

    Ciao a tutti trovo molto spesso nelle classi di actionscript 3.0 questo tipo di modo di scrivere tipo l'esempio qui sotto

    private var _fontSize:Number

    _fontSize secondo voi mettere la linetta bassa prima del nome della variabile in questo caso ha un significato particolare?

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    E' un modo di scrivere le variabili private, usato in altri linguaggi OOP e adottato anche qui. diciamo che poi ognuno scrive come vuole, io ad esempio mi sono abituato a scrivere le private con una lettera, maiuscola, solitamente riferita alla classe.

    private var S:Sprite;

  3. #3
    ciao,

    di solito, se conforme alla best practice (il che non e' garantito solo per come si scrive un nome di variabile) indica un campo privato che pero' e' in qualche misura esposto, normalmente tramite getter/setter o uno di questi, rispettivamente per implementare readOnly o writeOnly.
    Una tipica implementazione puo' essere questa:

    codice:
    public class FontWrapper {
    
        private _fontSize:Number;
    
        public function get fontSize():Number { return _fontSize; }
        public function set fontSize(v:Number):void  { _fontSize = v; }
    
        ...
    messa in questo modo e' equivalente a scrivere:

    codice:
    public class FontWrapper {
    
        public fontSize:Number;
    
    ...
    ma allora che vantaggi ci sono ad usare l'esempio in cima?
    Cosi' come confrontati finora, non molti, in questo esempio cominciano a diventare piu' evidenti:

    codice:
    public class FontWrapper {
    
        private _fontSize:Number;
    
        // fontSize is readOnly
        public function get fontSize():Number { return _fontSize; }
    ...
    Un altro uso tipico e' condizionare lo stato della classe (aggiornamento) in base al valore del campo in questione:

    codice:
    public class FontWrapper {
    
        private _fontSize:Number;
    
        public function get fontSize():Number { return _fontSize; }
        public function set fontSize(v:Number):void  {
              _fontSize = v;
              
              if(v > 10) applyAlienAlias();
        }
    
    ...
    
        private function applyAlienAlias():void { ... }
    
    ...
    In altri casi _fontSize puo' essere semplicemente un campo protetto, quindi destinato ad essere usato in classi che ereditano:

    codice:
    public class SuperHero {
    
       protected var _fontSize = 10;
    
    ...
    codice:
    public class Thor extends SuperHero {
    
         // the constructor, no need to specify access type nor return type since it's always void
         function Thor (){
              _fontSize = 20;
    
    ...
    Non e' tutto qui naturalmente, e' solo per dire che l'uso di campi privati in combinazione con getter/setter e' una pratica frequentissima.



    Jaco

  4. #4
    ups. dimenticanza, manca keyword var:

    codice:
        private var _fontSize:Number;
    e via cosi'.


    Jaco

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.