Scacci, Flex, Flash e ActionScript

Usiamo il Threshold

Da admin il 14 Jun 2009, Categoria: Actionscript 3.0

Il supporto del Threshold è stato introdotto con la versione 8 del Flash Player.

Il metodo threshold( ) è uno dei metodi più complessi nel panorama delle BitmapData API, ma abbastanza potente una volta che abbiamo capito come lavora. Il metodo usa due BitmapData:

  • destBitmap, che rappresenta la bitmap che sarà alterata.
  • sourceBitmap , che è l’altra bitmap che riceve dei parametri che sono gli sono stati passati. Questo metodo usa i pixel di questa bitmap per fare i suoi calcoli.

Il metodo confronta ogni pixel nel sourceBitmap contro un valore specificato, usando uno dei sei operatori confrontati. Per ulteriori approfondimenti si può consultare il LiveDocs di Adobe.

Ecco in breve la sintassi del metodo:
destBitmap.threshold(sourceBitmap,

sourceRect,
destPoint,
operation,
threshold,
color,
mask,
copySource)

Il parametro, sourceRect , è u’istanza della classe flash.geom.Rectangle. Esso definisce quale porzione del sourceBitmap vogliamo usare per il confronto. Se vogliamo usare l’intera, possiamo passare in sourceBitmap.rect come un valore di questo parametro.

Il parametro destPoint specifica il punto nel destBitmap nel quale i pixels iniziano ad essere affetti dall’alterazione, l’immagine sourceBitmap e sovrappoosta sulla destBitmap. Se vogliamo usare come punto di destinazione 0, 0 basta passarli come parametri al new Point( )  es.: (new Point(0, 0 )).

Il parametro operation è una delle sei stringhe che rappresentano gli operatori di confronto in Actionscript, esse sono: < , <= , > , >= , == , e !=

Il parametro successivo è threshold, ogni pixel viene confrontato con questo valore.

Il parametro mask serve per isolare un particolare canale di colore.

Adesso facciamo un esempio pratico sull’uso del threshold:

?View Code ACTIONSCRIPT
import caurina.transitions.*;
 
var url:String = "images/foto7_b.jpg";
var image1:Bitmap;
var destimage2:Bitmap;
var perc:Number;
var loader:Loader;
var image:Bitmap;
 
var holder:MovieClip;
holder = new MovieClip();
addChild(holder);
 
configureAssets();
 
function configureAssets():void {
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler);
loader.contentLoaderInfo.addEventListener(Event.OPEN, openHandler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
 
var request:URLRequest = new URLRequest(url);
loader.load(request);
holder.addChild(loader);
}
function completeHandler(e:Event):void {
//trace("Caricamento Completato");
 
tf.text = "Caricamento Completato";
}
function initHandler(e:Event):void {
 
var loaderHgt = e.currentTarget.height;
var loaderWdt = e.currentTarget.width;
 
var src_bmpd1:BitmapData = new BitmapData(loaderWdt, loaderHgt);
src_bmpd1.draw(this);
 
var dest_bmpd2:BitmapData = new BitmapData(loaderWdt, loaderHgt, false);
destimage2 = new Bitmap(dest_bmpd2);
holder.addChild(destimage2);
 
var j:Number = 0;
 
function onTransitions():void {
 
j++;
//trace(j)
dest_bmpd2.threshold(src_bmpd1, new Rectangle(0, 0, src_bmpd1.width, src_bmpd1.height), new Point(0, 0), "&gt;=", (j/55) * 0xFFFFFF, 0xFFFFFFFF, 0xFFFFFF, true);
}
Tweener.addCaller(this, {onUpdate:onTransitions, time:1, count:55, transition:"linear"});
 
function onRepeatEffect():void {
 
Tweener.addCaller(this, {onUpdate:onTransitions, time:1, count:55, transition:"linear"});
 
}
 
repeat_btn.addEventListener(MouseEvent.CLICK, onRepeatEffect);
}
 
