Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

[FL CS3 + AS3] Posizionamento nello stage al resize

This is a discussion on [FL CS3 + AS3] Posizionamento nello stage al resize within the Actionscript 3.0 avanzato forums, part of the Flash CS3 generale category; Lo schema che devo realizzare è questo: in pratica ho un Main.fla che deve precaricare un altro fla (libreria.fla) ...


Go Back   Forum Flash CS3 Flash CS4 > Flash CS3 e Actionscript 3.0 > Flash CS3 generale > Actionscript 3.0 avanzato

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  1 links from elsewhere to this Post. Click to view. #1 (permalink)  
Old 27-09-07, 14:15
steveaustin1974's Avatar
Junior Member
 
Join Date: Jul 2007
Posts: 19
Rep Power: 0
steveaustin1974 is on a distinguished road
Angry [FL CS3 + AS3] Posizionamento nello stage al resize

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
Code:
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

Code:
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 :
Code:
.
.
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
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #2 (permalink)  
Old 27-09-07, 19:16
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,434
Rep Power: 6
Flep is on a distinguished road
Ciao e benvenuto,
partiamo dal problema 1.
Se ho ben capito, tu vorresti che myclip sia sempe al centro dello stage sull' asse x.
Nel metodo completato di Caricamento.as potresti scrivere:
Code:
mymovie=loader.content
myclip=mymovie;
myclip.x=(_fla.stage.stageWidth-myclip.width)/2;
_fla.addChild(myclip);
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #3 (permalink)  
Old 27-09-07, 21:02
steveaustin1974's Avatar
Junior Member
 
Join Date: Jul 2007
Posts: 19
Rep Power: 0
steveaustin1974 is on a distinguished road
Quote:
Originally Posted by Flep View Post
Ciao e benvenuto,
partiamo dal problema 1.
Se ho ben capito, tu vorresti che myclip sia sempe al centro dello stage sull' asse x.
Nel metodo completato di Caricamento.as potresti scrivere:
Code:
mymovie=loader.content
myclip=mymovie;
myclip.x=(_fla.stage.stageWidth-myclip.width)/2;
_fla.addChild(myclip);
Ciao compaesano (ho visto che sei di Cesena anche tu)
Si in effetti il problema n°1 è così risolto, è il problema n°2 che non capisco come si possa fare?

cioè in AS2 me la cavavo con una variabile globale che sull'evento resize me lo portavo dietro e via andare poi mi gestivo i vari resize i riposizionamenti dentro i vari filmati caricati... acsè e funzioneva! Ma con AS3 mi trovo in difficoltà.
__________________
Steve Austin, Astronaut - A man barely alive . . . Gentlemen, we can rebuild him . . . we have the technology. We have the capability to make the world's first bionic man. Steve Austin will be that man. Better than he was before, Stronger, Faster . .
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #4 (permalink)  
Old 27-09-07, 21:17
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,434
Rep Power: 6
Flep is on a distinguished road
Haha uns capes piò gnint...
Dunque, potresti fare una bella cosa:
nella Document Class crei due proprietà pubbliche e statiche:

public static var w:Number;
public static var h:Number;

poi nella funzione costruttrice gli assegni i valori:
w=stage.stageWidth;
h=stage.stageHeight;

adesso quelle due variabili sono richiamabili da qualsiasi classe in qualsiasi momento in questo modo:
NomeDocumentClass.w e NomeDocumentClass.h
nel tuo caso mi sembra Main.w e Main.h

PS: me a stag a Cisnatic

lol veramente difficile scrivere il dialetto
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #5 (permalink)  
Old 27-09-07, 21:19
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,434
Rep Power: 6
Flep is on a distinguished road
Scusa ho editato, avevo dimenticato l' attributo static :)
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Flash Multi Gallery
  #6 (permalink)  
Old 28-09-07, 09:03
steveaustin1974's Avatar
Junior Member
 
Join Date: Jul 2007
Posts: 19
Rep Power: 0
steveaustin1974 is on a distinguished road
Prima di tutto grazie per le risposte, ti pagherò da bere all'approdo o all'oro bianco visto che ci ad zisnatic! :)

Dunque le varibili statiche le avevo pensate anch'io, il problema è che le devo richiamare da Libreria.fla un file esterno, mentre Main.as è la document class di Main.fla quindi se da Libreria.fla richiamo Main.w chiaramente mi da errore di compilazione perchè non trova ne classe ne proprietà.

