Nyissunk meg egy új flash dokumentumot, majd hozzunk létre egy dinamikus szövegmezõt. Válasszunk ki egy számunkra szimpatikus betûtípust, állítsuk be a megfelelõ betûméretet és írjuk bele a következõt: 00:00:00:00. Ez lesz az óra számlapja, amely a hátralévõ napok, órák, percek és másodpercek számát mutatja. Igazítsuk balra a mezõben lévõ szöveget, így láthatjuk, hogy milyen méretû lesz az elkészült visszaszámláló-panel.
Hozzunk létre egy új réteget, és írjuk a számlap megfelelõ számai alá a "nap", "óra", "perc", "másodperc" szavakat. Gondolom nem kell ecsetelnem ezt miért követtük el.|Miután ezzel elkészültünk, töröljünk ki mindent a dinamikus szövegmezõbõl, és adjuk neki az ido_txt nevet (Instance name).|Készítsünk egy új réteget "action" néven.
Az F9 billentyûvel (alt+F9 Mac esetén) megnyitjuk az "action" panelt, ahol megkezdhetjük az óra programjának elkészítését.
|Programunk mûködésének lényege a következõ: mivel Flash-mozink egyetlen képkockából áll, egyéb utasítás hiányában ez az egyetlen képkocka ismétlõdik a végtelenségig. Ezt használjuk ki az onEnterFrame metódussal; programunk - amelyet az onEnterFrame metódushoz kapcsolt függvénybe írunk- minden alkalommal lefut, amikor a képkocka "sorra kerül". Jelen esetben másodpercenként 35-ször. Ez a sebesség elég ahhoz, hogy megbízható, másodpercenként számláló órát alkossunk.|this.onEnterFrame = function() {
A következõ parancs létrehoz egy dátum típusú változót "ma" néven, és értéket is ad neki. A Date() függvény segítségével az érték az aktuális dátum lesz.
var ma:Date = new Date();
Az imént alkotott "ma" változóból kinyerjük az évszámot, és betöltjük egy "ev" nevû változóba.
var ev = ma.getFullYear();
Az elõzõ lépéshez hasonlóan lekérdezzük a "ma" változóból a pontos idõt, és átadjuk a "pontosido" változónak.
var pontosido = ma.getTime();
Az aktuális pontos idõt tehát már tudjuk. Ahhoz, hogy kiszámoljuk az újévi pezsgõbontásig hátralevõ idõt, meg kell határoznunk annak pillanatát, azaz 2007. január 1. 0 óra 0 percet.
var cel:Date = new Date(ev+1, 0, 0);
var celidopont = cel.getTime();
A "maradekido" változó e két idõpont (az aktuális és a "cél") különbségét fogja tartalmazni.
var maradekido = celidopont-pontosido;
Fontos tudni, hogy a Flash alapértelmezésben ezredmásodpercben adja vissza az idõpontok különbségét. Ahhoz, hogy ebbõl használható adatokat kapjunk. (nap, óra, perc, másodperc), a következõ számításokat kell elvégezni:
var masodperc = Math.floor(maradekido/1000);
var perc = Math.floor(masodperc/60);
var ora = Math.floor(perc/60);
var nap = Math.floor(ora/24);
Már tudjuk, hogy hány másodperc van hátra újévig, de mi ezt a hatalmas számot "nap:óra:perc:másodperc" bontásban szeretnénk viszontlátni. Ezt oldja meg a következõ néhány sor:
A / jel osztást jelent, a % jellel osztási maradékot számolunk, a Math.floor() függvény pedig a zárójelben lévõ érték egészrészét adja, azaz levágja a szám tizedesjegyeit. A String függvény a zárójelbe tett számértéket karakterlánccá alakítja.
masodperc = String(masodperc%60);
if (masodperc.length<2) {
masodperc = "0"+masodperc;
}
perc = String(perc%60);
if (perc.length<2) {
perc = "0"+perc;
}
ora = String(ora%24);
if (ora.length<2) {
ora = "0"+ora;
}
nap = String(nap);
Az adatok megvannak, készen állunk arra, hogy összeállítsuk a számlap tartalmát.
var szamlalo:String = nap+":"+ora+":"+perc+":"+masodperc;
ido_txt.text = szamlalo;
Végezetül ha a maradekido 1000 alá csökken (ez éjfél elõtt egy másodperccel fog bekövetkezni), elidul a happy_mc movie clip.
if (maradekido < 1000){
happy_mc.gotoAndStop(2);
}
};
Ha kíváncsi vagy arra, hogy mi történik 2006. december 31-én éjfélkor, gyere vissza és nézd meg!
Figyelem! A tartalom legalább 2 éve nem frissült! Előfordulhat, hogy a képek nem megfelelően jelennek meg.