Ako dostať čas a dátum do FLASH?

4. října 2000

Často sa stretávame s otázkou, či sa dá nejakým spôsobom zobraziť čas a dátum. A tak vám prinášame dnešný článok, v ktorom si ukážeme sa dá vo FLASHi (4) jednoduchým spôsobom zobraziť digitálny čas a dátum. Ale poďme pekne po poriadku. Na to aby sme dokázali zobraziť čas a dátum potrebujeme niekoľko vecí.

  • nejaký programovací jazyk (v našom prípade PERL, PHP a ASP).
  • script(zdrojový kód), ktorý dokážeme zobraziť vo našom FLASH projekte.
  • a samotný FLASH projekt zo zabudovaným „interfejsom“.

Prvý bod.

Programovací jazyk si vyberte podľa toho, aký podporuje váš server. Pre istotu sme spravili tento článok pre PHP, Perl (CGI) a pre ASP.

Druhý bod (zdrojový kód).

Zdrojový kód, ktorý budeme potrebovať, bude mať za úlohu zobraziť čas a dátum v tvare, ktorý dokáže náš FLASH projekt načítať. Napríklad, keď máme súbor cas.php (respektíve cas.cgi, cas.asp), tak potrebujeme, aby sa v ňom zobrazil čas a dátum v tvare: hod=19&min=35&sec=24&den=21&mesiac=Sep&rok=2000. FLASH si tieto načítané hodnoty zaznamená ako samostatné premenné aj s aktuálnou hodnotou, s ktorou potom môžeme ľubovoľne vo FLASHi narábať podľa vlastných predstáv.

Zdrojové kódy:

PHP – cas.php:

$hod = date(„H“); //pokiaľ váš server nie je hostovaný v stredoeurópskej časovej zóne(CET), tak zameňte date(„H“) za gmdate(„H“)+2 cez letný a gmdate(„H“)+1 cez zimný čas $min = date(„i“); $sec = date(„s“); $den= date( „d“); $mesiac= date( „M“); $rok= date( „Y“); echo „hod=$hod&min=$min&sec=$sec&den=$den&mesiac=$mesiac&rok=$rok“;

Perl(CGI) – cas.cgi:

#!/apache/cgi-bin/perl print „Content-type: text/html\n\n“; ($Second,$Minute,$Hour,$mday,$mon,$year) = localtime(time); print „hod=“,($Hour),“&min=$Minute&sec=$Second&den=$mday&mesiac=$mon&rok=“,($year +1900),; exit;

ASP – cas.asp:

<%
response.write(„hod=“&hour(now)&chr(38)&“min=“&minute(now)&chr(38)&“sec=“&second(now)&chr(38)&“den=“&day(now)&chr(38)&“mesiac=“&month(now)&chr(38)&“rok=“&year(now))
%>

Príklady vypíšu aktuálny čas a dátum, ktorý je nastavený na lokálnom serveri. Pokiaľ by sa vyskytly problémy s časom (posun o pár hodín a pod.), tak napíšte do diskusie. Radi vám pomôžeme. V PHP sa mesiace vypisujú podľa skratky po anglicky, kdežto v Perle a ASP sa vypíše iba číslica daného mesiaca. Je to dôležité, pretože podľa toho budeme musieť ďalej uspôsobovať náš FLASH projekt.

Bod tri (FLASH projekt).

A teraz prejdeme do „programovania“ vo FLASHi. Najprv si musíme uvedomiť akým spôsobom to celé bude fungovať. Či chceme:

  • a) aby sa čas načítaval každú 0,5 sekundu (najpresnejší čas, ale zaťažuje tým neustálym generovaním server)
  • b) alebo si vytvoríme vlastné hodinky (je to nepresnejšia metóda, pretože každé PC zobrazuje FLASH inou rýchlosťou, čo má za následok omeškanie).

Ďalej budeme pokračovať alternatívou B, pretože je o čosi zložitejšia.

Varianta B.

1) Vytvoríme si projekt o veľkosti 300×200 pixlov a nastavíme frame rate na 10 (10 frámikov = 1 sekunde). Prvý layer premenujeme na „telo“. Vytvoríme si 3 textové polia (v layery „telo“), kde bude zobrazený čas. Ale pozor musia to byť text field. Každé pomenujeme(v properties) ako min, sec a hod. Pre lepší efekt odstránime biely panel, zakážeme editáciu, selekciu a Outlines nastavíme Numbers. Toto bude mať za naslédok, že si FLASH importne font (iba čislice) do seba a číslice sa nám budú, vo výslednom projekte, javiť mäkším dojmom. Celý tento postup zopakujeme aj pri dátume. Všetky políčka (text fields), na dátum a čas, necháme prázdne. Všetko je v tom istom keyframe.

