WEBFEJLESZTÉS 2. HTML5 JAVASCRIPT APIK FELHASZNÁLÓI OBJEKTUMOK



Hasonló dokumentumok
WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

12.óra jquery Framework #1. Gyimesi Ákos

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

Az image objektum. Az image eseménykezel i. Képek el zetes betöltése. Feladat. Váltóképek készítése

Imperatív programozás

Az Educatio weboldalain elhelyezhető hirdetések technikai paraméterei

A szerzõrõl... xi Bevezetés... xiii

Szabadkai Műszaki Szakfőiskola. Web programozás. dr Zlatko Čović

A JavaScript főbb tulajdonságai

Készítette: Gál Tamás. A tananyag programozott változata itt érhető el: Webfejlesztés

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

Sakk játék. Feladat: JavaScript segítségével olyan programot kell írni, ami egy sakktáblát szimulál. Kiválasztásra változtatják a helyüket.

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

Objektumorientált programozás

VII. Appletek, grafika

JavaScript bűvésztrükkök, avagy PDF olvasó és böngésző hackelés

Memória játék. Felhasználói dokumentáció

Szabadkai Műszaki Szakfőiskola. Web programozás. dr Zlatko Čović

5-ös lottó játék. Felhasználói dokumentáció

Java grafikai lehetőségek

Természetesen készíts egy csempe nevű könyvtárat és ide mentsd az index.html állományt.

HTML. Ismerkedés a JavaScripttel. A JavaScript lehet ségei. A JavaScript kód helye. Önálló JavaScript fájlok

Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer

Többfelhasználós és internetes térkép kezelés, megjelenítés

WEBES ALKALMAZÁSFEJLESZTÉS 1.

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Jquery. Konstantinusz Kft.

"Egységes erdélyi felnőttképzés Kárpát-medencei hálózatban" JAVA ALAPÚ WEBPROGRAMOZÁS. M6 Modul: A DOM Modell

Programozási nyelvek Java

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

A távolbalátás technikája

A jquery.clickheat egy jquery plugin, ami lekezeli a kattintásokat a kijelölt tartományban. jquery.clickheat

Számológép. Bármilyen számítógépen működik, amin található böngésző és Java alkalmazás. Indító képernyő

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Tili-Toli játék. Felhasználói dokumentáció

Informatika terméktervezőknek

SVG eseménykezelés. Clickre dupla < SVG

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Szoftvertechnológia alapjai Java előadások

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

Multimédiás adatbázisok

Egy webes játék készítésének programozásdidaktikai

Ismétlés Érdemes megjegyezni: a HTML nyelv nem azért készült, hogy segítségével formázzuk a kinézetét/stílusát az oldalunknak, hanem azért, hogy leírj

Stateless Session Bean

WEBFEJLESZTÉS 2. ŰRLAPOK, KÉPEK, TÁBLÁZATOK, BÖNGÉSZŐ

Programozási környezetek

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

Sakk-játék. Bármilyen számítógépen működik, amin található böngésző és Java alkalmazás. Indító képernyő

Neumann János Számítógép-tudományi Társaság Programozás, robotprogramozás szakkör Három félév 3 * 8 foglalkozás

Tájékoztató. Használható segédeszköz: -

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

WEBFEJLESZTÉS 2. ADATTÁROLÁS, FÁJLOK

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Web-fejlesztés NGM_IN002_1

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

WEBFEJLESZTÉS 2. MUNKAMENET-KEZELÉS, HITELESÍTÉS

Grafikus felületek a programozó szempontjából grafikus elemek absztrakt reprezentációja az egyes elemek tulajdonságait leíró adatstruktúrák.

Ajax és Echo 2. Bokor Attila

Adatbázisok webalkalmazásokban

Pénzügyi algoritmusok

Kompozit alkalmazások fejlesztése. IBM WebSphere Portal Server

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

Máté: Számítógépes grafika alapjai

A WiFi4EU megfelelőség-ellenőrző összetevő. Végrehajtási útmutató v1.0

Internet TV Broadcaster kézikönyv

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

Az SVG egy olyan XML alkalmazás, amit vektoros grafikai tartalmak létrehozására fejlesztettek ki.

Tartalomjegyzék. Előszó Silverlight és XAML alapok Layout Management... 35

Bevezetés a programozásba II 1. gyakorlat. A grafikus könyvtár használata, alakzatok rajzolása

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Web programozás. 3. előadás

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Programozás III GRAFIKA RAJZOLÁS SWING FELÜLETEN RAJZOLÁS GRAFIKA HASZNÁLATA. Rajzolni az awt csomag Graphics osztályának metódusaival tudunk.

JAVA webes alkalmazások

Kivételkezelés a C++ nyelvben Bevezetés

1. fejezet Bevezetés a web programozásába (Balássy György munkája) Az internet működése... 11

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben

Webshop készítése ASP.NET 3.5 ben I.

S z á m í t ó g é p e s a l a p i s m e r e t e k

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Tervminták a valósidejű gyakorlatban

Szoftvertechnológia alapjai Java előadások

Algoritmusok raszteres grafikához

Új prezentáció létrehozása az alapértelmezés szerinti sablon alapján.

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

2. Gyakorlat Khoros Cantata

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

SZERVER OLDALI JAVASCRIPT. 7. hét Promise, async, error rst callback, grunt

Web Technológiák. Répási Tibor egyetemi tanársegéd. Miskolc Egyetem,Gépészmérnöki kar, Infomatikai és Villamosmérnöki Tanszékcsoport (IVM)

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

AWK programozás, minták, vezérlési szerkezetek

Tartalom. A JavaScript haladó lehet ségei. Megjelenés. Viselkedés. Progresszív fejlesztés. A progresszív fejlesztés alapelvei

SZAKKÉPZÉSI KERETTANTERV a(z) MULTIMÉDIA-ALMAZÁSFEJLESZTŐ SZAKKÉPESÍTÉS-RÁÉPÜLÉSHEZ

Imperatív programozás

JAVA SE/ME tanfolyam tematika

bool _freehand = false; QPoint _lastpoint; // ebben a pontban volt az utolsó rajzolásnál az egérmutató

Átírás:

WEBFEJLESZTÉS 2. HTML5 JAVASCRIPT APIK FELHASZNÁLÓI OBJEKTUMOK Horváth Győző Egyetemi adjunktus 1117 Budapest, Pázmány Péter sétány 1/C, 2.420 Tel: (1) 372-2500/1816

2 Ismétlés

Ismétlés 3 JavaScript nyelvi elemei JavaScript és HTML kapcsolata Eseménykezelés részletei JavaScript beépített objektumok DOM és HTML DOM: űrlapok, képek, táblázatok BOM Névtelen függvények, reguláris kifejezések Stílusok, animációk

4 JSON