function openHandler(e:Event):void {
 
//trace("Caricamento inizializzato, attendere il completamento!");
 
}
 
var tf:TextField = new TextField();
tf.autoSize = TextFieldAutoSize.LEFT;
tf.textColor = 0xFF0000;
tf.x = 30;
tf.y = 366;
addChild(tf);
 
function progressHandler(e:ProgressEvent) {
 
perc = Math.round((e.bytesLoaded/e.bytesTotal)*100);
//trace("Caricamento in corso: "+perc+"%");
tf.text = String("Loading: " + perc + "%");
}
 
function ioErrorHandler(e:IOErrorEvent):void {
trace("Impossibile caricare l'immagine: " + url);
 
}
 
/////////////////////////
 
repeat_btn.label = "Repeat";

Download source file

Guarda esempio

Lascia un Commento :, , , Leggi...

Flash Player 10, Loader.unloadAndStop

Da admin il 26 May 2009, Categoria: Actionscript 3.0

Con Flash Player 10 è stato aggiunto un nuovo metodo “Loader.unloadAndStop()“, questa nuova feature automatizza i processi di scaricamento che precedentemente veniva fatto manualmente con il metodo “Loader.unload()“. Questo metodo tenta di scaricare file SWF caricati utilizzando Loader.load() o Loader.loadBytes() mediante la rimozione dei riferimenti agli oggetti EventDispatcher, NetConnection, Timer, Sound o Video del file SWF secondario. Di conseguenza, per il file SWF secondario e il relativo elenco di visualizzazione si verifica quanto segue:

  1. i suoni vengono interrotti;
  2. listener di eventi dello stage vengono rimossi;
  3. i listener di eventi per enterFrame, frameConstructed, exitFrame, activate e deactivate vengono rimossi;
  4. i timer vengono interrotti;
  5. le istanze Camera e Microphone vengono scollegate;
  6. i clip filmato vengono interrotti.

Il metodo unloadAndStop() accetta pure un parametro gc (garbage collector) che di default è impostato su true, esso suggerisce al garbage collector di eseguire gli oggetti secondari SWF (true) o non eseguirli (false).

Adesso vediamo un esempio su come usare il metodo unloadAndStop():

?View Code ACTIONSCRIPT
var file:String = "external.swf";
var ldr:Loader;
var mcload:MovieClip;
var urlReq:URLRequest;
 
ldr = new Loader();
addChild(ldr);
urlReq = new URLRequest(file);
ldr.load(urlReq);
 
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onSWFloaded);
 
function onSWFloaded(e:Event):void {
 
ldr.x = 10;
ldr.y = 50;
 
ldr.contentLoaderInfo.removeEventListener(Event.COMPLETE, onSWFloaded);
 
mcload = ldr.content as MovieClip;	
 
}
 
btnUnload.addEventListener(MouseEvent.CLICK, onSWFunload);
 
function onSWFunload(e:MouseEvent):void {
 
	ldr.unloadAndStop();
}

Ecco qualche link:
TechNote Adobe
Grant Skinner

Lascia un Commento :, , Leggi...

Embed Fonts in ActionScript 3.0

Da admin il 02 Mar 2009, Categoria: Actionscript 3.0

In questo esempio vedremo come fare l’embed del font in Flash. Creiamo un file  embedfont.fla e lo salviamo. Adesso facciamo l’embed del font, c’è da dire che qualora si vogliono utilizzare ad esempio tre versioni diverse dello stesso font (ovvero normale, bold e corsivo) bisogna embeddare il font tre volte con tre nomi diversi, adesso vediamo la procedura per embeddare un font in Flash.

