Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

onEnterFrame con Flash CS3

This is a discussion on onEnterFrame con Flash CS3 within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Qualcuno di voi ha paura che il metodo MovieClip onEnterFrame sia stato rimosso? Paura non fondata, in quanto non è stato ...


Go Back   Forum Flash CS3 Flash CS4 > Flash CS3 e Actionscript 3.0 > Articoli e tutorials

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  2 links from elsewhere to this Post. Click to view. #1 (permalink)  
Old 19-09-07, 14:27
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
onEnterFrame con Flash CS3

Qualcuno di voi ha paura che il metodo MovieClip onEnterFrame sia stato rimosso?
Paura non fondata, in quanto non è stato rimosso ma solo ottimizzato e quindi cambia un po il modo di utilizzarlo.
Con AS 2.0 bastava dire: nomeMovieClip.onEnterFrame=function, con AS 3.0 tutto questo non è più applicabile.
Come fare ? Mi spiego subito... Creo un FLA e lo salvo con nome ' onEF.fla ' .
Creo 3 MovieClips , di cui due con forma circolare ed unacon forma quadrata.
Le chiamo rispettivamente: clip_0_mc, clip_1_mc, clip_2_mc.

Creo la Document Class, un file AS che salvo con nome ' Prova.as' e scrivo:
Code:
package
{
	import flash.display.MovieClip;
	import flash.events.Event;
	
	public class Prova extends MovieClip
	{
		private var boo:Boolean=true;
		
		public function Prova()
		{
			initListeners();
		}
		
		private function initListeners():void
		{
			clip_0_mc.addEventListener(Event.ENTER_FRAME,muoviDueClips);
			clip_0_mc.addEventListener(Event.ENTER_FRAME,muoviLaTerzaClip);
		}
		
		private function muoviDueClips(e:Event):void
		{
			
			clip_0_mc.visible=boo;
			clip_1_mc.rotation--;
			boo=!boo;
		}
		
		private function muoviLaTerzaClip(e:Event):void
		{
			clip_2_mc.rotation++;
		}
	}
}
Risultato:









Da questo esempio riusciamo a capire che, mentre in AS 2.0 si richiamavano funzioni da un intervallo in questo modo:
Code:
my_mc.onEnterFrame=function():Void
{	
	chiamaUno()	
	chiamaDue();
}
function chiamaUno():Void
{
	//codice da eseguire
}
function chiamaDue():Void
{
	//codice da eseguire
}
con AS 3.0 , associamo un listener alla MovieClip e passiamo al listener 2 parametri: un evento (in questo caso ENTER_FRAME e il nome della funzione da richiamare).
Tutto questo è molto più pulito, è in rispetto delle buone norme della Object Oriented Programming e possiamo richiamare multiple funzioni.

Resta sintonizzato !
__________________

 


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

  #2 (permalink)  
Old 05-06-08, 19:18
Zolmandacuba's Avatar
Member
 
Join Date: Apr 2008
Posts: 60
Rep Power: 1
Zolmandacuba is on a distinguished road
Send a message via Skype™ to Zolmandacuba
Re: onEnterFrame con Flash CS3

Ciao flep sempre complimenti per il sito, lo sto presentando a molti miei amici e lo trovano tutti molto utile.

Ti chiedo giusto una stupidata riguardo enterframe.

mettiamo che una funzione A faccia spostare una movieclip ad esempio con l'inerzia.
A ovviamente la rchiamo con un tasto a cui assegno l'evento ENTER_FRAME.
Poi ovviamente rimuovo ENTER_FRAME una volta che la movieclip è arrivata al limite cosi non ci sono calcoli inutili.

la questione è: e se creo una funzione B che (mentre sta ancora muovendosi la movieclip grazie ad A) fa ripartire A nel senso opposto (magari al MOUSE_OVER), semplicemente perchè la funzione B richiama A assegnandogli un parametro diverso, in quel caso succede che:

se B viene azionata quando ha terminato il suospostamento, all'avvio di B c'è solo un ENTER_FRAME attivo

se B viene azionata quando A è ancora in movimento, l'ENTER_FRAME di B si aggiunge a quello di A.

Da notare che sono entrambi gli stessi enterframes perchè B funziona come il tasto che aveva fatto partire A, in pratica è la medesima riga di codice.

Di conseguenza, una volta terminata la questione, andranno rimossi 2 ENTER_FRAMES o con un remove si eliminano tutti e due nello stesso momento (essendo uguali)? ti posto il codice

menu_mc.addEventListener(Event.ENTER_FRAME,slidePo rtfolioMenu)
}

