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