Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

Come creare un orologio con Flash CS3 - prima parte

This is a discussion on Come creare un orologio con Flash CS3 - prima parte within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Ciao a tutti, actionscripters e non... Vorrei introdurre questa prima parte di un tutorial che arriverà a farvi conoscere ...


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
  3 links from elsewhere to this Post. Click to view. #1 (permalink)  
Old 20-09-07, 16:14
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,446
Rep Power: 6
Flep is on a distinguished road
Come creare un orologio con Flash CS3 - prima parte

Ciao a tutti, actionscripters e non...
Vorrei introdurre questa prima parte di un tutorial che arriverà a farvi conoscere come poter sviluppare un orologio utilizzando Flash CS3 e PHP
PHP perchè, per fare un bel lavoro, bisogna recuperare il tempo universale in secondi dal server.
Il motivo è semplice, la classe Date di Actionscript 3.0 non è sufficiente in quanto recupera la data e ora dalla macchina dell' utente per cui non è affidabile.
Ogni utente potrebbe avere impostato un data diversa e invece noi vogliamo che a chiunque si colleghi ( che sia italiano o giapponese ) venga visualizzata l' ora e data in cui si trova il server.

Dunque, partiamo... Creo un FLA che salvo con nome ' orario_server.fla ', al cui interno ho un campo di testo dinamico che chiamerò format_txt.
Creola Document Class, un file AS che slavocon nome ' Orario.as ', implementata in questo modo:
Code:
package
{
	import flash.display.MovieClip;
	import flash.text.TextField;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.net.URLVariables;
	import flash.net.navigateToURL;
	import flash.utils.Timer;
	import flash.events.*;
	import flash.ui.ContextMenu;
	import flash.ui.ContextMenuItem;
	
	public class Orario extends MovieClip
	{
		private var days_array:Array;
		private var months_array:Array;
		
		private var serverTime:Number;
		
		public function Orario()
		{
			init();
		}
		
		private function init():void
		{
			days_array=new Array('Domenica','Lunedi','Martedi','Mercoledi','Giovedi',
			'Venerdi','Sabato');
			months_array=new Array('Gennaio','Febbraio','Marzo','Aprile','Maggio',
			'Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre');
			
			callServer();
		}
		
		private function callServer():void
		{
			var richiesta:URLRequest=new URLRequest();
			richiesta.url='http://www.flepstudio.org/gettime.php';
			var loader:URLLoader=new URLLoader();
			addListeners(loader);
			try 
			{
				loader.load(richiesta);
			} 
			catch (error:Error) 
			{
				trace('Unable to load requested document.');
			}
		}
		
		private function addListeners(d:IEventDispatcher):void
		{
			d.addEventListener(Event.COMPLETE,completato);
		}
		
		private function completato(e:Event):void
		{
			var loader:URLLoader=URLLoader(e.target);
			var vars:URLVariables=new URLVariables(loader.data);
			serverTime=vars.time;
			
			initTime();
		}
		
		private function initTime():void
		{
			var server_milliseconds:Number=serverTime*1000;
			
			var real_date:Date=new Date(server_milliseconds);
			
			var hours:int=real_date.getHours();
			var minutes:int=real_date.getMinutes();
			var seconds:int=real_date.getSeconds();
			var day_of_the_week:String=days_array[real_date.getDay()];
			var day:int=real_date.getDate();
			var month:String=months_array[real_date.getMonth()];
			var year:int=real_date.getFullYear();
			
			var hours_str:String=hours.toString();
			if(hours<10)
				hours_str='0'+hours.toString();
			var minutes_str:String=minutes.toString();
			if(minutes<10)
				minutes_str='0'+minutes.toString();
			var seconds_str:String=seconds.toString();
			if(seconds<10)
				seconds_str='0'+seconds.toString();
			
			format_txt.text=hours_str+':'+minutes_str+':'+seconds_str+'\n'+
			day_of_the_week+' '+day+' '+month+'\n'+year;
		}
	}
}
il risultato:










Analizziamo il codice:

Proprietà

due Arrays incui inserire i nomi dei giorni e mesi in italiano
private var days_array:Array;
private var months_array:Array;
una variabile numerica in cui inserirò il tempo universale in secondi che ricevo dallo script PHP
private var serverTime:Number;

Metodi:
init();
inizializzo gli Arrays
days_array=new Array('Domenica','Lunedi','Martedi','Mercoledi','G iovedi','Venerdi','Sabato');
months_array=new Array('Gennaio','Febbraio','Marzo','Aprile','Maggi o','Giugno','Luglio','Agosto','Settembre','Ottobre ','Novembre','Dicembre');
chiamo il metodo callServer;
callServer();