private function slidePortfolioMenu(e:Event)
{


var dy:Number=arrivoPortfolioMenuY-e.target.y
var ay:Number=dy*0.05
e.target.y+=ay
if (Math.abs(ay)<=0.1)
{
e.target.removeEventListener(Event.ENTER_FRAME,sli dePortfolioMenu)
}


hitArea_mc.addEventListener(MouseEvent.MOUSE_OVER, slideUp)
}

private function slideUp(e:Event)
{

arrivoPortfolioMenuY=-125
menu_mc.addEventListener(Event.ENTER_FRAME,slidePo rtfolioMenu)



ovviamente non posso fare altrimenti, perche volgio che la movieclip torni indietro a scelta sia se sta ancora muovendosi sia se ha gia finito lo spostamento, quindi l'ultimo ENTER_FRAME nella funzione slideUp devo metterlo per forza!!!


grazie spero di essere stato chiaro
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #3 (permalink)  
Old 05-06-08, 19:40
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Re: onEnterFrame con Flash CS3

Ciao Zolman

Personalmente non lavorerei con 2 listeners e 2 ENTER_FRAME associati.

Lavorarei sempre con un solo ENTER_FRAME sempre attivo e in base ad una variabile Booelan la MovieClip va avanti oppure indietro.

In pratica una se va boo:Boolean è true ( che saranno i tasti ad impostarla a true oppure false ) allora la MovieClip fa +=speed; se invece è false la MovieClip fa -=speed.
__________________

 


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

  #4 (permalink)  
Old 05-06-08, 22:21
Zolmandacuba's Avatar
Member
 
Join Date: Apr 2008
Posts: 60
Rep Power: 1
Zolmandacuba is on a distinguished road
Send a message via Skype™ to Zolmandacuba
Re: onEnterFrame con Flash CS3

Grazie flep!

hai ragione....come dici tu è decisamente più semplice immediato e schematico.

Io temevo solo che lasciare un ENTER_FRAME sempre attivo affaticasse il calcolo e quindi i tempi di scaricamento e funzionamento del sito.
Se non è una cosa cosi grave allora di sicuro come dici tu è la soluzione migliore ;)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #5 (permalink)  
Old 06-06-08, 08:45
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Re: onEnterFrame con Flash CS3

Un ENTER_FRAME sempre attivo è poca cosa per una CPU.
Certo che se dovessi avere ad esempio 20 MovieClip con 20 ENTER_FRAME attivi allora il discorso cambierebbe.

Dai un' occhiata a questo articolo:
Meglio usare Timer o ENTER_FRAME per creare animazioni ?
__________________

 


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 16-06-08, 19:28
Zolmandacuba's Avatar
Member
 
Join Date: Apr 2008
Posts: 60
Rep Power: 1
Zolmandacuba is on a distinguished road
Send a message via Skype™ to Zolmandacuba
Re: onEnterFrame con Flash CS3

una seconda questione, o arcani luminari dei codici:

come si fa quando una funzione può essere chiamata da molteplici eventi: ad esempio puo avvenire subito con un timer, poi la volta dopo con il tasto del mouse, la terza con un enter_frame.......

si scrive tale quale tre volte la funzione variando solo i parametri tra parentesi?


Grazie
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #7 (permalink)  
Old 13-07-08, 20:09
Junior Member
 
Join Date: Jul 2008
Posts: 4
Rep Power: 0
pasteo is on a distinguished road
Re: onEnterFrame con Flash CS3

Si ma il vecchio caro delete onEnterFrame adesso da cosa è stato sostituito ??

Non ho ancora capito come si fa ad abbattere un EnterFrame
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #8 (permalink)  
Old 14-07-08, 00:38
Zolmandacuba's Avatar
Member
 
Join Date: Apr 2008
Posts: 60
Rep Power: 1
Zolmandacuba is on a distinguished road
Send a message via Skype™ to Zolmandacuba
Re: onEnterFrame con Flash CS3

al posto di 'add' scrivi "removeEventListener(Event.ENTER_FRAME,......)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #9 (permalink)  
Old 14-07-08, 08:54
Junior Member
 
Join Date: Jul 2008
Posts: 4
Rep Power: 0
pasteo is on a distinguished road
Re: onEnterFrame con Flash CS3

Ok grazie per la risposta, corro a provare !!!
Saluti
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 On
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump

Similar Threads

Thread Thread Starter Forum Replies Last Post
onEnterFrame with Flash CS3 Flep Tutorials 0 09-10-07 19:32


All times are GMT. The time now is 12:52.


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