1) Selezioniamo Window > Library (Finestra > Libreria)se la libreira di flash non è aperta,
2) Dal menu pop-up Options (Opzioni) selezioniamo New Font (Nuovo Font), quindi apparirà la finestra di dialogo del simbolo,
3) Sotto Font, selezioniamo Adobe Caslon Pro,
4) Quindi digitiamo sopra il nome che desideriamo attribuire al nostro font di libreria, nella fattispecie assegniamo AdobeCaslon, quiindi clicchiamo su OK. A questo punto nella Libreria (Library) dovrebbe apparire un font con il nome AdobeCaslon.
5) Selezioniamo nella Libreria (Library) AdobeCaslon e su di esso facciamo click di destro, apparirà il menu pop-up di scelta qui selezioniamo l’opzione Linkage (Concatenamento). Nella finestra di dialogo Linkage (Concatenamento) selezioniamo Export For ActionScript. A questo punto apparirà una finestra dove dirà che la classe è stata creata quindi facciamo click su OK.

Adesso operiamo col codice, creiamoci una Classe FontEmbed, quindi in Flash facciamo File > New(Nuovo) e selezioniamo dalla finestra di dialogo ActionScript File. Fatto questo salviamo il file nella stessa directory dove risiede il file FLA, lo salviamo assegnando il nome FontEmbed.

N.B. nella Library (Libreria) creiamo altri due simboli del font Adobe Caslon Pro uno con Bold e l’altro con Italic, in questo esempio abbiamo assegnato i seguenti nomi AdobeCaslon per la versione normale del font, AdobeCaslonBold per quella Bold e AdobeCaslonItalic per quella Italic.

Adesso siamo pronti per scrivere il codice:

?View Code ACTIONSCRIPT
package {
 
	import flash.display.*;
	import flash.text.*;
 
	public class FontEmbed extends Sprite {
 
		private var msg:String = "Lorem ipsum dolor sit amet";
		//
		private var fmt:TextFormat;
		private var tf:TextField;
		private var adobecaslon:AdobeCaslon = new AdobeCaslon();
 
		private var format:TextFormat;
		private var tf_bold:TextField;
		private var adobecaslon_bold:AdobeCaslonBold = new AdobeCaslonBold();
 
		private var text_fmt:TextFormat;
		private var tf_italic:TextField;
		private var adobecaslon_italic:AdobeCaslonItalic = new AdobeCaslonItalic();
 
		public function FontEmbed() {
 
			fmt = new TextFormat();
			fmt.font = adobecaslon.fontName;
			fmt.color = 0x333333;
			fmt.size = 20;
 
			tf = new TextField();
			tf.embedFonts = true;
			tf.defaultTextFormat = fmt;
			tf.text = msg;
			tf.autoSize = TextFieldAutoSize.LEFT;
			tf.x = 10;
			tf.y = 10;
			addChild(tf);
 
			//Adobe Caslon Bold
			format = new TextFormat();
			format.font = adobecaslon_bold.fontName;
			format.color = 0x333333;
			format.size = 20;
 
			tf_bold = new TextField();
			tf_bold.embedFonts = true;
			tf_bold.defaultTextFormat = format;
			tf_bold.text = msg;
			tf_bold.autoSize = TextFieldAutoSize.LEFT;
			tf_bold.x = 10;
			tf_bold.y = 45;
			addChild(tf_bold);
 
			//Adobe Caslon Italic
			text_fmt = new TextFormat();
			text_fmt.font = adobecaslon_italic.fontName;
			text_fmt.color = 0x333333;
			text_fmt.size = 20;
 
			tf_italic = new TextField();
			tf_italic.embedFonts = true;
			tf_italic.defaultTextFormat = text_fmt;
			tf_italic.text = msg;
			tf_italic.autoSize = TextFieldAutoSize.LEFT;
			tf_italic.x = 10;
			tf_italic.y = 80;
			addChild(tf_italic);
		}
		//
	}
}

A questo punto andiamo sul FLA embedfont e nella Document Class facciamo l’import della nostra Classe FontEmbed.

Download source file

Guarda esempio

(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)

Lascia un Commento :, Leggi...

Mobile Dev Day

Da admin il 18 Feb 2009, Categoria: Meetings

Il 6 Marzo 2009 a Roma si svolgerà l’evento Mobile Dev Day, la sede dell’evento è l’Hotel Ritz sito in Piazza Euclide. Durante l’evento si parlerà delle nuove feature di Flash Lite 3.1.

