Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

Actionscript 3.0 e la classe Timer

This is a discussion on Actionscript 3.0 e la classe Timer within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Eccoci ad un'altra nuova classe Actionscript 3.0 . La classe Timer è un miglioramento dei metodi setInterval e setTimeout e ...


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:58
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Actionscript 3.0 e la classe Timer

Eccoci ad un'altra nuova classe Actionscript 3.0 .
La classe Timer è un miglioramento dei metodi setInterval e setTimeout e infatti Adobe consiglia di utilizzarla al loro posto.
Quando si crea un'istanza della classe Timer, non fa altro che eseguire un dato codice a intervalli regolari.
Si può specificare la velocità dell' intervallo e quante volte deve ripetere l' intervallo.

Vediamo un esempio...

Creo un FLA e salvo con nome ' prova_timer.fla ' .
Creo la Document Class, un file AS che salvo con nome ' Prova.as ' , strutturata in questo modo:
Code:
package
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.TimerEvent;
	import flash.geom.Point;
	import flash.utils.Timer;
	
	public class Prova extends MovieClip
	{
		private var numQuadrati:int=25;
		private var lato:int=25;
		private var distanza:int=10;
		
		private var andata:Boolean=true;
		
		private var clips_array:Array;
		private var points_array:Array;
		
		private var timer:Timer;
		
		public function Prova()
		{
			clips_array=new Array();
			points_array=new Array();
			
			disegnaQuadrati();
			posizionaQuadrati();
			initTimer();
		}
		
		private function disegnaQuadrati():void
		{
			for(var i:int=0;i < numQuadrati;i++)
			{
				var sprite:MovieClip=new MovieClip();
				sprite.graphics.beginFill(0x000000,1);
				sprite.graphics.moveTo(-lato,-lato);
				sprite.graphics.lineTo(lato,-lato);
				sprite.graphics.lineTo(lato,lato);
				sprite.graphics.lineTo(-lato,lato);
				sprite.graphics.lineTo(-lato,-lato);
				addChild(sprite);
				clips_array.push(sprite);
			}
		}
		
		private function posizionaQuadrati():void
		{
			var piccoloW:Number=Math.floor(this.parent.stage.stageWidth/5);
			var piccoloH:Number=Math.floor(this.parent.stage.stageHeight/5);
			for(var i:Number=0;i < 5 ;i++)
			{
				for(var j:Number=0;j < 5;j++)
				{
					var point:Point=new Point(piccoloW*j,piccoloH*i);
					points_array.push(point);
				}
			}
			for(var k:int=0;k < points_array.length;k++)
			{
				clips_array[k].x=lato*2+points_array[k].x;
				clips_array[k].y=lato*2+points_array[k].y;
			}
		}
		
		private function initTimer():void
		{
			timer=new Timer(100,clips_array.length);
			timer.addEventListener(TimerEvent.TIMER,this.gestioneIntervallo);
			timer.addEventListener(TimerEvent.TIMER_COMPLETE,finitoEffetto);
			timer.start();
		}
		private function gestioneIntervallo(t:TimerEvent):void
		{
			if(andata)
			{
				clips_array[timer.currentCount-1].width+=20;
				clips_array[timer.currentCount-1].height+=20;
			}
			else
			{
				clips_array[timer.currentCount-1].width-=20;
				clips_array[timer.currentCount-1].height-=20;
			}
		}
		
		private function finitoEffetto(TimerEvent):void
		{
			andata=!andata;
			initTimer();
		}
	}
}
Risultato:





Alla prossima !
__________________

 


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 !

Last edited by Flep; 28-01-08 at 07:00..
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #2 (permalink)  
Old 25-01-08, 13:49
Member
 
Join Date: Dec 2007
Posts: 33
Rep Power: 0
jacu85 is on a distinguished road
Send a message via Skype™ to jacu85
Re: Actionscript 3.0 e la classe Timer

scusa io copio e incollo lo script ma mi da errore:
posizionaQuadrati(); non richiama nessuna fuznione
e piccoloW e piccoloH non sono state dichiarate se non sbaglio.
Cmq ho visto questo esercizio per sapere come fermare l'animazione alla pressione di un bottone, ho provato con timer.stop() ma non funge e poi o provato a rimuovere l'evento TimerEvent ma neanche li funge, come posso fare? Grazie 1000
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #3 (permalink)  
Old 28-01-08, 07:01
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Re: Actionscript 3.0 e la classe Timer