2) Teraz budeme potrebovať načítať data z nášho vopred vytvoreného scriptu. Ale ešte predtým posunieme náš keyframe s textovými políčkami na 3 frame. Potom vytvoríme nový layer (názov „engine“). Na frame 1, kde máme aj jeden keyframe sa presunieme do actions. Pridáme Load Variables („cas.php“, 0). Level je 0. Čiže sme si vybrali PHP.

3) A tu narazíme na prvý problém a to, že PHPčko zobrazuje mesiace v skrátenom anglickom tvare. Čiže August zobrazí ako Aug, alebo September ako Sep. Takže musíme vytvoriť konvertovač týchto názvov na číslice. Najlepšie na 3 frame, kde spravíme nový keyframe. A do actions vložíme toto:

If (mesiac eq“Jan“)Set Variable: „mesiac“ = 1 End If

Toto opakujeme až po December kde je premenná mesiac 12.

4) Ešte predtým ako sa pustíme ďalej, by som doporučoval vytvoriť si akýsi preloader, či kontrolovač, ktorý skontroluje, či sú nahraté dáta (čas a dátum). Na druhom frámiku si vytvoríme nový key frame. Dáme doňho Stopku (v actions). Teraz si vytvoríme nový symbol (Movie Clip s názvom „kontrola“). V siedmom frámiku tohto symbola vytvoríme keyframe. Do actions vložíme toto:

If (_level0:rok<>0) Begin Tell Target („_level0“) Go to and Play (3) End Tell Target Else Go to and Play (1) End If

Tento kontrolovač si ešte môžeme vyčačkať nejakou jednoduchou animáciu. Napr. „Inicializujem…“

5) Teraz sa vráťme späť do hlavnej scény. Ďalej budeme potrebovať sekundovač, ktorý nám bude pridávať sekundy do nášho importovaného času. Takže si vytvoríme nový symbol (Movie Clip) s názvom „sekundovač“. V ňom si v jedenástom frámiku vytvoríme nový keyframe, do ktorého vložíme tento kód:

If (_level0:sec<9) Set Variable: "_level0:sec" = 0&(_level0:sec+1) Else Set Variable: "_level0:sec" = _level0:sec+1 End If Go to and Play (1)

6) Ibaže tento sekundovač nie je ešte dokonalý, pretože ide do nekonečna, čiže si musíme vytvoriť nejaký sledovač sekundovky a minútovky. Akonáhle sekundovka prejde cez 60, musí sa pridať nová minúta a vynulovať sekunda. Podobne aj u minútovky s hodinami. Takže si vytvoríme nový symbol(Movie Clip) s názvom „sledovač“. A pridáme sem nový keyframe na druhý frame. Do actions vložíme Go to and Play (1). A do prvého keyframu(actions) vložíme tento kód:

If (_level0:sec=60) Set Variable: „_level0:sec“ = 0&0 Set Variable: „_level0:min“ = 0&_level0:min+1 End If If (_level0:min=60) Set Variable: „_level0:min“ = 0&0 Set Variable: „_level0:hod“ = _level0:hod+1 End If If (_level0:hod=24) Set Variable: „_level0:hod“ = 0&0 End If

7) A je to. Pokial chcete použiť Perl(CGI), alebo ASP, stačí iba zameniť súbor cas.php za cas.cgi (resp. cas.asp). Variantu B máme ze sebou, teraz prejdeme na variantu A:

Varianta A.

Ako som už spomínal, táto varianta bude založená na tom, že sa bude čas neustále nahrávať. Čiže sa zaťaží viac server a linka. Nuž, dajme sa do toho.

1) ponecháme si našu starú variantu B, pričom vyhodíme pridávanie sekundovy (sekundovač). Prejdeme do symbolu „sledovač“ a celý prvý keyframe (actions) zmeníme na:

Load Variables („cas.php“, 0)

Druhý keyframe posunieme na 10 frámik.

2) Lenže my nepotrebujeme načítavať dátum zakaždým dookola a tak si premenujeme den, mesiac a rok na den1, mesiac1 a rok1 (v layery „telo“ v properties na textových poliach). Do tretieho keyframu v layery „engine“, kde máme konvertovač mesiacov, pridáme na koniec ešte tieto 3 riadky:

Set Variable: „den1“ = den Set Variable: „mesiac1“ = mesiac Set Variable: „rok1“ = rok

3) A je to. Na perl či ASP to zmeníte, keď zmeníte súbor cas.php na cas.cgi (resp. cas.asp).

Dúfam, že tento príklad bol pre vás poučný. Kompletný príklad aj zo zdrojovými kódmi si môžete stiahnuť tu.

Štítky: Články

Mohlo by vás také zajímat

Nejnovější

1 komentář

  1. ducan

    Čvc 20, 2009 v 19:21

    pěkně zpracované ;)

    Odpovědět

Napsat komentář: ducan Zrušit odpověď na komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *