Actionscript 3.0
Usiamo il Threshold
by admin on Jun.14, 2009, under 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:
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), ">=", (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"; |
Flash Player 10, Loader.unloadAndStop
by admin on May.26, 2009, under 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:
- i suoni vengono interrotti;
- listener di eventi dello stage vengono rimossi;
- i listener di eventi per
enterFrame,frameConstructed,exitFrame,activateedeactivatevengono rimossi; - i timer vengono interrotti;
- le istanze Camera e Microphone vengono scollegate;
- 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():
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
Embed Fonts in ActionScript 3.0
by admin on Mar.02, 2009, under 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:
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.
Applicare un filtro creato con Pixel Bender con AS 3.0
by admin on Dec.25, 2008, under 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:
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]; } // } } |
Caricare delle variabili da un file .txt
by admin on Oct.26, 2008, under 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:
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 |
Gallery XML con scrolling verticale
by admin on Sep.26, 2008, under Actionscript 3.0
Tool: Flash CS 3
Actionscript 3.0
Una gallery XML semplicissima in Actionscript 3.0, la gallery è corredata di uno scrolling verticale e di una Classe per il preload delle immagini. La classe è riutilizzabile anche per altri progetti in AS 3.0. Le transizioni sulle immagini sono effettuate con l’uso delle caurina.transitions.Tweener, una classe usata per la creazione di tweenings e altre transitions attraverso codice actionscript.
Passiamo al codice:
/* Eseguiamo l'import delle Caurina transition e della Classe CustomLoader*/ import caurina.transitions.*; import net.iwc.CustomLoader; // Dichiariamo alcune variabili var xmlFile:String = "gallery.xml"; var pathImage:String = "images/"; var yPos:int; var nodeCount:int; var counter:int = 0; var xml:XML; var intervalDuration:int = 1000; var intervalID:int; var descrArr:Array = new Array; var lgImageArr:Array = new Array; var listNode:XML; var preloadPoint:Point = new Point(10, 10); var loader_ldr:CustomLoader //Creiamo in runtime il box che conterrà le clip immagine var contentBox:MovieClip = new MovieClip(); contentBox.x = 0; contentBox.y = 0; addChild(contentBox); //Creiamo in runtime una mask che poi applicheremo al contentBox var masker:MovieClip = new MovieClip(); masker.graphics.beginFill(0x333333,1); masker.graphics.drawRect(0, 5, 100, 380); masker.graphics.endFill(); addChild(masker); //Creiamo in runtime un contenitore dove caricheremo l'immagine di dettaglio var container_mc:MovieClip = new MovieClip(); container_mc.x = 150; container_mc.y = 10; addChild(container_mc); //Aggiungiamo una funzione per il caricamento dell'xml function callXML():void { var urlRequest:URLRequest = new URLRequest(xmlFile); var loader:URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE, xmlLoaded); loader.load(urlRequest); } callXML(); //Aggiungiamo una funzione per leggere il contenuto dei nodi xml function xmlLoaded(e:Event):void { var loader:URLLoader = URLLoader(e.target); xml = new XML(loader.data); nodeCount = xml..images.smImage.length(); //trace(nodeCount) for each (listNode in xml..images) { var descr:String = listNode.descr; var lgImage:String = listNode.lgImage; descrArr.push(descr); lgImageArr.push(lgImage); } /*trace(lgImageArr); trace(descrArr);*/ } intervalID = setInterval(createList, intervalDuration, descrArr, lgImageArr); function createList(txt:Array, img:Array):void { var itemClip:MovieClip = new MovieClip(); itemClip.buttonMode = true; itemClip.idCur = img[counter]; //creiamo una variabile dinamica idCur itemClip.curText = txt[counter]; //creiamo una variabile dinamica curText itemClip.x = 10; itemClip.y = 10; itemClip.y = yPos; yPos += 90; contentBox.addChild(itemClip); //trace(yPos) loader_ldr = new CustomLoader(pathImage + xml..images.smImage[counter], preloadPoint); loader_ldr.x = 0; loader_ldr.y = 0; //loader_ldr.load(new URLRequest(pathImage + xml..product.smImage[counter])); itemClip.addChild(loader_ldr); counter++; //trace(counter); if (counter == nodeCount) { //trace("Clearing Interval"); clearInterval(intervalID); } itemClip.alpha = 0; Tweener.addTween(itemClip, {alpha:1, time:.7, transition:"linear"}); itemClip.addEventListener(MouseEvent.CLICK, loadContent); function loadContent(e:MouseEvent) { //trace(e.currentTarget.idCur) contentLoaded(e.currentTarget.curText, e.currentTarget.idCur); } } function contentLoaded(text_str:String, pathImg:String) { var ldr:CustomLoader = new CustomLoader(pathImage + pathImg, preloadPoint); container_mc.addChild(ldr); container_mc.alpha = 0; Tweener.addTween(container_mc, {alpha:1, time:.7, transition:"linear"}); //ldr.load(new URLRequest(pathImage + pathImg)); text_txt.text = text_str; } |
da questo codice ho omesso la parte riguardante il codice sulla scrollbar che trovate all’interno del fla
Download del file
Controllare gli intervalli di tempo con setInterval o la Timer Class
by admin on Sep.23, 2008, under Actionscript 3.0
Tool: Flash CS 3
Actionscript 3.0
Il setInterval.
Il setInterval esegue una funzione a un intervallo specificato (in millisecondi).
La Timer class.
Uno dei modi migliori per gestire il tempo in ActionScript 3.0 è quello di utilizzare la classe Timer (flash.utils.Timer), che può essere utilizzato per l’invio di eventi ogni volta che un intervallo è raggiunto.
Per avviare un timer, è necessario creare un’istanza della classe Timer, ad esempio var myTimer:Timer = new Timer(); in questo modo creiamo un oggetto myTimer..
Il vantaggio dell’uso della classe Timer dovrebbe derivare dal fatto che si fa un dispaccio degli eventi affinchè l’intervallo venga raggiunto, mentre con setInetrval non si dispaccia nessun evento.
Adesso facciamo un esempio con il quale otteniamo a livello di funzionalità lo stesso risultato. Per eseguire questo esempio creiamo una movieclip che funge da pulsante. Alla fine sullo stage dobbiamo avere due istanze di movieclip con i seguenti nomi di istanza: my_btn e my_timer.
Ecco il codice:
// Variabili var counter:int = 0; var stopCount:int = 10; var duration = 200; var intervalId:int; // Set Interval function interval(e:MouseEvent):void { intervalId = setInterval(repeatInterval, duration); } function repeatInterval():void { counter++; trace("contatore: "+counter); // restituisce 1, 2, 3, 4, 5, ..... if (counter == stopCount) { clearInterval(intervalId); counter = 0; // azzeriamo il contatore trace("clear intervalId!!"); } } my_btn.addEventListener(MouseEvent.CLICK, interval); my_timer.addEventListener(MouseEvent.CLICK, timerEvent); // Timer Class var timer:Timer; function timerEvent(e:MouseEvent):void { timer = new Timer(duration, stopCount); timer.addEventListener(TimerEvent.TIMER, timerHandler); timer.addEventListener(TimerEvent.TIMER, timerComplete); timer.start(); } function timerHandler(e:TimerEvent):void { counter++; trace("contatore: "+counter); // restituisce 1, 2, 3, 4, 5, ..... } function timerComplete(e:TimerEvent):void { if (counter == stopCount) { trace("clear TimerEvent!!"); counter = 0; // azzeriamo il contatore } } |
Ecco alcuni link che possono risultare utili:
Menu XML con effetto Fade
by admin on Apr.27, 2008, under Actionscript 3.0
Tool: Flash CS 3
Actionscript 3.0
In questo esercizio vedremo come creare un menu da un file Xml, assegnando ad ogni istanza di pulsante creata in runtime una clip filmata residente nella Libreria del filmato, inoltre abbiamo embeddato il font nella libreria.
Passiamo al codice:
// Eseguiamo l'import delle classi per eseguire le transitions
import fl.transitions.*;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
import flash.external.*;var intervalDuration:Number = 100;
var intervalId:uint;
var counter:uint;
var itemCount:uint;
var instanceName:Object;
var idCurrent:Number;
var myFont:cmc = new cmc();
var format:TextFormat = new TextFormat();
format.font = myFont.fontName;
format.color = "0xFFFFFF";
format.size = 11;
format.letterSpacing=1;
var menuXML:XML;
var urlXml:String;
urlXml = "xml/menuitem.xml";
function loadXml():void {
var loadXML:URLLoader = new URLLoader();
loadXML.addEventListener(Event.COMPLETE, parseXML);
var requestXML:URLRequest = new URLRequest(urlXml);
try {
loadXML.load(requestXML);
} catch (error:Error) {
trace("File nn trovato");
}
}
loadXml();
function parseXML(evt:Event):void {
menuXML = new XML(evt.target.data);
itemCount= menuXML.nodeMenu.length();
//trace(itemCount)
tweenFadeMenu(300);
}
function tweenFadeMenu(intervalDuration:Number):void {
var xPos:Number = 31.3; // posizione sull'asse delle x della prima voce di menu
var yPos:Number = 51.4; // posizione sull'asse delle y della prima voce di menu
var disty:Number = 19.6; // distanza tra una voce di menu ed un'altra
counter=0;
intervalId = setInterval(tweenMenu,intervalDuration);
//
function tweenMenu():void {
if (counter == itemCount-1) {
clearInterval(intervalId);
}
//
var itemClip:MovieClip = new MovieClip(); // creiamouna clip in runtime
itemClip.name="item"+counter;
itemClip.idbtn=counter;
itemClip.buttonMode=true; // impostiamo la proprietà buttonMode su true per far apparire la manina
itemClip.mouseChildren = false; // con mouseChildren determiniamo se disabilitare o meno la selezione l'oggetto figlio della clip filmata
addChild(itemClip); // aggiungiamo l'istanza "itemClip" alla DisplayObject
itemClip.addEventListener(MouseEvent.CLICK, handlebutton);
itemClip.x=xPos;
itemClip.y=yPos+(disty)*counter;
//
var tf:TextField = new TextField();
tf.autoSize = TextFieldAutoSize.LEFT;
tf.antiAliasType = AntiAliasType.ADVANCED;
tf.defaultTextFormat = format;
tf.selectable = false;
tf.embedFonts=true;
tf.text = menuXML.nodeMenu[counter].@voceMenu;
itemClip.addChild(tf);
//trace(yPos)
var myTween:Tween = new Tween(itemClip, “alpha”, Regular.easeIn, 0, 100, 5, true);
counter++;
}
}
// richiamiamo le MovieClip che si trovano nella libreria
var mc1:Myclip_A = new Myclip_A();
var mc2:Myclip_B = new Myclip_B();
var mc3:MyClip_C = new MyClip_C();
var mc4:Myclip_D = new Myclip_D();
// memorizziamo tutte le nostre clip filmato in un Array
var slideArr:Array = new Array (mc1, mc2, mc3, mc4);
// ci creiamo un Sprite dove posizioniamo le istanze di MovieClip della Libreria
var container:Sprite = new Sprite();
addChild(container);
container.x = 300;
container.y = 50;
container.alpha = 0;
function handlebutton(event:MouseEvent):void {
var curtarget:Object = event.target;
idCurrent = curtarget.idbtn;
//trace(idCurrent);
// rimuoviamo dal container la clip attachato
if (container.numChildren>0) {
container.removeChildAt(0);
}
var myFade:Tween = new Tween(container, "alpha", Regular.easeIn, 0, 100, 5, true);
container.addChild(slideArr[idCurrent]);
}
Download del file
Valori a random
by admin on Nov.17, 2007, under Actionscript 3.0
Tool: Flash CS 3
Actionscript 3.0
Con questo esempio vedremo come caricare valori a random. Il primo passo consiste nello scrivere un’Array di nomi, la variabile itemArr sarà poi assegnata alla variabile di tipo Object rnd, quindi definiamo la nostra funzione per poi ottenere i nostri valori caricati a random.
var itemArr:Array = ["A", "B", "C", "D"];
var rnd:Object = itemArr;
function randomHandler():void {
var minItem:int = 0;
var numOfItem:int = itemArr.length - 1;
var range:int = numOfItem - minItem;
var randomItem:int = Math.round(Math.random() * range) + minItem;
//trace(rnd[randomItem]);
//formattiamo il testo con la classe TextFormat
var textFmt:TextFormat = new TextFormat();
textFmt.font = “Courier”;
textFmt.size = 30;
//Creiamo un istanza di campo di testo e la formattiamo
var tf:TextField = new TextField();
tf.autoSize = TextFieldAutoSize.LEFT;
tf.x = 10;
tf.y = 10;
tf.defaultTextFormat = textFmt;
tf.text = "Item: " + rnd[randomItem];
addChild(tf);
}
randomHandler();
Download file
Usiamo ENTER_FRAME
by admin on Nov.17, 2007, under Actionscript 3.0
Tool: Flash CS 3
Actionscript 3.0
In questo esempio vedremo come utilizzare l’evento ENTER_FRAME in AS 3.0.
L’esercizio è abbastanza semplice da eseguire, creiamo un simbolo di clip filmato con una forma. Nel pannello delle Proprietà di Flash assegniamo un nome di istanza al simbolo, nella fattispecie abbiamo assegnato mc_rect. Quindi dichiariamo una variabile ang di tipo int, dopodichè scrviamo la funzione OnEnterFrame e la richiamiamo con un listener di eventi (this.addEventListener(Event.ENTER_FRAME, OnEnterFrame);).
var ang:int = 0.01;
function OnEnterFrame(evt:Event):void {
//======================
// Rotazione della clip
//======================
mc_rect.rotation++;
mc_rect.scaleX = 2*Math.sin(ang)-2;
mc_rect.scaleY = 2*Math.sin(ang)-2;
//=======================
// Distorsione della clip per larghezza e altezza
//=======================
mc_rect.width = mc_rect.stage.stageWidth / 2;
mc_rect.height = mc_rect.stage.stageHeight / 2;
//========================
// Posizioniamo la clip al centro dello stage
//========================
mc_rect.x = mc_rect.stage.stageWidth / 2;
mc_rect.y = mc_rect.stage.stageHeight / 2;
}
this.addEventListener(Event.ENTER_FRAME, OnEnterFrame);
mc_rect.addEventListener(MouseEvent.MOUSE_OVER, dimAlpha);
mc_rect.addEventListener(MouseEvent.MOUSE_OUT, restoreAlpha);
function dimAlpha(evt:MouseEvent):void {
evt.target.alpha = 0.5;
// Con questa funzione diminuiamo l'alpha
}
function restoreAlpha(evt:MouseEvent):void {
evt.target.alpha = 1.0;
// con questa funzionione ripristiniamo l'alpha iniziale
}
Download file