Lo schema che devo realizzare è questo
in pratica ho un Main.fla che deve precaricare un altro fla (libreria.fla) e quest'ultimo deve essere sempre posizionato al centro dello stage sull'asse x e attaccato sempre in alto quindi y sempre =0;
e qui primo problema, spiego brevemente come ho fatto:
al Main.fla ho fatto una classe di documento Main.as.
Main.as mi precarica in un mc libreria.swf poi mi fa l'addChild sullo stage, a questo punto ho messo gli eventi sul resize per riposizionarlo. NON funziona.
Codice di Main.as
codice:
package {
import Caricamento;
import flash.display.*;
import flash.events.Event;
//inizio classe Main
public class Main extends MovieClip {
private var loStage:Caricamento;
private var _fla:MovieClip;
//costruttore
public function Main() {
_fla=this;
init();
}
private function init():void {
loStage=new Caricamento(this,"libreria.swf","Stage...");
loStage.y=0;
loStage.x=(stage.stageWidth/2)-(900/2);
addChild(loStage);
//imposto le proprietà dello stage
stage.frameRate=40;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
//eventi di stage
stage.addEventListener(Event.ACTIVATE, activateHandler);
stage.addEventListener(Event.RESIZE, resizeHandler);
}
private function activateHandler(event:Event):void {
//trace("activateHandler: " + event);
}
private function resizeHandler(event:Event):void {
//riposiziona lo stage
loStage.x=(stage.stageWidth/2)-(900/2);
loStage.y=0;
}
}//fine classe
}//fine package
il tipo Caricamento è un'altra classe che ho fatto per gestire il preload, è un'estensione della classe MovieClip
codice:
package {
import flash.display.MovieClip;
import flash.display.Loader;
import flash.events.*;
import flash.net.URLRequest;
import SeguiMouse;
public class Caricamento extends MovieClip {
private var daCaricare:String;
public var loader:Loader;
public var segui:SeguiMouse;
private var labelCaricare:String;
private var _fla:MovieClip;
//ESCAMOTAGE per convertire un loader in moveclip
//creo un oggetto generico non definito di tipo * che ospiterà il loader.content
private var mymovie:*
//ESCAMOTAGE variabile per ospitare la variabile movie generica, a quel punto posso usare
//l'elemento caricato come un movieclip!
private var myclip:MovieClip;
public function Caricamento(fla:MovieClip,stringaUrl:String,cosaCarico:String) {
daCaricare=new String(stringaUrl);
labelCaricare=cosaCarico;
_fla=fla;
init();
}
private function init():void {
var request:URLRequest=new URLRequest(daCaricare);
loader=new Loader();
initListeners(loader.contentLoaderInfo);
loader.load(request);
}
private function initListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.OPEN,inizia);
dispatcher.addEventListener(ProgressEvent.PROGRESS,inCaricamento);
dispatcher.addEventListener(Event.COMPLETE,completato);
}
private function inizia(event:Event):void {
segui= new SeguiMouse();
_fla.addChild(segui);
}
private function inCaricamento(event:ProgressEvent):void {
var perc:uint=(event.bytesLoaded/event.bytesTotal)*100;
segui._label=labelCaricare;
segui.percentuale=perc+"%";
}
public function completato(event:Event):void {
mymovie=loader.content
myclip=mymovie;
_fla.addChild(myclip);
_fla.removeChild(segui);
}
}
}
a classe SeguiMouse non la sto a postare tanto non serve.
PROBLEMA 1:
Non mi si riposiziona loStage, variabile di tipo Caricamento in Main.as, mi resta sempre attaccato in alto a sinistra. dove sbaglio?
PROBLEMA 2:
Devo ridimensionare a seconda della grandezza dello stage il bg_mc che è un livello dentro a Libreria.fla. Quindi dovrei portarmi dietro da qualche parte e in qualche maniera la variabile stage.stageWidth e stage.stageHeigh un po' come se fossero variabili globali (concetto che non esiste nella programmazione ad oggetti e in AS3 mi sa).
Dovrei concettualmente fare una cosa simile nel Main.as
codice:
.
.
private function resizeHandler(event:Event):void {
//riposiziona lo stage
loStage.x=(stage.stageWidth/2)-(900/2);
loStage.y=0;
//ridimensiono il bg_mc
loStage.bg_mc.width=stage.stageWidth;
loStage.bg_mc.height=stage.stageHeight;
}
.
.
ma chiaramente non si può fare così... ci sto perdendo un sacco di tempo senza togliere un ragno da un buco, mi potete dare una mano?
Grazie