giovedì 4 dicembre 2008

Teorema di Pitagora e ActionScript

In un sistema cartesiano come quello di flash è possibile ottnere la distanza tra due punti utilizzando il teorema di Pitagora.

Teorema: La lunghezza della ipotenusa è pari alla radice della somma delle aree costruite sui due cateti.

In Flash ottenuti i 2 punti di partenza e i 2 punti di arrivo sull'asse x e sull'asse y si può procedere per ottenere la lunghezza della "linea di movimento" con il teorema.

Problema di esempio
La sfera è a x 10 e y 10.
La sfera deve andare a x 30 e y 46.
Quale è la distanza che intercorre tra i due elementi?

trace(calcolaDistanza(10, 30, 10, 46));

function calcolaDistanza(x1:Number, x2:Number, y1:Number, y2:Number):Number {
var distanzaX:Number = x2 - x1;
var distanzaY:Number = y2 - y1;
return Math.sqrt(distanzaX * distanzaX + distanzaY * distanzaY);
}

Soluzione
La soluzione è ottenere la distanza dei punti sull'asse x e sull'asse y. Una volta ottenuti si hanno i due cateti del triangolo. A quel punto applicare il teorema di pitagora per trovare l'ipotenusa.

venerdì 28 novembre 2008

Inerzia - Easing

Per ottenere un effetto inerzia: calcolare la distanza tra i due punti. L'oggetto che deve spostarsi si sposta a metà della distanza da percorrere. E poi di nuovo a metà della metà. E poi di nuovo. Fino a raggiungere un approsimazione prossima allo zero. Questo ovviamente in un enterFrame per ottenere l'animazione.

La formula generica che potrete facilmente memorizzare:
PassoSuccessivo=(DoveVoleteArrivare-DoveSieteAdesso)/ValoreInerzia;

da http://www.webmasterpoint.org/appunti/flash/83.asp

inerzia = 2;

palla_mc._x = 0
palla_mc._y = 200

var posPallaX:Number = this.palla_mc._x
var posPallaY:Number = this.palla_mc._y
var posMouse:Number = _root._xmouse

this.onEnterFrame = function () {
asseX()
asseY()
}

function asseX() {
//si calcola la distanza tra due punti e si fa andare la palla a metà poi ancora a metà della metà e così via
posMouse = _root._xmouse;
posPallaX = palla_mc._x;
distX = posMouse - posPallaX;
distXMeta = distX / 2;
palla_mc._x += distXMeta;
}

function asseY() {
posMouse = _root._ymouse;
posPallaY = palla_mc._y;
distY = posMouse - posPallaY;
distYMeta = distY / 2;
palla_mc._y += distYMeta;
}

martedì 26 agosto 2008

Problemi di sovrapposizioni

Per disabilitare l'interagire di elementi nei confronti del mouse:

contenitore.mouseChildren = false
contenitore.mouseEnabled = false

Dentro contenitore inserire l'elemento che si vuole disabilitare. Nel mio caso un campo di testo compariva sopra un bottone e in questo modo impediva il rollover del bottone stesso.

venerdì 18 luglio 2008

XML in AS 3

Esplorazione dell'xml

//"whitespace ignore" è di default
//per l'esplorazione è già tutto incluso, non serve realizzare cicli for per inserire i dati in un array: fa già tutto da solo.

trace(book.title) trace(book.authors.author[0])

Sintassi del doppio punto e dell'asterisco

//Permette di raggiungere un punto dell'xml senza specificarne il percorso completo. Con l'aggiunta dell'asterisco si possono esplorare determinati campi escludendo gli elementi parentali.

trace(book..author)
<author>
<firstname>Rich</firstname>
<lastname>Shupe</lastname>
</author>
<author>
<firstname>Zevan</firstname>
<lastname>Rosser</lastname>
</author>
trace(book..author.*)
<firstname>Rich</firstname>
<lastname>Shupe</lastname>
<firstname>Zevan</firstname>
<lastname>Rosser</lastname>

XML di esempio

<book>
<publisher name="O’Reilly"/>
<title>Learning ActionScript 3.0</title>
<subject>ActionScript</subject>
<authors>
<author>
<firstname>Rich</firstname>
<lastname>Shupe</lastname>
</author>
<author>
<firstname>Zevan</firstname>
<lastname>Rosser</lastname>
</author>
</authors>
</book>;

Fonti

  • Titolo: Learing ActionScript 3.0 A Beginners Guide
  • Editore: O'Reilly

Filtrare i dati xml (espansione 16 settembre 2009)

var categoria = datiXml..album.(description == chiave).preview
<preview>http://blog.makkiadesign.com/clienti/marras/ssp_director/p.php?a=XF9VXiM7PCoqQFtFPzU5Py47JjclOjoyKzclMzI%2BNzknIi0mOg%3D%3D&amp;m=1253001711</preview>
<preview>http://blog.makkiadesign.com/clienti/marras/ssp_director/p.php?a=XF9VXiM4MyIqQFtFPzU5Pi47JjclOjoyKzclMzI%2BNzknIi0mOg%3D%3D&amp;m=1253097804</preview>
<gallery>
<name>shop</name>
<album>
<id>184</id>
<name><![CDATA[shop_RDT454C-RT517B-735]]></name>
<description>abiti</description>
<preview>http://blog.makkiadesign.com/clienti/marras/ssp_director/p.php?a=XF9VXiM7PCoqQFtFPzU5Py47JjclOjoyKzclMzI%2BNzknIi0mOg%3D%3D&amp;m=1253001711</preview>
<date_taken/>
</album>
<album>
<id>185</id>
<name><![CDATA[shop_RDT_463C-RT513C-736]]></name>
<description>abiti</description>
<preview>http://blog.makkiadesign.com/clienti/marras/ssp_director/p.php?a=XF9VXiM4MyIqQFtFPzU5Pi47JjclOjoyKzclMzI%2BNzknIi0mOg%3D%3D&amp;m=1253097804</preview>
<date_taken/>
</album>
</gallery>

martedì 24 giugno 2008

Form

Gli elementi fondamentali di un form

Form
Da inizio al form
Fieldset
Gruppa una determinata serie di dati
Legend
Da un titolo a quell'insieme di dati
Label
Titola e rende acessibile una componente input
Input
Imposta uno spazio compilabile dall'utente
Type
Tipologia dello spazio compilabile (può essere un button oppure del testo etc)

Per la personalizzazione via codice articolo di "A List Apart": http://www.alistapart.com/articles/prettyaccessibleforms