Vi prego gentilmente di aiutarmi con l'as3 perchè solo da pochi giorni ho deciso di passare a questo tipo di codice.
In questo sito qui tutto funziona, ma non riesco a modificare la classe associata per inserire un preload iniziale, si tratta di 300kb di swf ma per evitare disagi alle connessioni lente vorrei fare come facevo in as2.
Questo è il codice as della classe che controlla il menu:
codice:
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Main extends MovieClip
{
private var menu_array:Array;
private var section_array:Array;
private var currentSection:int=0;
private var nextSection:int;
public function Main()
{
init();
}
private function init():void
{
menu_array=new Array(menu_mc.menu1_mc,menu_mc.menu2_mc,menu_mc.menu3_mc,menu_mc.menu4_mc,menu_mc.menu5_mc);
section_array=new Array(section1_mc,section2_mc,section3_mc,section4_mc,section5_mc);
stage.frameRate=31;
stopAll();
addMenuEvents();
hideCurrentSection();
}
private function stopAll():void
{
for(var i:int=0;i < menu_array.length;i++)
{
menu_array[i].stop();
section_array[i].stop();
}
}
private function addMenuEvents():void
{
for(var i:int=0;i < menu_array.length;i++)
{
menu_array[i].mouseChildren=false;
menu_array[i].buttonMode=true;
menu_array[i].id=i;
menu_array[i].isPressed=false;
menu_array[i].addEventListener(MouseEvent.MOUSE_OVER,setOver);
menu_array[i].addEventListener(MouseEvent.MOUSE_OUT,setOut);
menu_array[i].addEventListener(MouseEvent.MOUSE_DOWN,setDown);
menu_array[i].addEventListener(MouseEvent.MOUSE_UP,setUp);
}
}
private function setOver(evt:MouseEvent):void
{
if(evt.target.isPressed==false)
evt.target.gotoAndStop(2);
}
private function setOut(evt:MouseEvent):void
{
if(evt.target.isPressed==false)
evt.target.gotoAndStop(1);
}
private function setDown(evt:MouseEvent):void
{
nextSection=evt.target.id;
checkState(evt.target.id);
evt.target.gotoAndStop(3);
hideCurrentSection();
currentSection=evt.target.id;
}
private function setUp(evt:MouseEvent):void
{
if(evt.target.isPressed==false)
evt.target.gotoAndStop(1);
}
private function checkState(n:int):void
{
for(var i:int=0;i < menu_array.length;i++)
{
if(i==n)
menu_array[i].isPressed=true;
else
{
menu_array[i].isPressed=false;
menu_array[i].gotoAndStop(1);
}
}
}
private function hideCurrentSection():void
{
section_array[currentSection].gotoAndPlay(31);
showSection();
}
private function showSection():void
{
section_array[nextSection].gotoAndPlay(2);
}
}
}
Il sito è tutto su un keyframe, ora se provo a spostare il contenuto sul keyframe 2, e su un unico keyframe vuoto (il primo), metto questo codice:
codice:
stop();
//stage.frameRate=31;
this.addEventListener(Event.ENTER_FRAME,checkProgress);
function checkProgress(_progress:Event):void
{
var bytes_loaded:Number=_progress.target.loaderInfo.bytesLoaded;
var bytes_total:Number=_progress.target.loaderInfo.bytesTotal;
var percent:Number=Math.round(bytes_loaded/bytes_total*100);
info_txt.text=percent.toString()+' %';
if(percent>=100)
{
this.removeEventListener(Event.ENTER_FRAME,checkProgress);
this.gotoAndPlay(2);
lets_go();
}
}
function lets_go():void
{
trace('ready to start');
}
il filmato rimane in stop sul fotogramma 1 non andando al 2, ma non solo, anche se provo a non mettere il preload spostando tutto sul fotogramma 2 e lasciando il primo vuoto, il menu va di nuovo in loop senza poterlo selezionare.
Mi spiegate cosa devo fare per mettere il maledetto preload e come evitare il blocco del menu?