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
il tipo Caricamento è un'altra classe che ho fatto per gestire il preload, è un'estensione della classe MovieClipcodice: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
a classe SeguiMouse non la sto a postare tanto non serve.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); } } }
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
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?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; } . .
Grazie

Rispondi quotando