JSON 5 JavaScript Object Notation A JavaScript literálformáira épülő adatleírási formátum Központ eleme objektum: { tömb: [] Elterjedt JSON.stringify() JSON.parse()

JSON példa 6 Szótáras feladat [ ] { "angol": "apple", "magyar": "alma", { "angol": "pear", "magyar": "korte", { "angol": "plum", "magyar": "szilva", { "angol": "peach", "magyar": "barack"

7 Tárolás

Tárolás 8 Változók (Süti) HTML 5 Storage (Web Storage) localstorage sessionstorage Web SQL Database (részben támogatott) Indexed Database (IndexedDB) File API (bináris állományok tárolása)

localstorage 9 Kulcs-érték párok gyűjteménye Objektum //Tárolás localstorage.alma = 'piros'; localstorage['bármi'] = 42; //Elővétel (akár újratöltés után) console.log(localstorage.alma); console.log(localstorage['bármi']); //Összetett adatszerkezetek tárolás var x = [1, 3, 5, 7]; localstorage.setitem('adat', JSON.stringify(x)); var x2 = JSON.parse( localstorage.getitem('adat') );

10 Média

Audio 11 Hangállományok lejátszása HTML <audio> tag src controls autoplay stb. <audio src="horn3.wav" id="audio1" controls></audio>

Audio 12 JavaScript meglévő elem manipulálása HTMLAudioElement Elérve az elemet rengeteg tulajdonsága van Főbb metódusok: play(), pause() <audio src="horn3.wav" id="audio1"></audio> $('audio1').play(); JavaScript új elem létrehozása var a = document.createelement('audio'); a.src = 'horn3.wav'; //... a.play();

Video 13 Videóállományok lejátszása HTML <video> tag Sokféle formátum Sokféle tulajdonság JavaScript HTMLVideoElement Audiohoz teljesen hasonló programozás

Canvas 14 Böngészők grafikus lehetőségei CSS Képek SVG (vektorgrafika) Canvas (raszteres grafika) HTML5: <canvas> elem Raszteres grafika natív támogatása + JavaScript API

Canvas 15 HTML <canvas> elem szélesség magasság záró elem </canvas> ha nincs támogatás <canvas id="canvas" width="200" height="200"></canvas> <canvas id="canvas" width="200" height="200"> Ez akkor jelenik meg, ha nincs canvas támogatás szöveg, kép, stb. </canvas>

Canvas 16 JavaScript: rajzolói környezet kiválasztása 2d 3d (webgl, opengl) var canvas = document.getelementbyid('canvas'); var ctx = canvas.getcontext('2d'); Támogatás ellenőrzése var canvas = document.getelementbyid('canvas'); if (canvas.getcontext){ var ctx = canvas.getcontext('2d'); //rajzolás else { //nincs canvas támogatás

Canvas alakzatok Téglalap fillrect(x,y,width,height) strokerect(x,y,width,height) clearrect(x,y,width,height) Útvonalak beginpath() closepath() stroke() fill() Vonalak moveto(x, y) lineto(x, y) Ívek arc(x, y, radius, startangle, endangle, anticlockwise) Bezier-görbék quadraticcurveto(cp1x, cp1y, x, y) beziercurveto(cp1x, cp1y, cp2x, cp2y, x, y)

Példa 18 //Téglalap rajzolása ctx.fillrect(60, 50, 30, 30); //Szövegbuborék rajzolása ctx.beginpath(); ctx.moveto(75,25); ctx.quadraticcurveto(25,25,25,62.5); ctx.quadraticcurveto(25,100,50,100); ctx.quadraticcurveto(50,120,30,125); ctx.quadraticcurveto(60,120,65,100); ctx.quadraticcurveto(125,100,125,62.5); ctx.quadraticcurveto(125,25,75,25); ctx.stroke();

Canvas - Képek Forrás meglévő kép felhasználása: <img> memóriabeli kép: var img=document.createelement('img'); másik canvas Műveletek drawimage(image, x, y) drawimage(image, x, y, width, height) drawimage(image, sx, sy, swidth, sheight, dx, dy, dwidth, dheight)

Canvas stílusok és színek fillstyle = color strokestyle = color ctx.fillstyle = "orange"; ctx.fillstyle = "#FFA500"; ctx.fillstyle = "rgb(255,165,0)"; ctx.fillstyle = "rgba(255,165,0,1)"; globalalpha = transparency value Vonalstílusok Gradiensek Mintázatok Árnyékolás

Canvas - Transzformációk Állapotkezelés save() restore() Transzformációk translate(x, y) rotate(angle) scale(x, y) transform(m11, m12, m21, m22, dx, dy)

Canvas Egyesítés és vágás Egyesítés globalcompositeoperation = type Vágás útvonal clip()

Canvas animációk Lépések canvas törlése állapotmentés rajzolás állapot visszaállítása setinterval(animateshape,500); settimeout(animateshape,500); requestanimationframe(animateshape)

Animáció HTML 24 <!doctype html> <html> <head> <title></title> <script type="text/javascript" src="sprite.js"></script> </head> <body> <canvas id="mycanvas" width="512" height="512"></canvas> <!-- <img src="sprite.png"> --> <div id="fps"></div> </body> </html>

25 window.addeventlistener('load', init, false); function init() { canvas = document.getelementbyid('mycanvas'); ctx = canvas.getcontext("2d"); img = new Image(); img.src = 'sprite.png'; img.addeventlistener('load', loaded, false); var canvas; var ctx; var img; function loaded() { draw(); function draw() { ctx.fillstyle = '#000000'; ctx.fillrect(0, 0, canvas.width, canvas.height); ctx.drawimage(img, 0, 0); ctx.drawimage(img, 0, 0, 127, 127, canvas.width / 2-32, canvas.height / 2-32, 64, 64);

Játékciklus 26 window.requestanimframe = (function() { return window.requestanimationframe window.webkitrequestanimationframe window.mozrequestanimationframe window.orequestanimationframe window.msrequestanimationframe function(callback) { window.settimeout(callback, 1000 / 60); ; )(); function loaded() { mainloop(); var mainloop = function() { requestanimframe(mainloop); update(); draw(); ;

Játékciklus var fr = 0; 27 var starttime = new Date(); var frame = 0; var numberofframes = 16; function update() { //FPS fr++; document.getelementbyid('fps').innerhtml = Math.floor(fr * 1000 / (new Date() - starttime)); //Frame frame = (frame + 1) % numberofframes; function draw() { ctx.fillstyle = '#000000'; ctx.fillrect(0, 0, canvas.width, canvas.height); ctx.drawimage(img, (frame % 4) * 128, Math.floor(frame / 4) * 128, 127, 127, canvas.width / 2-64, canvas.height / 2-64, 128, 128);

Idő alapú animáció 28 var frame = 0; var numberofframes = 16; var lasttime = Date.now(); var cumdelta = 0; var msperframe = 30; function update() { //FPS //... //frame var most = Date.now(); var delta = most - lasttime; if (cumdelta + delta > msperframe) { cumdelta = 0; frame = (frame + 1) % numberofframes; else { cumdelta += delta; lasttime = most;

Mozgás 29 var x = 0; var vx = 150; var irany = 1; function update() { //... if (x > canvas.width - 64) { irany = -1; else if (x < 0) { irany = 1; x += vx * irany * delta / 1000; function draw() { //... ctx.save(); ctx.translate(x + 32, 200 + 32); ctx.scale(0.5 * irany, 0.5); ctx.drawimage(img, (frame % 4) * 128, Math.floor(frame / 4) * 128, 127, 127, -32, -32, 128, 128); ctx.restore();

Canvas 3D 30 WebGL https://github.com/webglsamples/webglsampl es.github.io var gl = document.getelementbyid("canvas").getcontext("experimentalwebgl"); gl.viewport(0, 0, canvas.width, canvas.height); //...

Inline SVG 31 <html> <svg width="300px" height="300px"> <defs> <lineargradient id="mygradient" x1="0%" y1="100%" x2="100%" y2="0%"> <stop offset="5%" stop-color="red"></stop> <stop offset="95%" stop-color="blue" stop-opacity="0.5"></stop> </lineargradient> </defs> <circle id="mycircle" class="important" cx="50%" cy="50%" r="100" fill="url(#mygradient)" onmousedown="alert('hello');"/> </svg> </html>

32 További HTML5 API-k

Web workers 33 Valódi többszálúság Kommunikáció: üzenetek/események //főszál var worker = new Worker('masik.js'); worker.onmessage = function(e) { console.log(e.data); ; worker.postmessage( valami'); //masik.js self.onmessage = function(e) { self.postmessage("kapott adat: " + e.data); ;

Drag and drop 34 Vonszolható objektum: draggable="true dragstart, dragenter, dragover, drop, stb. események event.datatransfer setdata setdragimage effectallowed dropeffect http://html5demos.com/drag

További HTML 5 JavaScript API 35 Média Fullscreen Offline alkalmazások Application Cache window online/offline eseményei navigator.online Contenteditable Web sockets, Server Sent Events Geolocation File API (desktop), Filesystem History pushstate

36 Kivételkezelés

Hibák 37 Error EvalError RangeError ReferenceError SyntaxError TypeError URIError Tulajdonságok name message

Hibakezelés 38 try-catch-finally try: védendő kód catch: hibakezelő kód finally: a végén lefutó kód (nem kötelező) try { alma.kukacos = true; catch (e) { console.log(e.name); //ReferenceError console.log(e.message); //alma is not defined finally { //Elhagyható console.log('végem van...');

Hiba dobása 39 Beépített hiba dobása if (typeof a!== 'number') { throw new Error('Nem szam a parameter!');

Hiba dobása 40 Saját hiba dobása vagy if (oszto == 0) { throw { name: 'DivisionByZeroError', message: 'Az oszto nulla!' ; function DivisionByZeroError(message) { this.name = "DivisionByZeroError"; this.message = message; //... if (oszto == 0) { throw new DivisionByZeroError('Az oszto nulla!');

41 Kódszervezés

Kódszervezés 42 Sok függvény keletkezik a megoldás során Csoportosítás megjegyzésekkel logikai fizikai

Megjegyzések 43 //Segédfüggvények function $(id) { return document.getelementbyid(id); //Feldolgozó függvények function nevboludvozles(nev) { return 'Hello ' + nev + '!'; //Eseménykezelő függvények function hello() { var nev = $('nev').value; var udvozles = nevboludvozles(nev); $('kimenet').innerhtml = udvozles; function init() { //Eseménykezelők regisztrálása $('gomb').addeventlistener('click', hello, false); window.addeventlistener('load', init, false);

Logikai csoportosítás névterek 44 Névtér Objektumok hello.nevboludvozles(nev); hello = { nevboludvozles: function(nev) { /*...*/, hello: function() { /*...*/, init: function() { /*...*/ ;

45 Logikai csoportosítás névterek //Segédfüggvények var function $(id) { return documengetelementbyid(id); hello = {; //Feldolgozó függvények hello.nevboludvozles = function(nev) { return 'Hello ' + nev + '!'; //Eseménykezelő függvények hello.hello = function() { var nev = $('nev').value; var udvozles = hello.nevboludvozles(nev); $('kimenet').innerhtml = udvozles; //Belépési pont hello.init = function() { //Eseménykezelők regisztrálása $('gomb').addeventlistener('click', hello.hello, false); window.addeventlistener('load', hello.init, false);

Fizikai csoportosítás 46 Több névtér esetén Logikai csoportonként fájl hello.js

47 Evolúció var szam = 0; function novel() { szam++; var jatek = { szam: 0, novel: function() { this.szam++;, init: function () { this.szam = 0; jatek.init(); var jatek = (function () { var szam = 0; function novel() { szam++; return { novel: novel )(); var jatek = { create: function () { var szam = 0; function novel() { szam++; return { novel: novel ; var jatek1 = jatek.create();

48 Esettanulmány

Grafilogika 49 http://webprogramozas.inf.elte.hu/gyak/js_grafilo gika.html Feladat elemzése HTML szükséglet Adatszükséglet Pálya leírása mátrix (abra.js) Pálya működtetése mátrix kiíró függvények feldolgozó függvények eseménykezelő függvények