Bhe, direi che fino ad ora si puo' fare ben poco con queste librerie.

Adesso vi spiego come fare animazioni.

Incomincio a dire che, poiche' si usa una matrice per le trasformazioni, prima di fare una trasformazione (traslazione, rotazione o scala) e' necessario salvare la matrice corrente. Finite le operazioni di trasformazione ripristiniamo la matrice originale.
per fare cio', usiamo
codice:
	swf_pushmatrix(); // salva matrice
	swf_popmatrix(); // ricarica matrice
Ora cerco di spiegarvi meglio il concetto:
per il disegnso, si utilizza un a matrice (per come la sapevo io e' di 4*4, ma su queste librerie non so se e' uguale) che indica le trasformazioni, cioe' la traslazione, la rotazione e la scala. In questa matrice abbiamo delle posizioni ben precise che indicano le trasformazioni applicate (ad esempio, l'elemento 2, 2 puo' indicare la scala). Quando noi eseguiamo una trasformazione, non facciamo altro che moltiplicare la matrice corrente della trasformazione per un'altra matrice 4*4 che rapparesenta la trasformazione.
Questo implica che se eseguiamo una traslazione, lo facciamo su tutti gli elementi. Per questo motivo, e' necessario salvare la matrice e poi ripristinarla quando eseguiamo qualche operazione di questo tipo.
Questo sistema di coordinate pero' ha una particolarita' che a volte la rende difficile da usare, ma una volta che si prende familiarita' con il sistema, non vi accorgerete nemmeno di applicare questa tecnica:
Prendiamo come esempio un quadrato disegnato al centro dello schermo, alle corrdinate 0, 0.
Se noi trasliamo questo quadrato di 5 sull'asse X, spostiamo il quadrato a destra di 5. A questo punto, il centro dell'immagine sara' stato spostato sul centro del quadrato, perche' prima era ner centro del quadrato. Quindi, avete notato come il centro dell'immagine si sposti con le traslazioni. Se creiamo un punto alla coordinata 0, 0, notiamo che si crea al centro del quadrato.
Ma se volessimo crarlo nel VERO centro dell'immagine? A questo punto, usiamo pushmatrix e popmatrix.
Facendo la push, salviamo la matrice corrente, e lavoreremo su una copia. Quindi, dopo aver traslato la copia, facciamo popmatrix e otteniamo la figura traslata, ma con il centro dell'immagine dov'era prima.
Quindi, prima di fare traslazioni assicuriamoci di fare push e finite le traslazioni, la pop.
Per traslare, esistono le funzioni
codice:
	swf_translate(x, y, z);
	swf_rotate(gradi, asse);
	swf_scale(x, y, z);
per spostare la matrice corrente usiamo translate, che riceve 3 parametri, che indicano di quanto dobbiamo spostare per ogni asse. Se lavorate in 2D (come facciamo finora) mettete l'asse z a 0.

per ruotare, usiamo rotate, che riceve 2 parametri: i gradi di cui ruotare la matrice e l'asse su cui ruotare. L'asse va indicato con una stringa come 'x', 'y', 'z'. Non vorrei dire una cavolta 8non ho ancora provato) ma forse avete la possibilita' di ruotare contemporanemanete su 2 assi facendo ad esempio 'xy'. Se funziona con 2, molto probabilmente va anche con 3 assi.

Per scalare un'immagine, usate scale, che riceve 3 parametri, che indicano di quando deve essere scalata l'immagine. Se fate
swf_scale(1.0, 1.0, 1.0);
l'immagine resta delle stesse dimensioni attuali, quindi se mettete 0.5 dimezzate, 2.0 raddoppiate.
Non ho ancora provato, ma credo che se mettete valori negativi avete una specularita', quindi se fate
swf_scale(-1.0, 1.0, 1.0);
avrete un'oggetto perfettamente uguale ma speculare sull'asse x.
Mi baso sulle mie nozioni di OpenGL, ma non ho ancora provato su queste librerie.

Ritorno un secondo sulla tecnica di tralsazione di cui vi parlavo prima... ricordate? push e pop...
bene, tenete in considerazione anche l'ordine in cui fate le traslazioni! E' importante! Ruotare e poi spostare, non e' come postate e poi ruotare, ora capite il perche.
Torniamo al quadrato: se lo spostiamo a destra di 5, il centro dell'immagine si sposta con esso di 5. Quindi se adesso ruotiamo l'immagine di 90 gradi ruotera' in base al centro del quadrato.
E se volessimo fare ruotare il quadrato rispetto al centro dell'immagine?
i modi sono 2:
fare una push
fare un'altra push
traslare di 5
fare una pop
ruotare di 90
fare una pop

che e' il metodo + lungo e lento
l'altro consente una sola push:
fare una push
ruotare di 90
traslare di 5
fare una pop

il risultato e' lo stesso.
C'e' da notare pero', che l'ordine delle operazioni nella seconda sono invertite rispetto alla prima: prima ruotiamo e poi trasliamo.
Questo perche' non usiamo le varie push per ogni trasformazione.
Per questo che la tecnica consiste nell'eseguire le operazioni al contrario.

