Pacchettoflash.utils
Classepublic class Proxy
EreditarietàProxy Inheritance Object

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

La classe Proxy consente di sostituire il comportamento predefinito delle operazioni di ActionScript (come il recupero e la modifica delle proprietà) per un oggetto.

Questa classe non ha una funzione di costruzione e non è possibile crearne un'istanza. È invece possibile creare una sottoclasse della classe Proxy per sostituire metodi come getProperty e fornire un comportamento personalizzato. Se si tenta di utilizzare un metodo della classe Proxy senza sostituire il metodo, viene generata un'eccezione.

Inoltre, tenere presente che se si sostituiscono i metodi della classe Proxy con codice personalizzato, è possibile che vengano involontariamente generate eccezioni. La generazione di eccezioni durante l'uso di questi metodi causa problemi, perché le eccezioni non sono previste dal codice chiamante (che utilizza operatori quali in, is, delete e altri). A meno che non si sia certi che il metodo sostitutivo non generi eccezioni, Adobe consiglia di utilizzare istruzioni try..catch durante l'implementazione della classe Proxy per evitare che si verifichino errori irreversibili quando gli operatori chiamano i metodi. Ad esempio:

 dynamic class MyProxy extends Proxy {
     flash_proxy override function callProperty(name:*, ...rest):* {
       try {
         // custom code here
       }
       catch (e:Error) {
         // respond to error here
       }
 }   
 

La classe Proxy sostituisce i metodi Object.__resolve e Object.addProperty di ActionScript 2.0, che non sono più disponibili in ActionScript 3.0. Il metodo Object.addProperty() consentiva di creare metodi get e set in modo dinamico in ActionScript 2.0. Nonostante ActionScript 3.0 fornisca i metodi get e set in fase di compilazione, non è possibile assegnarne uno a un oggetto in modo dinamico a meno che non si utilizzi la classe Proxy.

Per evitare conflitti con lo spazio dei nomi public, i metodi della classe Proxy sono nello spazio dei nomi flash_proxy.

Se i metodi della classe Proxy accettano un argomento name, questo può essere un oggetto String o QName (se sono utilizzati gli spazi dei nomi).

Vedere gli esempi



Proprietà pubbliche
 ProprietàDefinito da
 Inheritedconstructor: Object
Un riferimento all'oggetto classe o alla funzione di costruzione per una determinata istanza di oggetto.
Object
 Inheritedprototype: Object
[statico] Un riferimento all'oggetto prototipo di un oggetto classe o funzione.
Object
Metodi pubblici
 MetodoDefinito da
 Inherited
Indica se per un oggetto è definita una proprietà specifica.
Object
 Inherited
Indica se un'istanza della classe Object si trova nella catena di prototipi dell'oggetto specificato come parametro.
Object
 Inherited
Indica se la proprietà specificata esiste ed è enumerabile.
Object
 Inherited
Imposta la disponibilità di una proprietà dinamica per le operazioni cicliche.
Object
 Inherited
Restituisce la rappresentazione in formato stringa dell'oggetto specificato.
Object
 Inherited
Restituisce il valore di base dell'oggetto specificato.
Object
Protette Metodi
 MetodoDefinito da
  
callProperty(name:*, ... rest):*
Sostituisce il comportamento della proprietà di un oggetto, che può essere chiamata come una funzione.
Proxy
  
Sostituisce la richiesta per eliminare una proprietà.
Proxy
  
Sostituisce l'uso dell'operatore descendant.
Proxy
  
getProperty(name:*):*
Sostituisce qualsiasi richiesta di un valore di proprietà.
Proxy
  
Sostituisce una richiesta per verificare se un oggetto ha una particolare proprietà, in base al nome.
Proxy
  
Verifica che il QName fornito sia contrassegnato anche come attributo.
Proxy
  
Consente l'enumerazione delle proprietà dell'oggetto proxy in base al numero di indice, allo scopo di recuperare i nomi delle proprietà.
Proxy
  
Consente l'enumerazione delle proprietà dell'oggetto proxy in base al numero di indice.
Proxy
  
nextValue(index:int):*
Consente l'enumerazione delle proprietà dell'oggetto proxy per numero di indice, allo scopo di recuperare i valori delle proprietà.
Proxy
  
setProperty(name:*, value:*):void
Sostituisce una chiamata per modificare il valore di una proprietà.
Proxy
Descrizione dei metodi
callProperty()metodo
flash_proxy function callProperty(name:*, ... rest):*

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Sostituisce il comportamento della proprietà di un oggetto, che può essere chiamata come una funzione. Quando viene invocato un metodo dell'oggetto, viene chiamato questo metodo. Sia alcuni oggetti che alcune proprietà degli oggetti possono essere chiamati come funzioni.

Parametri

name:* — Il nome del metodo chiamato.
 
... rest — Un array che specifica gli argomenti del metodo chiamato.

Restituisce
* — Il valore restituito dal metodo chiamato.

Vedere anche

deleteProperty()metodo 
flash_proxy function deleteProperty(name:*):Boolean

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Sostituisce la richiesta per eliminare una proprietà. Quando una proprietà viene eliminata mediante l'operatore delete, per eseguire l'eliminazione viene chiamato questo metodo.

Parametri

name:* — Il nome della proprietà da eliminare.

Restituisce
Boolean — Se la proprietà è stata eliminata, viene restituito true; in caso contrario, false.

Vedere anche

getDescendants()metodo 
flash_proxy function getDescendants(name:*):*

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Sostituisce l'uso dell'operatore descendant. Quando viene utilizzato l'operatore descendant, viene richiamato questo metodo.

Parametri

name:* — Il nome della proprietà da cercare nell'oggetto.

Restituisce
* — I risultati dell'operatore descendant.

Vedere anche

getProperty()metodo 
flash_proxy function getProperty(name:*):*

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Sostituisce qualsiasi richiesta di un valore di proprietà. Se la proprietà non viene trovata, il metodo restituisce undefined. Per ulteriori informazioni su questo comportamento, consultare la specifica del linguaggio ECMA-262, 3a edizione, sezione 8.6.2.1.

Parametri

name:* — Il nome della proprietà da recuperare.

Restituisce
* — La proprietà specificata o undefined se la proprietà non viene trovata.

Vedere anche

hasProperty()metodo 
flash_proxy function hasProperty(name:*):Boolean

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Sostituisce una richiesta per verificare se un oggetto ha una particolare proprietà, in base al nome.

Parametri

name:* — Il nome della proprietà da verificare.

Restituisce
Boolean — Se la proprietà esiste, viene restituito true; in caso contrario false.

Vedere anche

isAttribute()metodo 
flash_proxy function isAttribute(name:*):Boolean

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Verifica che il QName fornito sia contrassegnato anche come attributo.

Parametri

name:* — Il nome della proprietà da verificare.

Restituisce
Boolean — Restituisce true se l'argomento di name è un QName contrassegnato anche come attributo.

Vedere anche

nextName()metodo 
flash_proxy function nextName(index:int):String

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Consente l'enumerazione delle proprietà dell'oggetto proxy in base al numero di indice, allo scopo di recuperare i nomi delle proprietà. Tuttavia, non è possibile enumerare le proprietà della classe Proxy. Questa funzione supporta l'implementazione dei cicli for...in e for each..in sull'oggetto per recuperare i nomi desiderati.

Ad esempio (con il codice da Proxy.nextNameIndex()):

     protected var _item:Array; // array of object's properties
     override flash_proxy function nextNameIndex (index:int):int {
         // initial call
         if (index == 0) {
             _item = new Array();
             for (var x:* in _target) {
                _item.push(x);
             }
         }
     
         if (index < _item.length) {
             return index + 1;
         } else {
             return 0;
         }
     }
     override flash_proxy function nextName(index:int):String {
         return _item[index - 1];
     }
     

Parametri

index:int — Il valore di indice a base zero della proprietà dell'oggetto.

Restituisce
String — Stringa; il nome della proprietà.

Vedere anche

nextNameIndex()metodo 
flash_proxy function nextNameIndex(index:int):int

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Consente l'enumerazione delle proprietà dell'oggetto proxy in base al numero di indice. Tuttavia, non è possibile enumerare le proprietà della classe Proxy stessa. Questa funzione supporta l'implementazione dei cicli for...in e for each..in sull'oggetto per recuperare i valori di indice delle proprietà.

Ad esempio:

     protected var _item:Array; // array of object's properties
     override flash_proxy function nextNameIndex (index:int):int {
         // initial call
         if (index == 0) {
             _item = new Array();
             for (var x:* in _target) {
                _item.push(x);
             }
         }
     
         if (index < _item.length) {
             return index + 1;
         } else {
             return 0;
         }
     }
     override flash_proxy function nextName(index:int):String {
         return _item[index - 1];
     }
  

Parametri

index:int — Il valore di indice a base zero da cui inizia l'enumerazione.

Restituisce
int — Il valore di indice della proprietà.

Vedere anche

nextValue()metodo 
flash_proxy function nextValue(index:int):*

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Consente l'enumerazione delle proprietà dell'oggetto proxy per numero di indice, allo scopo di recuperare i valori delle proprietà. Tuttavia, non è possibile enumerare le proprietà della classe Proxy. Questa funzione supporta l'implementazione dei cicli for...in e for each..in sull'oggetto per recuperare i valori desiderati.

Ad esempio (con il codice da Proxy.nextNameIndex()):

     protected var _item:Array; // array of object's properties
     override flash_proxy function nextNameIndex (index:int):int {
         // initial call
         if (index == 0) {
             _item = new Array();
             for (var x:* in _target) {
                _item.push(x);
             }
         }
     
         if (index < _item.length) {
             return index + 1;
         } else {
             return 0;
         }
     }
     override flash_proxy function nextName(index:int):String {
         return _item[index - 1];
     }
     

Parametri

index:int — Il valore di indice a base zero della proprietà dell'oggetto.

Restituisce
* — Il valore della proprietà.

Vedere anche

setProperty()metodo 
flash_proxy function setProperty(name:*, value:*):void

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Sostituisce una chiamata per modificare il valore di una proprietà. Se la proprietà non viene trovata, questo metodo ne crea una con il nome e il valore specificati.

Parametri

name:* — Il nome della proprietà da modificare.
 
value:* — Il valore su cui impostare la proprietà.

Vedere anche

Esempi Come utilizzare gli esempi
ProxyExample.as

package {
    import flash.display.Sprite;

    public class ProxyExample extends Sprite {
        public function ProxyExample() {
            var arr:ProxyArray = new ProxyArray();
            arr.push(1);
            arr.push(-2);
            arr.push(3);
            arr.push(4);
            arr.push("five");
            
            trace(arr.length); // 5
            trace(arr[0]);     // 1
            trace(arr[1]);     // -2
            trace(arr[2]);     // 3
            trace(arr[3]);     // 4

            trace(arr.sum());  // 6

            arr.clear();
            trace(arr); // (empty string)
            
            arr[0] = "zero";
            trace(arr); // zero
        }
    }
}

import flash.utils.Proxy;
import flash.utils.flash_proxy;

dynamic class ProxyArray extends Proxy {
    private var _item:Array;

    public function ProxyArray() {
        _item = new Array();
    }

    override flash_proxy function callProperty(methodName:*, ... args):* {
        var res:*;
        switch (methodName.toString()) {
            case 'clear':
                _item = new Array();
                break;
            case 'sum':
                var sum:Number = 0;
                for each (var i:* in _item) {
                    // ignore non-numeric values
                    if (!isNaN(i)) {
                        sum += i;
                    }
                }
                res = sum;
                break;
            default:
                res = _item[methodName].apply(_item, args);
                break;
        }
        return res;
    }

    override flash_proxy function getProperty(name:*):* {
        return _item[name];
    }

    override flash_proxy function setProperty(name:*, value:*):void {
        _item[name] = value;
    }
}




 

Inviami un messaggio e-mail quando vengono aggiunti dei commenti a questa | Rapporto sui commenti

Pagina corrente: http://livedocs.adobe.com/flash/9.0_it/ActionScriptLangRefV3/flash/utils/Proxy.html