Készítsünk visszaszámlálót szilveszterre!

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.

Copyright © 2023 Trans-Europe Zrt. Minden jog fenntartva.
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram