Академический Документы
Профессиональный Документы
Культура Документы
1
Tema: Manipularea imaginilor
Scopul lucrrii: familiarizarea cu produsul Director, studierea principalelor componente
necesare dezvoltrii unei aplicaii multimedia.
Produsul de creaie multimedia Director
Produsul de creaie multimedia Director lucreaz cu mai multe componente identificabile de
ctre utilizator prin prisma unor ferestre de vizualizare. Aceste componente sunt utile pentru a
construi o prezentare multimedia i se invoc prin selecia unei opiuni ce indic componenta din
meniul Window.
Componenta Stage definete fereastra (zona client) n care se deruleaz prezentarea multimedia
dup cum se poate observa n figura 1.1.
i dureaz 30 frame-uri (implicit). Dup cum se poate observa din figura 1.7 butonul ntr n
scen ncepnd cu primul frame si dureaz 30 frame-uri.
Prin script se nelege o secven de cod realizat pentru a rspunde la mesajele interceptate de
obiecte ca urmare a declanrii unor evenimente, pentru a defini clase sau funcii de utilizator.
Principala structur de program existent n scripturi este handler-ul care are forma:
function nume (argumente)
{
//corpul_handler-ului
}
Un script poate conine unul sau mai multe handler-e. Intr-o aplicaie Director pot exista mai
multe tipuri de scripturi:
1. Script de tip behavior, cel mai utilizat tip de script ntr-o aplicaie Director, care se ataeaz
obiectelor instaniate n score sau cadrelor; aceste scripturi sunt vizibile n componenta Cast, ca
membrii i sunt marcai cu iconia ;
2. Script de tip movie care vizeaz aplicaia n ansamblul ei, prin intermediul lui se trateaz
evenimente specifice aplicaiei (de exemplu: startmovie, stopmovie) sau se definesc funcii de
utilizator cu vizibilitate n toat aplicaia; aceste scripturi sunt vizibile n componenta Cast, ca
membrii i sunt marcai cu iconia ;
Pentru a genera un script de tipul celor doua menionate, se selecteaz urmtorul membru
neocupat din Cast i se activeaz componenta Script (opiunea Script de la meniul Window).
La proprieti, se selecteaz tab-ul Script i se alege tipul de script dorit pentru a fi generat
dup cum se ilustreaz n figura 1.10.
List de modificri:
1. Sunetul este inversat
2. Pasul (pitch) mutat n sus sau n jos. (parametri: valoare)
3. Schimb viteza de redare n sus sau n jos. (parametri: valoare)
4. Echo adugat. (parametri: amplitudine, ntrziere)
5. Egalizator (5 pasi)
6. Adaug zgomot (parametri: amplitudine, de tip zgomot)
7. Volumul oscileaz de-a lungul unei LFO (oscilaie de frecven joas), parametri: perioada
LFO, LFO amplitudine (0-100, 0-100)
8. Se amestec dou fiiere mpreun (se redau concomitent dou fiiere)
9. Adaug sunet metronom (parametri: frecvena, periodicitatea)
10. Schimbarea balanei de sunet (poziia perceput)
HTML poate fi fcut public prin instalarea lui pe un server Web. Marcajele introduse de
HTML poart numele de tag-uri HTML.
Versiunile cele mai importante de HTML:
<tr>
<th>Masculi
<td>0.93
<td>4.5
<td>80%
<tr>
<th>Femele
<td>0.91
<td>4.2
<td>67%
</tr>
</tbody>
</table>
Iepuri de casa (merged cells)
Media
Blana
ma
lungime greutate
ro
Masculi 0.93
4.5
80%
Femele 0.91
4.2
67%
</noframes>
</frameset>
h1,h2,h3,h4,h5,h6
{
color:green
}
Pentru a putea varia definiia pentru un selector a fost introdus noiunea de clas. n felul acesta
dou entiti HTML de acelai tip pot fi formatate diferit dac se va preciza o clas diferit
pentru fiecare.
n fiierul css:
p.right {text-align:right}
p.center {text-align:center}
n fiierul html:
<p class="right">Acest paragraf va fi aliniat la dreapta.</p>
<p class="center">Acest paragraf va fi aliniat central.</p>
Dac la definiia unei clase este omis selectorul atunci clasa se va putea aplica la orice
entitate html care suport acea proprietate:
.center {text-align:center}
.green {color:green}
Dac se dorete, unei entiti html i se pot aplica simultan mai multe clase:
<p class="center green">Textul paragrafului.</p>
Exist 3 moduri diferite de a aduga elemente css la un document:
Sarcina: realizarea unei aplicaii web multimedia utiliznd noiunile din HTML, XHTML, CSS.
ntrebri de control:
1. Cum se descifreaz HTML?
2. Cum poate fi fcut public un document HTML. Cum se numesc marcajele introduse de
HTML?
3. Care sunt versiunile de HTML?
4. Ce tipuri de taguri exist?
5. Ce reprezint XHTML?
6. Ce reprezint tehnologia CSS?
7. n cte moduri pot fi adugate elementele css la un document?
Cea mai important facilitate oferit de JavaScript este aceea de a aduga dinamism i
interactivitate n paginile Web clasice. Un exemplu elocvent este oferit de Dave Tau n
pagina de prezentare a crtii JavaScript 3nd Ed.:
Descriere
Examplu
Rezultat
adunare
scadere
multiplicare
impartire
modul (rest)
x=y+2
x=y-2
x=y*2
x=y/2
x=y%2
x=7
x=3
x=10
x=2.5
x=1
++
--
incrementare
decrementare
x=++y
x=--y
x=6
x=4
Descriere
Examplu
egal ca valoare
egal si ca tip
x==8 fals
x===5 adevarat
x==="5" fals
x!=8 adevarat
x>8 fals
x<8 adevarat
x>=8 fals
x<=8 adevarat
diferit
mai mare
mai mic
mai mare sau egal
mai mic sau egal
break;
default:
cod executat daca n!=1 si n!=2
}
Ex:
<script type="text/javascript">
var d=new Date();
theDay=d.getDay();
switch (theDay)
{
case 0:
document.write("duminica");
break;
case 1:
document.write("luni");
...
case 6:
document.write("sambata");
default:
document.write("zi gresita!");
}
</script>
3. Instruciunea for
for (var=start;var<=end;var=var+pas)
{
cod de executat
}
Ex:
<script type="text/javascript">
var n=1,i;
document.write("<h2>n factorial </h2><br>");
for(i=1;i<=10;i++) {
n=n*i;
document.write(i"! = "+n+"<br>");
}
</script>
4. Instruciunea while/do while
while (var<=endval)
{
code de executat
}
do
{
code de executat
}
while (var<=endval);
Ex:
<script type="text/javascript">
var n=1, i=1;
document.write("<h2>numere impare </h2><br>");
while(i<=10) {
document.write(n,", ");
n+=2;
}
</script>
5. Instruciunea for in
for (variable in object)
{
code de executat
}
Ferestre de avertizare
1. Alert box
alert("mesaj");
2. Confirm box
confirm("mesaj");
3. Prompt box (>>> ex4_3 <<<)
prompt("mesaj","valoare implicita");
Funcii
Funciile sunt secvene de cod care se execut fie prin apelarea explicit fie prin legarea de
un eveniment. De obicei funciile sunt plasate n seciunea <head>.
Funciile au un nume, o list de parametrii de apel i un bloc de cod. Dac codul funciei
calculeaz o valoare atunci aceasta poate fi returnat prin aplelul return val;.
function numeFunctie(var1,var2,...,varN)
{
codul functiei
}
Evenimente
Evenimentele sunt aciuni care sunt detectate de ctre browser i pot declana execuia unor
funcii.
Evenimentele captate de JavaScript: onLoad, onUnload, onFocus, onBlur, onChange,
onSubmit, onMouseOver, onMouseOut.
Ex:
function verificSuma() {
if(document.getElementById("suma").value<0) {
alert("Suma nu poate fi negativa!");
document.getElementById("suma").value=0;
}
}
...
<input type="text" size="30" id="suma" onchange="verificSuma()">
O list cu evenimentele specifice entitilor javascript se gsete laElated.
(sursa: Wikymedia)
Exemplu de DOM:
Fiecare obiect definit de modelul DOM are o serie de proprieti i metode prin care poate fi
controlat:
Tipuri de date: Boolean, Int, Uint, Object, Number, String, Null, Void.
Variabile:
var a:int = 10, b:int = 20;
var numArray:Array = ["zero", "one", "two"];
Constante predefinite: null, undefined, true, false.
Declararea constantelor: const MIN:int = 0;
Obiecte:
declarare: var someObj:Object;
instantiere: var myBirthday:Date = new Date();
var someArray:Array = new Array(1,2,3);
Clase dinamice:
dynamic class Persoana
{
private var adresa:String;
public var nume:String = "Ion";
function Persoana()
{
this.adresa="nu are";
}
}
var pers:Persoana = new Persoana();
pers.inaltime = 180;
Instruciuni condiionale: if..then..else, switch la fel ca i la JavaScript
Instruciuni ciclice:
- for
var i:int;
for (i=0; i<5; i++) { trace(i); }
- for..in
var myObj:Object = {x:20, y:30};
for (var i:String in myObj)
{
trace(i + ": " + myObj[i]);
}
// output: x: 20 y: 30
- for each..in
var myObj:Object = {x:20, y:30};
for each (var num in myObj)
{
trace(num);
}
// output: 20 30
- while
var i:int = 0;
while (i < 5)
{
trace(i);
i++;
}
- do while
var i:int = 5;
do
{
trace(i);
i++;
ntrebri de control:
1. Care sunt avantajele limbajului JavaScript?
2. Variabile JavaScript, operatori, instruciuni.
3. Tipuri de ferestre de avertizare.
4. Care este sintaxa de declarare a funciilor. Care sunt evenimentele captate de JavaScript?
5. Ce mecanisme JavaScript se utilizeaz pentru tratarea erorilor, captarea lor?
6. Ce operator se utilizeaz pentru crearea obiectelor?
7. Dai exemplu de model DOM.
8. Ce reprezint Action Script, care este versiunea actual?
9. Elemente utilizate n Action Script.
Serverul Web ncarc pagina din sistemul de fiiere propriu si, constatnd c este vorba de o
pagin PHP o trimite interpretorului PHP. Interpretorul PHP parcurge pagina i execut
instruciunile PHP ntlnite. Instruciunile PHP au ca i scop principal acela de a genera cod
HTML. De asemenea, codul HTML din fiierul original este copiat pur i simplu la ie ire.
Interpretorul PHP transmite napoi ctre server fiierul transformat prin interpretarea codul
PHP. Acest fiier va conine doar cod HTML (eventual i Client Side Script etc.) dar nu i
cod
PHP.
Fa de aceste limbaje SSS, PHP are cteva avantaje importante:
o
performan bun
o
interfee cu o mare varietate de sisteme de gestiune a bazelor de date
o
biblioteci puternice care acoper toate operaiile Web uzuale
o
gratuit (http://www.php.net) /cost scazut (http://www.zend.com)
instructiuneN
Instruciunea switch:
switch (expr) {
case valoare_1:
instructiune_1;
break;
case valoare_2:
instructiune_2;
break;
...
case valoare_n:
instructiune_n;
break;
defaut:
instructiune_default;
}
Instruciunea while:
while (expr)
instructiune;
Instruciunea do-while:
do
instructiune
while (expr);
Instruciunea for:
for (expr1; expr2; expr3)
instructiune;
Instruciunea foreach:
$tablou = array (el0, el1, ... el_n);
foreach (tablou as val_el_crt)
instructiune;
$tablou = array( "cheie1" => el1, "cheie2" => el2, ... "cheie_n" => el_n);
foreach (tablou as cheie=>val_el_crt)
instructiune;
Exemplul 5.2: utilizare tablouri.
Instruciuni control repetiii: continue, break sireturn.
Funcii PHP
Funciile sunt utilizate pentru a grupa instruciunile care execut un anumit algoritm. Ele
permit refolosirea codului ori de cte ori este nevoie.
O funcie este un modul de cod care ofer o interfa de apel, rezolv un anumit algoritm i
opional, returneaz o valoare.
Declararea unei funcii se face n felul urmtor:
function nume_functie(lista_par) {
// secventa instructiuni
// (corpul functiei)
// daca este cazul: return exp;
}
Exemplu:
function afis_tablou( $t, $nume)
{
echo "Continut tablou $nume<BR>";
echo "<UL>";
o
o
o
o
catre clientul de Web care a acceseaza pagini pe tot parcursul sesiunii de lucru.
Pasii care se fac la utilizarea unei sesiuni sunt urmatorii:
crearea unei sesiuni (session_start();)
inregistrarea variabilelor sesiune (session_register( "var");)
utilizarea variabilelor sesiune pentru controlul accesului sau personalizarea
paginii ($_SESSION["var"];)
stergerea variabilelor sesiune si distrugerea sesiunii (session_destroy();).
O alternativa la utilizarea sesiunilor o reprezinta tehnologia coockies, caz in care datele
specifice utilizatorului sunt pastrate pe calculatorul acestuia (in fisiere cookies gestionate de
browser).
6.2. GD
Biblioteca GD este folosite pentru crearea dinamica a imaginilor (GIF, JPG, PNG). Este
disponibila pe mai multe platforme (http://www.libgd.org/) dar in continuare ne vom referi la
implementarea PHP.
Pentru instalarea bibliotecii modulul PHP trebuie compilat cu optiunea --with-gd. La
versiunea de Windows se poate folosi biblioteca php_gd2.dll (se va modifica corespunzator
php.ini). In php.ini trebuie facuta si modificarea:
gd.jpeg_ignore_warning PHP_INI_ALL
Includerea unei imagini GD in pagina se va face prin:
<img src="img.php" alt="Imagine prin PHP GD ">
Pentru a crea imaginea fisierul img.php va contine:
<?php
header ("Content-type: image/jpeg");
$img = ImageCreate (250,150);
$fond = ImageColorAllocate ($img, 0, 0, 240);
$col = ImageColorAllocate ($img, 255, 255, 255);
ImageEllipse($img, 125, 75, 220, 100, $col);
ImageJPEG ($img, '', 100);
?>
Acest exemplu va crea o elipsa pe un fundal albastru.
Functii GD
> array gd_info(void);
array(9) {
["GD Version"]=>
string(24) "bundled (2.0 compatible)"
["FreeType Support"]=> bool(false)
["T1Lib Support"]=> bool(false)
["GIF Read Support"]=> bool(true)
["GIF Create Support"]=> bool(false)
["JPEG Support"]=> bool(false)
["PNG Support"]=> bool(true)
["WBMP Support"]=> bool(true)
["XBM Support"]=> bool(false)
}
> list($width,$height,$type,$attr) = getimagesize("img/flag.jpg");
> int imagecolorallocate($image, $red, $green, $blue);
Obs: primul apel va modifica culoarea de background.
> int imagecolorat($image, $x, $y);
if (!pdf_open_file($pdf, ""))
die("Error: Fail to open output file.");
pdf_set_info($pdf, "Author", $nume." <". $email.">");
pdf_set_info($pdf, "Title", "CV -".$nume);
pdf_set_info($pdf, "Subject", "The CV of ".$nume.".");
define("PAGE_HEIGHT", 842); /* A4 */
define("PAGE_WIDTH", 595);
define("VERT_SPACING", 14);
pdf_begin_page($pdf, PAGE_WIDTH, PAGE_HEIGHT);
// Print name
$font = pdf_findfont($pdf, "Times-Bold", "winansi", 0);
pdf_setfont($pdf, $font, 14.0);
$stringwidth = pdf_stringwidth($pdf, $nume, $font, 14.0);
$xpos = (PAGE_WIDTH / 2) - ($stringwidth / 2);
pdf_show_xy($pdf, $nume, $xpos, 700);
$xpos = pdf_get_value($pdf, "textx", 0);
$ypos = pdf_get_value($pdf, "texty", 0) - VERT_SPACING;
// Print personal information.
$font = pdf_findfont($pdf, "Times-Roman", "winansi", 0);
pdf_setfont($pdf, $font, 12.0);
$headerdata = array($adresa, $oras, $tara, $codPostal, $tel, $email);
pdf_end_page($pdf);
pdf_close($pdf);
$buf = pdf_get_buffer($pdf);
$len = strlen($buf);
header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=resume.pdf");
print $buf;
}
else if (window.ActiveXObject)
{
// for IE6, IE5
xmlhttp=new ActiveXObject
("Microsoft.XMLHTTP");
}
else
{
alert("Your browser does not
support XMLHTTP!");
}
}
Proprietatile obiectului XMLHttpRequest sunt:
- onreadystatechange Permite implemenatrea unei functii care sa prelucreaze datele primite
de la server. Aceasta functie va fi apelata automat de catre browser in momentul cand apar
evenimente asociate unei cereri XMLHttp. Pentru crearea acestei functii poate fi utilizat
codul:
xmlhttp.onreadystatechange=function()
{
// prelucrarea datelor de la server
}
- readyState Aceasta proprietate pastreaza codul starii in care se afla raspunsul la ultima
cerere efectuata. Valorile posibile sunt:
0 Cererea nu a fost initializata
1 Cererea este pregatita
2 Cererea a fost trimisa
3 Cererea este in procesare
4 Cererea este completa
La fiecare modificare a valorii variabilei readyState browserul va executa automat functia
asociata proprietatii onreadystatechange. Aceasta va testa incheierea cererii si apoi va
prelucra datele primite:
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4)
{
// Prelucreaza datele primite
}
}
- responseText/responseXML Permite accesarea datelor din raspunsul serverului. Acestea
sunt de obicei impachetate in format text sau XML.
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4)
{
document.myForm.afisaj.value =
xmlhttp.responseText;
}
}
Pentru a trimite cererea catre server, programul va apela functiile open() si send() ale
obiectului XMLHttpRequest. Functia open() primeste trei parametrii. Primul specifica
metoda de transmitere a datelor (GET sau POST), cel de al doilea specfica care pagina de pe
server (PHP, ASP etc.) va prelucra cererea, iar ultimul parametru trebuie sa fie true pentru
apeluri asincrone. In cazul functiei send, parametrul va fi null in cazul apelurilor GET la
pagini din acelasi director de pe server.
Pentru a modifica o portiune a paginii curente, aceasta portiune poate fi inclusa intr-un
tag<div>. Exemplu:
// fisierul ajax1.html
<html>
<head>
<title>Exemplu Ajax </title>
<script type="text/javascript">
function ajax()
{
var xmlhttp;
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox ...
xmlhttp=new XMLHttpRequest();
}
else
{
// code for IE6, IE5
xmlhttp=new ActiveXObject
("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4) {
document.getElementById
('panou').innerHTML=
xmlhttp.responseText;
}
}
xmlhttp.open("GET","ajaxRepl.php",
true);
xmlhttp.send(null);
}
</script>
</head>
<body>
<div id='panou'>
<h2>Text HTML</h2><br>
Textul este continut in fisierul HTML.
</div>
<form name="f1">
<input type="button" name="Schimba" value="Schimba" onClick="ajax();">
</form>
</body>
</html>
// fisierul ajaxRepl.php
<?php
echo '<h2>Text PHP</h2><br>Text
generat din PHP';
?>
Pentru mai multe informatii consultati tutoriale Ajax la w3Schools, ajaxtutorials si tizag.
Pentru a crea aplicatii complexe se poate apela si la biblioteci ajax cum ar fi Google
code, jQuerysau Dojo.
7.2. Adobe Flex
Adobe Flex a fost creat de Adobe Systems si este destinat crearii de aplicatii interactive RIA. El
imbina formatul MXML (Macromedia XML) cu limbajul de tip script Actionscript.
Rezultatul final este un fisier Flash (SWF) care cuprinde elemente de interfata interactive.
Framework-ul Flash este oferit de Adobe in regim open source. Pentru dezvoltarea eficienta
a aplicatiilor se poate utiliza Adobe Flex Builder, oferit in regim comercial.
Pentru utilizare in domeniul educatiei firma Adobe ofera licente gratuite de Adobe Flex
Builder Professional.
Avantajul tehnologiei Flex consta si in posibilitatea de a rula aplicatiile atat intr-un navigator
Web cat si ca aplicatii desktop (prin intermediul Adobe AIR).
Un exemplu de utilizare a tehnologiei Flex poate fi vizualizata la urmatoarea adresa Web
- Design-Contact-Form-Flex.
7. 3. SVG
SVG (Scalable Vector Graphics) este un limbaj de tip XML care permite definirea imaginilor
vectoriale pentru Web. Avantajul unui format vectorial in fata unui format bitmap (gif, jpg,
png) consta in posibilitatea de a o apropria/departa sau redimensiona fara a pierde calitatea.
De asemenea formatul SVG permite animarea oricarui atribut utilizat la definirea imaginii. In
plus fisierul care descrie o imagine este mai mic decat fisierul echivalent bitmap, este editabil
si cu editoare de text obisnuite si poate fi tiparit la orice rezolutie de imprimare cu
rezultate asemanatoare.
O serie de companii precum Sun Microsystems, Adobe, Apple, IBM si
Kodak au fost implicate activ in dezvoltarea acestui standard.
Acest standard W3C este suportat la ora actuala de multe navigatoare. In plus se poate utiliza
un plug-in de la Adobe (Adobe SVG Viewer) pentru navigatoarele care nu suporta direct
standardul (ex. Internet Explorer).
Exemplu de imagine SVG:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/
Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" version="1.1" xmlns= "http://
www.w3.org/2000/svg">
<circle cx="100" cy="50" r="40"
stroke="black" stroke-width="2"
fill="red"/>
</svg>
In plus se poate iclude o imagine SVG intr-un fisier HTML cu ajutorul tagului iframe:
<iframe src="rect.svg" width="300" height="100">
</iframe>
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
ntrebri de control:
1. Ce reprezint tehnologia AJAX, descifrare?
2. Care sunt proprietile obiectului XMLHttpRequest?
3. Exemple de funcii ale obiectului XMLHttpRequest.
4. Care este destinaia limbajului Adobe Flex? Numii avantajul tehnologiei Flex.