This is a discussion on Creare un orologio con Flash CS3 - parte seconda within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Ecco la seconda parte di questo tutorial.
Diciamo pure che il grosso è stato fatto nell' articolo precedente: la parte ...
Ecco la seconda parte di questo tutorial.
Diciamo pure che il grosso è stato fatto nell' articolo precedente: la parte prima di come creare un orologio e abbiamo visto come formattare il tempo universale che lo script PHP ci passa.
Oggi vedremo come fare per incrementare il tempo che prendiamo dal server in modo da ottenere un orologio digitale con la data del giorno a tutti gli effetti.
Dunque, cosa vi dice la logica se noi, una volta recuperata la data dal server, la incrementiamo di una unità ( dato che è in secondi ) al secondo utilizzando la Classe Timer ?
Apriamo il file Orario.as e alla riga 63, al posto di chiamare la funzione initTime una volta sola, la chiamiamo utilizzando un Timer.
Quindi, rinominiamo la chiamata initTime con callInitTime().
A questo punto creo una nuova funzione che si chiama appunto callInitTime, in questo modo:
Code:
private function callInitTime():void
{
var timer:Timer=new Timer(1000,0);
timer.addEventListener(TimerEvent.TIMER,initTime);
timer.start();
}
adesso stiamo chiamando la funzione initTime una volta al secondo utilizzando un Timer.
Ci rimane solo da incrementare il valore della variabile serverTime di una unità ogni volta.
In questo modo:
Code:
serverTime++;
Per cui ogni volta il valore di serverTime ( che abbiamo recuperato dal server ) sarà incrementato di un secondo, proprio ciò che avviene in un orologio.
La nuova classe Orario.as diventerà così:
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.*;
public class Orario2 extends MovieClip
{
private var days_array:Array;
private var months_array:Array;
private var serverTime:Number;
public function Orario2()
{
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;
callInitTime();
}
private function callInitTime():void
{
var timer:Timer=new Timer(1000,0);
timer.addEventListener(TimerEvent.TIMER,initTime);
timer.start();
}
private function initTime(t:TimerEvent):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;
serverTime++;
}
}
}