La partecipazione al meetings è totalmente gratuita, per partecipare basta registrarsi (link).

Altre info sull’evento si possono ottenere consultando questo link.

Lascia un Commento :, Leggi...

Animazioni con CSS

Da admin il 08 Feb 2009, Categoria: XHTML+CSS

CSS Animation permette di ottenere vere e proprie animazioni all’interno di pagine web, senza ricorrere a tecnologie come JavaScript o Flash. C’è da dire che il supporto delle animazioni non avviene su tutti gli browser, infatti il supporto di queste specifiche sono state introdotte nelle ultime build di Safari il cui cuore è basato su WebKit (un motore di rendering opensource).

Le Transitions specificate usano le seguenti proprietà:

  • transition-property
  • transition-duration
  • transition-timing-function
  • transition

Ecco un semplice esempio di codice:

div {
  opacity: 1;
  -webkit-transition: opacity 1s linear;
}
 
div:hover {
  opacity: 0;
}

questa semplice transition permette di effettuare un fade-out all’hover sulla div.

Clicca su CSS Animation per altri esempi. Si raccomanda di usare Safari di Apple per una corretta visualizzazione delle animazioni.

Lascia un Commento :, Leggi...

Bug IE6 carattere duplicato

Da admin il 13 Jan 2009, Categoria: XHTML+CSS

Un piccolo Tips su un bug di IE6 sulla duplicazione dei caratteri, dovuta al fatto che IE6 non digerisce bene i commenti <!– End of the body pagina –>, da qui il problema della duplicazione dei caratteri.

Attraverso delle porzioni di codice vedremo la soluzione e il problema.

Problema:

<!-- End of the body pagina -->
<p id="footer">
<p id="right_clm">
 
Lorem impsum amet 
 
Lorem ipsum dolor sit amet, consectetur adipisicing elit
 
<!-- CLEAR -->
 
<div class="clear_left"></div>

Con questa porzione di codice si dovrebbe verificare l’effetto indesiderato della duplicazione dei caratteri.

Adesso vediamo le strade percorribili per la soluzione:

  • La prima soluzione ed è quella più semplice è quella dei commenti condizioniali, es: <!–[if !IE]> End of the body pagina <![endif]–> in questo modo si dovrebbe risolvere il bug;
  • La seconda soluzione è quella di dare -3px di margin-right sull’ultimo float:left;

Soluzione:

Commento condizionale:

<!–[if !IE]> End of the body pagina <![endif]–>
<div id=”footer”>
<div id=”right_clm”>
<p>P.IVA.: </p>
<p>Copyright Pronto Mutui © 2008 - All rights reserved</p>
</div>
</div>
<!– CLEAR –>
<div class=”clear_left”></div>
 
Seconda soluzione -3px:
 
#footer
{
background-image: url(../images/bg_footer.jpg);
background-repeat: no-repeat;
float: left;
height: 69px;
width: 750px;
margin-bottom: 2px;
margin-top: 9px;
margin-right: -3px;
}
… altre regole
 
#right_clm
{
float: right;
margin-right: 18px;
margin-top: 23px;
}
#right_clm p
{
font-family: Verdana, Geneva, sans-serif;
font-size: 9px;
color: #111;
margin: 0px;
padding: 0px;
line-height: 19px;
text-align: right;
}
 
Codice (X)HTML:
 
<!– End of the body pagina –>
<div id=”footer”>
<div id=”right_clm”>
<p>P.IVA.: </p>
<p>Copyright Pronto Mutui © 2008 - All rights reserved</p>
</div>
</div>
<!– CLEAR –>
<div class=”clear_left”></div>
Lascia un Commento :, Leggi...

Applicare un filtro creato con Pixel Bender con AS 3.0

Da admin il 25 Dec 2008, Categoria: Actionscript 3.0

