| 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
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
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
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
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
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
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
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
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
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
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
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;
}
}
© 2004-2007 Adobe Systems Incorporated. All rights reserved.
Fri Oct 12 2007, 3:14 AM GMT-07:00
Pagina corrente: http://livedocs.adobe.com/flash/9.0_it/ActionScriptLangRefV3/flash/utils/Proxy.html