a deghi ben?
__________________
Steve Austin, Astronaut - A man barely alive . . . Gentlemen, we can rebuild him . . . we have the technology. We have the capability to make the world's first bionic man. Steve Austin will be that man. Better than he was before, Stronger, Faster . .
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #7 (permalink)  
Old 28-09-07, 09:06
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,434
Rep Power: 6
Flep is on a distinguished road
Non dovrebbe darti errore se libreria.fla si trova nella stessa directory di Main.as
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #8 (permalink)  
Old 28-09-07, 09:21
steveaustin1974's Avatar
Junior Member
 
Join Date: Jul 2007
Posts: 19
Rep Power: 0
steveaustin1974 is on a distinguished road
ops...scusa patacca io, mi ero dimenticato di importare la classe (non è nella stessa dir)! Sorry, si così va.

Però c'è una cosa che non mi spiego, ora dalla Document Class Libreria.as di Libreria.fla vedo le 2 variabili statiche Main.w e Main.h e fin qui ora grazie a te tutto ok... ma se vado a mettere un listener sul resize dello stage anche in Libreria.as renderizzando Libreria.fla non mi da errore (anche se chiaramente Main.w e Main.h sono NaN), se invece rendenderizzo Main.fla mi da errore sul listener dello stage:
"TypeError: Error #1009: Impossibile accedere a una proprietà o a un metodo di un riferimento oggetto null."

Ma anche se tipo da Libreria.as faccio qualsiasi riferimento alla classe Stage mi da quell'errore.

In pratica ora ho le variabili giuste ma non posso usare il listener... c'è n'è sempre una con sti AS3.
__________________
Steve Austin, Astronaut - A man barely alive . . . Gentlemen, we can rebuild him . . . we have the technology. We have the capability to make the world's first bionic man. Steve Austin will be that man. Better than he was before, Stronger, Faster . .
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #9 (permalink)  
Old 28-09-07, 09:31
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,434
Rep Power: 6
Flep is on a distinguished road
Tieni presente che ogni classe AS 3.0 non è più come AS 2.0, in questo senso:
con il 2 potevi scrivere _root da qualsiasi classe che si trovasse nella stessa directory del FLA e risalivi direttamente alla sua root.
Con la versione 3 questo non avviene ( giustamente ) quindi, hai 2 modi:
- passi il valore come abbiamo già visto ( fla e _fla ) e poi ti riferisci a _fla.stage....,
- oppure questo articolo potrebbe aiutarti: this.root - trucco del giorno
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #10 (permalink)  
Old 28-09-07, 09:55
steveaustin1974's Avatar
Junior Member
 
Join Date: Jul 2007
Posts: 19
Rep Power: 0
steveaustin1974 is on a distinguished road
il mio è un po' il problema contrario.
dalla Classe Main.as devo capire come posso resizire un'istanza di MC dentro Libreria.fla

quindi da Main.fla devo accedere a bg_mc di Libreria.fla (che è quello che carico dentro a Main.as dentro la variabile loStage:Caricamento)

in pratica ho draggato un'istanza di MC in libreria sullo stage chiamato bg_mc (questo in Libreria.fla) questo bg_mc deve essere resizaito (wow che termine!) al ridimensionamento dello stage, gli eventi e i listener al resize però sono in Main.as e da quello che ho capito possono essere solo messi li. Quindi la domanda è :

ora il mio codice al resize in Main.as è così:
Code:
.
.

  private function resizeHandler(event:Event):void {
			//riposiziona lo stage
			loStage.x=(stage.stageWidth/2)-(900/2);
			loStage.y=0;
			
                        //riassegno le variabili statiche
			w=stage.stageWidth;
			h=stage.stageHeight;

                        //****QUI DOVREI RIDIMENSIONARE bg_mc istanziato in Libreria.fla***
}
.
.
__________________
Steve Austin, Astronaut - A man barely alive . . . Gentlemen, we can rebuild him . . . we have the technology. We have the capability to make the world's first bionic man. Steve Austin will be that man. Better than he was before, Stronger, Faster . .
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump

Similar Threads

Thread Thread Starter Forum Replies Last Post
Flash CS3 Inserire video .flv nello stage. kinitta Flash CS3 generale 2 22-06-08 11:09
Stage Resize e HTML briosh Flash CS3 generale 0 08-02-08 08:13
as dentro i frame e nelle classe e nello stage nootropic.kint Actionscript 3.0 base 1 21-12-07 05:48
Caricamento filmati e posizionamento allo Stage... SWFish Actionscript 3.0 base 6 04-11-07 18:22
come si visualizza qualcosa che è nella libreria e non nello stage? nootropic.kint Actionscript 3.0 base 5 15-09-07 18:10


All times are GMT. The time now is 08:04.


Powered by vBulletin versione 3.7.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0 RC4
Forum SiteMap


FlepStudio
by Filippo Lughi
P.IVA 03605860406