In questo esempio vedremo come applicare un filtro creato con il toolkit Pixel Bender, attraverso il codice Actionscript 3.0; in merito dobbiamo ricordare che per realizzare questo esempio dobbiamo utilizzare Flash CS4 e settare le impostazioni di pubblicazione su FlashPlayer 10, in quanto i filtri creati con Pixel Bender possono essere utilizzati con FlashPlayer 10 e versioni successive. Prima di passare al codice AS 3.0, c’è da dire che bisogna esportare il file creato con Pixel Bender nel formato “.pbj” in modo tale che possa essere caricato sull’swf finale, per fare ciò bisogna procedere nel seguente modo: da Pixel Bender scegliere File > Export Filter for Flash Player, quindi si aprirà l’apposita finestra di dialogo per il salvataggio del file, nell’esempio il file pbj viene messo nella stessa cartella dove è contenuto il fla.

Adesso passiamo al code actionscript 3.0:

?View Code ACTIONSCRIPT
package
{
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.filters.*;
 
public class Main extends Sprite
{
private var pathFilter:String = "effettoart.pbj";
private var pathImage:String = "images/IMG_0867.jpg";
private var shader:Shader;
private var shader_filter:ShaderFilter;
private var urlRequest:URLRequest;
private var urlLoader:URLLoader;
private var loader_ldr:Loader;
private var cont_mc:MovieClip;
 
public function Main():void
{
cont_mc = new MovieClip();
cont_mc.x = 3;
cont_mc.y = 3;
addChild(cont_mc);
init();
}
 
private function init():void
{
urlRequest = new URLRequest(pathImage);
urlLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, loadImage);
urlLoader.load(urlRequest);
}
private function loadImage(e:Event):void
{
loader_ldr = new Loader();
loader_ldr.load(urlRequest);
cont_mc.addChild(loader_ldr);
//Richiamo della funzione loadFilter per applicare il filtro all'immagine
loadFilter();
}
private function loadFilter():void
{
urlRequest = new URLRequest(pathFilter);
urlLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.addEventListener(Event.COMPLETE, loadCompleteFilter);
urlLoader.load(urlRequest);
}
 
private function loadCompleteFilter(e:Event):void
{
shader = new Shader(e.target.data);
/*Potete manipolare a vostro piacimento i valori contenuti tra le parentesi quadre
per cambiare i colori dell'immagine */
shader.data.intensityClr.value = [0.0];//canale red
shader.data.intensityClr.value = [0.0];//canale green
shader.data.intensityClr.value = [0.0];//canale blue
applyFilter();
}
 
private function applyFilter():void
{
//Applicazione del filtro alla MovieClip "cont_mc"
shader_filter = new ShaderFilter(shader);
cont_mc.filters = [shader_filter];
}
//
}
}
Lascia un Commento :, , Leggi...

Creare un semplice effetto con Pixel Bender

Da admin il 25 Dec 2008, Categoria: Pixel Bender

In questo breve esempio vedremo come creare un semplice effetto con Adobe Pixel Bender, il tutto con l’ausilio di poche righe di codice.

La prima parte del codice fornisce le informazioni su chi ha creato il filtro, namespace, nome del filtro, versione del linguaggio e etc…

Nella seconda parte vengono dichiarati alcuni parametri.

L’ultima parte del codice è composta dalla funzione evaluatePixel: questa funzione rappresenta il “fulcro” del filtro, in quanto si occuperà di analizzare uno per uno i pixel dell’immagine ed è all’interno di tale funzione che possiamo modificare il pixel attualmente in esame in modo tale che l’immagine completa risulti modificata.

Adesso passiamo al codice:

<languageversion></languageversion>kernel EffectArtist&lt;   namespace : "net.iwebcreate";vendor : "Marcello Ruta";
 
version : 1;
 
description : "Effetto Artistico Posterizza";
 
&lt;
 
{
 
parameter float4 intensityClr
 
&gt;
 
minValue:float4(0.0,0.0,0.0,0.0);
 
maxValue:float4(1.0,1.0,1.0,1.0);
 
defaultValue:float4(0.0,0.0,0.0,1.0);
 
&gt;;
 
input image4 src;
 
output pixel4 result;
 
void
 
evaluatePixel()
 
{
 
float2 coord = outCoord();
 
float2 hOffset = float2(pixelSize(src).x, 1.0);
 
float2 orOffset = float2(pixelSize(src).y, 1.0);
 
pixel4 sx = sampleNearest(src, coord - hOffset - orOffset);
 
pixel4 center = sampleNearest(src, coord);
 
pixel4 dx = sampleNearest(src, coord + hOffset + orOffset);
 
result = (sx - center + dx + intensityClr) / 0.7;
 
}
 
}

Per altre info potete consultare questo tutorial.

Lascia un Commento Leggi...

Problema installazione Flash Player 10 su Vista

Da admin il 06 Nov 2008, Categoria: Uncategorized

Grazie ad un suggerimento di jaco@pixeldump, ho risolto un problema sull’installazione del flashplayer 10 su Vista Home Edition.. Pertanto volevo condividere questa risorsa con la rete.

Clicca qui per leggere la Technote di adobe.

Su questa technote viene spiegato come superare questo problema, infatti a volte capita che l’installazione del Flash Player fallisce perchè non si hanno le autorizzazioni nel Registro di sistema.

Ecco la soluzione:

  1. Scaricare dal sito di Microsoft SubInACL tool (download)
  2. Installare SubInACL
  3. Scaricare reset_fp10.zip file (Download)
  4. Decomprimere il file zippato, prendere reset_fp10.cmd e metterlo nella stessa directory dove viene installato SubInACL >> C:\Program Files\Windows Resource Kits\Tools\
  5. A questo punto fare doppio click reset_fp10.cmd e aspettare che faccia la pulizia del registro.
  6. Quando apparirà “Press any key to continue”, allora la procedura di pulitura è finita
  7. A questo punto si è pronti per installare il Flash Player
Lascia un Commento Leggi...

Caricare delle variabili da un file .txt

Da admin il 26 Oct 2008, Categoria: Actionscript 3.0, Uncategorized

Tool: Flash CS 3
Actionscript 3.0

In questo snippet di codice vedremo come caricare delle varibiali da un file txt esterno. Le classi in gioco sono la classe URLLoader, URLRrquest e URLLoaderDataFormat.

Ecco il codice:

?View Code ACTIONSCRIPT
var pathFile:String = "fileTxt.txt"; // memorizziamo il percorso del file
 
 
var urlRequest:URLRequest = new URLRequest(pathFile);
 
var loader_txt:URLLoader = new URLLoader();
loader_txt.dataFormat = URLLoaderDataFormat.VARIABLES; //La classe URLLoaderDataFormat fornisce i valori che specificano il modo in cui vengono ricevuti i dati scaricati.
 
function loadContent(e:MouseEvent):void
{
loader_txt.addEventListener(Event.COMPLETE, onFileLoaded);
 
loader_txt.load(urlRequest); // carichiamo il file txt
 
function onFileLoaded(e:Event):void
{
text_TA.text += loader_txt.data.varTitle + "\n\n"; // accediamo alla variabile varTitle del txt
text_TA.text += loader_txt.data.varBody + "\n\n"; // accediamo alla variabile varBody del txt
text_TA.text += loader_txt.data.varScript; // accediamo alla variabile varScript del txt
 
/* con questa sintassi di codice si ottiene lo stesso risultato di sopra
text_TA.text += e.target.data.varTitle + "\n\n";
text_TA.text += e.target.data.varBody + "\n\n";
text_TA.text += e.target.data.varScript;
*/
}
}
 
load_btn.addEventListener(MouseEvent.CLICK, loadContent); // al clic sul pulsante Load File mandiamo in out i dati caricati
Lascia un Commento Leggi...

Cerca qualcosa?

Usa il form sottostante per la ricerca nel sito:

Ancora non hai trovato quello che cerchi? Lascia un commento su un post!