callServer();
faccio richiesta di un nuovo url istanziando la classe URLRequest
var richiesta:URLRequest=new URLRequest();
assegno alla proprietà url di URLRequest l' url del file PHP
richiesta.url='http://www.flepstudio.org/gettime.php';
istanzio la classe URLLoader
var loader:URLLoader=new URLLoader();
aggiungo i listeners necessari chiamando la funzione addListeners e chiamo lo script PHP
addListeners(loader);
try
{
loader.load(richiesta);
}
catch (error:Error)
{
trace('Unable to load requested document.');
}

addListeners();
aggiungo un listener in ascolto dell' evento COMPLETE, quindi quando il PHP avrà restituito il valore, sarà chiamata la funzione completato()
d.addEventListener(Event.COMPLETE,completato);

completato();

istanzio la classe Loader per recuperare chi ha dispacciato l' evento
var loader:URLLoader=URLLoader(e.target);
creo una variabile di tipo URLVariables per recuperare i valori restituiti dal PHP e assegno alla variabile serverTime tali valori
var vars:URLVariables=new URLVariables(loader.data);
serverTime=vars.time;

initTime();
creo una variabile in cui inserisco il valore dei secondi del server moltiplicati per 1000 in modo da ottenere i millisecondi
var server_milliseconds:Number=serverTime*1000;
creo un variabile di tipo Date a cui passo il valore dei millisecondi ( ecco perchè ho trasformato il valore a millisecondi di serverTime
var real_date:Date=new Date(server_milliseconds);
creo una variabile in cui inserisco il valore delle ore corrente utilizzando getHours di Date
var hours:int=real_date.getHours();
creo una variabile in cui inserisco il valore dei minuti correnti utilizzando getMinutes di Date
var minutes:int=real_date.getMinutes();
creo una variabile in cui inserisco il valore dei secondi correnti utilizzando getSeconds di Date
var seconds:int=real_date.getSeconds();

creo una variabile in cui inserisco il valore dell' Array days_array con indice pari al numero del giorno -1 ( perchè i giorni del mese partono da 1 ma gli Arrays in programmazione partono da zero )
var day_of_the_week:String=days_array[real_date.getDay()-1];
creo una variabile in cui inserisco la data del giorno odierno utilizzando getDate di Date
var day:int=real_date.getDate();
creo una variabile in cui inserisco il valore dell' Array months_array con indice pari al numero del mese
var month:String=months_array[real_date.getMonth()];
creo una variabile in cui inserisco il valore dell' anno corrente utilizzando getFullYear di Date
var year:int=real_date.getFullYear();
adesso devo controllare però se i valori delle ore, minuti e secondi sono minori di 10 in quanto se lo sono devo aggiungere uno zero altrimenti risulterebbe brutto vedere unformato ora di questo tipo: 9:7:8 invece di 09:07:08, quindi creo una variabile di tipo stringa per ogniuno di loro a cui assegno il rispettivo valore. Poi faccio il controllo e se il valore è minore di10 assegno uno zero prima del valore numerico ( il tutto concatenato a stringha )
var hours_str:String=hours.toString();
if(hours<10)
hours_str='0'+hours.toString();
var minutes_str:String=minutes.toString();
if(minutes<10)
minutes_str='0'+minutes.toString();
var seconds_str:String=seconds.toString();
if(seconds<10)
seconds_str='0'+seconds.toString();
infine posso adesso assegnare i valori al mio campo di testo sullo stage ( format_txt ) utilizzando un concatenamento tra stringhe e numeri
format_txt.text=hours_str+':'+minutes_str+':'+seco nds_str+'\n'+day_of_the_week+' '+day+' '+month+'\n'+year;

Questo è lo script PHP che viene chiamato:
PHP Code:
<?php
header
("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);
header("Pragma: no-cache");
echo 
"time=" time();
?>
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 !
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
Flex gestisce la parte di back-end e Flash visualizza i dati Flep FLEX builder 3 0 20-04-08 09:56
prima l'interfaccia o prima il codice delle logiche? nootropic.kint Flash CS3 Design 3 23-11-07 13:19
orologio in as3 edo_flash Actionscript 3.0 base 3 09-11-07 12:33
Creare un orologio con Flash CS3 - parte seconda Flep Articoli e tutorials 0 20-09-07 16:21
Orologio analogico Flash CS3 + PHP gheeeko AIUTO utilità free 4 24-08-07 14:27


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