Ciao

Ora è corretto, purtroppo ogni tanto questo forum non formatta perfettamente il codice che scrivo tra i tags code... ora però va bene.
__________________

 


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 28-01-08, 09:38
Member
 
Join Date: Dec 2007
Posts: 33
Rep Power: 0
jacu85 is on a distinguished road
Send a message via Skype™ to jacu85
Re: Actionscript 3.0 e la classe Timer

ok, tranquillo ne hai da controllare ogni giorno sul forum qualcosa può scappare.... :)
ciauz e buona giornata
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #5 (permalink)  
Old 25-04-08, 19:45
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: Actionscript 3.0 e la classe Timer

ciao flep,

una domanda: quando all'inizio disegni il pirmo quadrato, e lo fai "azando la penna" fuori dallo stage

sprite.graphics.moveTo(-lato,-lato);

è perchè una volta disegnato il suo baricentro si trova cosi nell'origine? è una
questione di comodita cosicchè facendo il punto di registrazione sia nel centro di ogni movieclip?







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

Flash Multi Gallery
  #6 (permalink)  
Old 25-04-08, 19:47
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: Actionscript 3.0 e la classe Timer

clips_array[k].x=lato*2+points_array[k].x;

questo valore "lato*2" ha un senso a priori o lo hai fatto perche il disegno venga
piu o meno centrato, andando a tentativi?

grazie della pazienza infinita
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #7 (permalink)  
Old 27-07-08, 12:33
Junior Member
 
Join Date: Jul 2008
Posts: 11
Rep Power: 0
Baro is on a distinguished road
Re: Actionscript 3.0 e la classe Timer

Ciao Flep, prima di tutto complimenti per i tuoi tutorial, trucchi e codici, veramente un gran lavoro, io ho una domanda stupida da porti.
Nel mio codice voglio semplicemente mettere una pausa senza lanciare un altra funzione, ma nella funzione stessa, ovvero :

mia funzione {

istruzione 1
istruzione 2
PAUSA (2 SECONDI)
istruzione 3
ecc...
}

Quindi, in teoria, dopo Timer.Start; ho la necessità di controllare, magari inserendo un boolean che cambia all'evento TIMER_COMPLETE, se lo stesso booleano sia cambiato all'interno di un ciclo while... ma questo non sembra possibile, correggimi se sbaglio... la classe timer non esegue una funzione (quella chiamata dall'evento TIMER o TIMER_COMP) se sta già eseguendo un altra funzione ? e come posso semplicemente crearmi una funzione di PAUSA della funzione che sto eseguendo ?

Spero di essermi spiegato bene e grazie mille per la tua eventuale risposta !!

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

  #8 (permalink)  
Old 27-07-08, 14:22
Junior Member
 
Join Date: Jul 2008
Posts: 11
Rep Power: 0
Baro is on a distinguished road
Re: Actionscript 3.0 e la classe Timer

Problema risolto a modo mio :D il codice lo posto se dovesse servire ad altri, se non è giusto dall'alto della vostra esperienza correggetelo :)

Code:
function Pausa(millisecondi:int):void
{
    var TempoIni:int;
    var TempoCor:int;
    TempoIni=getTimer();
    while (TempoIni +millisecondi > TempoCor)
    {
        TempoCor=getTimer();
    }        
}
Almeno funge per quel che serve a me :D ciau e grazie cmq
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
Actionscript chiama Javascript - classe ExternalInterface di Flash CS3 Flep Articoli e tutorials 5 18-10-08 19:49
Object Oriented Programming - lezione 2 - le proprietà di una classe Actionscript 3.0 Flep Programmazione Orientata agli Oggetti - tutorials 6 16-05-08 17:06
getDefinitionByName classe di Actionscript 3.0 Flep Articoli e tutorials 0 03-12-07 06:40
Timer class of Actionscript 3.0 Flep Tutorials 0 08-10-07 16:34
Tagliare un' immagine con la classe Matrix di Actionscript 3.0 Flep Articoli e tutorials 0 20-09-07 10:00


All times are GMT. The time now is 12: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