Hosting & Domini

 
HOME DOMINI HOSTING SERVER SUPPORTO

Creazione di script con ActionScript > Uso di oggetti personalizzati

Uso di oggetti personalizzati


La creazione di oggetti personalizzati definendo le proprietà e i metodi consente di organizzare i dati all'interno degli script in modo da semplificarne l'archiviazione e l'accesso. Una volta creato un oggetto master o classe, è possibile usare o creare istanze dell'oggetto in un filmato. Ciò consente di riusare parti di codice e di limitare le dimensioni dei file.

Un oggetto è un tipo di dati complesso, contenente zero o più proprietà. Ogni proprietà, come una variabile, è provvista di un nome e di un valore. Le proprietà sono associate all'oggetto e contengono valori modificabili e recuperabili, il cui tipo può essere stringa, numerico, booleano, oggetto, clip filmato o undefined. Le proprietà seguenti sono di tipi di dati diversi:

customer.name = "Jane Doe"
customer.age = 30
customer.member = true
customer.account.currentRecord = 000609
customer.mcInstanceName._visible = true

La proprietà di un oggetto può a sua volta essere un oggetto. Nella riga 4 dell'esempio precedente account è una proprietà dell'oggetto customer e currentRecord è una proprietà dell'oggetto account. Il tipo di dati della proprietà currentRecord è numerico.


 
Creazione di un oggetto

È possibile usare l'operatore new per creare un oggetto da una funzione di costruzione. A una funzione di costruzione è sempre assegnato lo stesso nome del tipo di oggetto che crea. Ad esempio, una funzione di costruzione che crea un oggetto Account verrà denominata Account. La seguente istruzione crea un nuovo oggetto dalla funzione chiamata MyConstructorFunction:

new MyConstructorFunction (argument1, argument2, ... argumentN);

Quando viene chiamata la funzione MyConstructorFunction, Flash passa l'argomento nascosto this, che è un riferimento all'oggetto che MyConstructorFunction sta creando. Quando si definisce una funzione di costruzione this consente di far riferimento agli oggetti che verranno creati dalla funzione di costruzione stessa. Ad esempio, la seguente funzione di costruzione crea un cerchio:

function Circle(radius) {
	this.radius = radius;
	this.area = Math.PI * radius * radius;
}

Le funzioni di costruzione vengono usate comunemente per definire i metodi di un oggetto.

function Area() {
	this.circleArea = MAth.PI * radius * radius;
}

Per usare un oggetto in uno script è necessario assegnarlo a una variabile. Per creare un nuovo oggetto cerchio con raggio 5 usare l'operatore new, che consente di creare l'oggetto e assegnarlo alla variabile locale myCircle:

var myCircle = new Circle(5);

Nota: Gli oggetti hanno la stessa area di validità della variabile alla quale sono assegnati. Consultare Assegnazione di un'area di validità a una variabile.


 
Creazione dell'ereditarietà

Tutte le funzioni dispongono di una proprietà prototype che viene creata automaticamente al momento della definizione della funzione. Quando si usa una funzione di costruzione per creare un nuovo oggetto, tutte le proprietà e i metodi della proprietà prototype della funzione di costruzione diventano metodi e proprietà della proprietà __proto__ del nuovo oggetto. La proprietà prototype indica i valori predefiniti delle proprietà degli oggetti creati con tale funzione. Il passaggio di valori tramite le proprietà __proto__ e prototype è detto ereditarietà.

L'ereditarietà si basa su una gerarchia precisa. Quando si chiama una proprietà o un metodo di un oggetto, ActionScript verifica se tale elemento esiste nell'oggetto. Se l'elemento non esiste, ActionScript ricerca i dati necessari nella proprietà __proto__ dell'oggetto (object.__proto__). Se la proprietà chiamata non è una proprietà dell'oggetto __proto__, ActionScript ricerca in object.__proto__.__proto__.

I metodi vengono spesso associati a un oggetto assegnandoli alla proprietà prototype dell'oggetto. La procedura seguente descrive come definire un metodo di esempio.

1 Definire la funzione di costruzione Circle nel modo seguente:
function Circle(radius) {
	this.radius = radius
}
2 Definire il metodo area dell'oggetto Circle. Il metodo area calcola l'area del cerchio. Per definire il metodo area e impostare la proprietà area dell'oggetto prototipo del cerchio è possibile usare un valore letterale di funzione, nel modo seguente:
Circle.prototype.area = function () {
		return Math.PI * this.radius * this.radius
		}
3 Creare un'istanza dell'oggetto Circle nel modo seguente:
var myCircle = new Circle(4);
4 Chiamare il metodo area del nuovo oggetto myCircle nel modo seguente:
var myCircleArea = myCircle.area()
ActionScript ricerca nell'oggetto myCircle il metodo area. Poiché l'oggetto non dispone di un metodo area , il metodo area viene ricercato nell'oggetto prototipo Circle.prototype. ActionScript trova il metodo ed esegue la chiamata.

In alternativa è possibile associare un metodo a un oggetto associandolo a ogni singola istanza dell'oggetto, come nell'esempio seguente:

function Circle(radius) {
	this.radius = radius
	this.area = function() {
		return Math.PI * this.radius * this.radius
	}
}

Questa tecnica è tuttavia sconsigliata. L'uso dell'oggetto prototype è più efficiente, in quanto è sufficiente una sola definizione di area e tale definizione viene automaticamente copiata in tutte le istanze create dalla funzione Circle.

La proprietà prototype è supportata da Flash Player versione 5 e successive. Per ulteriori informazioni, consultare il Dizionario di ActionScript: panoramica.



Home | Mappa del sito | Condizioni di utilizzo | Privacy
 
Copyright © Hostek Srl. P.Iva 05434210489