Il primo metodo (cioe' fare push e pop per ogni operazione) escludetelo, non solo perche' e' lento (e quandi si parla di grafica si deve parlare anche di velocita'), ma anche perche' vi e' un limite al numero di push e pop che si possono fare. Non credo che sia molto basso questo numero, ma per sicurezza e' meglio farne pochi.

BENE!
Ora che si sa come traslare, non ci resta che animare qualcosa. Per animare dobbiamo fare un ciclo che faccia tutto. Ricordate che il ciclo non viene eseguito run-time (come potrebbe essere per un gioco in C++) quindi non dovete temporizzare nulla. I tempi verranno stabiliti dai frame per sec.

Bhe, non credo ci sia molto da dire, piu' che altro c'e' da fare un esempio, in quanto avete gia i concetti base per fare un'animazione, solo che non ne avete mai vista una (o almeno credo).
Vi faccio notare anche, che -sempre perche' non viene eseguito sun-time- non serve che il ciclo sia ottimizzato per essere eseguito velocemente, ma serve che faccia cio' che deve.
Se avessi fatto un ciclo in C per animare qualcosa, avrei cercato di chiamare il meno possibile delle funzioni poiche' la chiamata fa perdere tempo. Qui, invece, possiamo permetterci di mettere il codice che disegna dentro una funzione, e dentro al ciclo gestiamo tutto per bene. Non so se me sono spiegato bene, ma un esempio fara' capire bene.

ANIMAZIONE della lineetta che avevo disegnato prima:
codice:
<?php
/*
funzione disegno:
disegna l'oggetto spastico
notatre che disegna un oggetto su 4 piani partendo da quello passato come parametro (ho problemi con la cencellazione, ma vedo se posso rimuoverli)
*/
function drawForm($plane)
{
	swf_pushmatrix();
	swf_placeobject(1, $plane);
	swf_placeobject(2, $plane+1);

	swf_pushmatrix();
	swf_addcolor(0, 102/255, 204/255, 0);
	swf_placeobject(3, $plane+2);
	swf_translate(30, 30, 0);
	swf_addcolor(1, 1, 1, 0);
	swf_placeobject(2, $plane+3);
	swf_popmatrix();

	swf_showframe(); // disegnamo sullo skermo
	swf_popmatrix();
}
/*
cancellazione del disegno
partendo da un piano cancella gli oggetti nei 4 piani
*/
function removeForm($plane)
{
	swf_removeobject($plane);
	swf_removeobject($plane+1);
	swf_removeobject($plane+2);
	swf_removeobject($plane+3);
}
/* 
 non si perde tempo nellachiamata 
 di funzioni, il risultato va nel file
*/
	$fileName = "akiProva2.swf";
	swf_openfile($fileName, 400, 400, 30, 0, 0, 0);
	echo 'File creato
';
	swf_ortho2(-200, 200, -200, 200);
	echo 'Inizializzata matrice
';
	swf_addcolor(1, 1, 1, 0);

// gli oggetti che verranno usati dalle funzioni per il disegno
	swf_defineline(1, -10, -10, 10, 10, 3);
	swf_definerect(2, -20, -20, -10, -10, 3); // larghezza 3
	swf_definerect(3, 20, 20, 10, 10, 0); // pieno

// 360 gradi, un giro completo
	for ($i = 0, $count = 0; $i < 360; $i+=8, $count += 4)
	{
		swf_pushmatrix(); // salviamo la matrice prima di trasformare qualcosa
		swf_rotate($i, 'z'); // ruotiamo sull'asse z
		swf_scale($i/90, $i/90, 1); // ingrandiamo
		drawForm($count); // disegnamo e visualizziamo sullo skermo
		removeForm($count); // eliminiamo il frame
/*
notare che non facciamo un refresh dell'immagine oram altrimenti avremmo i frame pieni e vuoti ad intermittenza
*/
		swf_popmatrix(); // ripristiniamo
	}
	
/*
questo fa lo stesso che il precendente ma rimpicciolisce l'immagine
*/
	for ($i = 360, $count = 360; $i > -1; $i-=8, $count -= 4)
	{
		swf_pushmatrix();
		swf_rotate($i, 'z');
		swf_scale($i/90, $i/90, 1);
		drawForm($count);
		removeForm($count);
		swf_popmatrix();
	}

	swf_closefile();
	echo "<EMBED src='$fileName' quality=high pluginspage=
'http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash' 
type='application/x-shockwave-flash' width='800' height='600'></EMBED>";
?>
Questo filmato va all'infinito... bhe, dovrebbe andare all'infinito, ma in effetti non va ^_^
non so perche', ma sul mio pc deve esserci qualche uso spropositato di memoria, infatti + va avanti, + rallenta, finche' esce con un errore che non so ca cosa sia originato.
provatelo se avete voglia e poi mi dite

Comunque credo possa andare bene come esempio, l'importate e' capire alle menopeggio cosa si deve fare.

Su un esempio ho visto altre funzioni da applicare all'animazione, ma non le capisco per ora, appena mi sono documentato spiego

Intanto potete smanettare un po con queste

Ciao