SlideShare a Scribd company logo
Short	
  intro	
  to	
  HTML5	
  

            Jussi	
  Pohjolainen	
  
Tampere	
  University	
  of	
  Applied	
  Sciences	
  
Intro to HTML5
Intro to HTML5
Intro to HTML5
Intro to HTML5
HTML5	
  
•  Fi#h	
  version	
  of	
  HTML	
  standard	
  by	
  W3C	
  
•  SCll	
  under	
  development	
  but	
  lot	
  of	
  browsers	
  
   support	
  the	
  proposal	
  of	
  the	
  standard	
  
•  Simple	
  markup	
  that	
  can	
  be	
  wriFen	
  either	
  in	
  
   HTML	
  or	
  XHTML	
  syntax	
  
•  PotenCal	
  candidate	
  for	
  cross	
  pla0orm	
  mobile	
  
   apps	
  
HTML5	
  
•  "Replacement	
  for	
  Flash"	
  
    –  See	
  comparison:	
  	
  
        •  hFp://en.wikipedia.org/wiki/
           Comparison_of_HTML5_and_Flash	
  
•  HTML5	
  must	
  be	
  supplemented	
  with	
  other	
  
   technologies	
  like	
  CSS3	
  and	
  JS	
  
    –  HTML5	
  recommendaCon	
  specifies	
  html	
  markup	
  and	
  
       APIs	
  for	
  that	
  can	
  be	
  used	
  with	
  JS	
  
•  Plan	
  is	
  to	
  have	
  HTML5	
  recommendaCon	
  by	
  the	
  
   end	
  of	
  2014	
  
HTML5	
  vs	
  XHTML5	
  
•  XHTML5	
  is	
  XML	
  serializaCon	
  of	
  HTML5	
  
    –  internet	
  media	
  type:	
  applica&on/xhtml+xml	
  or	
  applica&on/
       xml	
  
    –  <!DOCTYPE	
  html>	
  
•  HTML5	
  
    –  <!DOCTYPE	
  html>	
  opConal	
  
•  HTML5	
  uses	
  polyglot	
  markup	
  
    –  valid	
  HTML	
  document	
  and	
  well-­‐formed	
  XML	
  document	
  
    –  Certain	
  elements	
  are	
  wriFen	
  using	
  minimized	
  tag	
  <br/>	
  
    –  And	
  certain	
  not:	
  <p></p>	
  
    –  hFp://dev.w3.org/html5/html-­‐xhtml-­‐author-­‐guide/html-­‐
       xhtml-­‐authoring-­‐guide.html#empty-­‐elements	
  
Minimal	
  HTML5	
  document	
  
<!-- XML declaration is required -->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>
    </title>
    <!-- UTF-8 is recommended -->
    <meta charset="UTF-8" />
  </head>

  <body>
    <svg xmlns="http://www.w3.org/2000/svg">
      <rect stroke="black" fill="blue" x="45px" y="45px" width="200px"
height="100px" stroke-width="2" />
    </svg>
  </body>
</html>
What	
  is	
  New?	
  
•  New	
  elements,	
  aFributes	
  
    –  SemanCc	
  elements,	
  HTML5	
  Forms	
  
•  Video	
  and	
  audio	
  
    –  Lot	
  easier	
  to	
  show	
  <video>	
  and	
  <audio>	
  
•  2D/3D	
  Graphics	
  
    –  <canvas>	
  -­‐	
  element,	
  inline	
  SVG,	
  CSS	
  2D/3D	
  
•  New	
  APIs	
  
    –  Data	
  storage,	
  SQL	
  Database,	
  JS	
  workers	
  
Video	
  
<video width="320" height="240" controls="controls">
   <source src="scroll_indicator.mp4" type="video/mp4">
   <source src="scroll_indicator.ogg" type="video/ogg">
   Your browser does not support the video tag.
 </video>
SemanCc	
  Elements	
  
•  Before	
  
   –  <div	
  id="header">..</div>	
  
•  Now	
  
   –  <secCon>,	
  <arCcle>,	
  <header>,	
  <nav>	
  
Exercise	
  
•  Implement	
  HTML5	
  document	
  and	
  use	
  the	
  new	
  
   features:	
  
    –  header,	
  footer,	
  video,	
  arCcle,	
  secCon,	
  hgroup,	
  
       aside,	
  figure,	
  figcapCon,	
  Cme,	
  mark,	
  wbr,	
  	
  
•  See:	
  
    –  hFp://www.html-­‐5-­‐tutorial.com/	
  
APIs	
  
•  APIs	
  and	
  DOM	
  is	
  fundamental	
  part	
  of	
  the	
  
   specificaCon	
  
•  APIs	
  
    –  Offline	
  Web	
  apps	
  
    –  Drag	
  and	
  drop	
  
    –  GeolocaCon	
  
    –  Web	
  SQL	
  database	
  
    –  …	
  
GeolocaCon	
  API	
  
•  GeolocaCon	
  API	
  SpecificaCon	
  
    –  hFp://dev.w3.org/geo/api/spec-­‐source.html	
  
•  To	
  detect	
  the	
  locaCon	
  of	
  the	
  client	
  
•  In	
  mobile:	
  GPS,	
  in	
  desktop	
  IP-­‐address	
  or	
  Wi-­‐Fi	
  
   locaCon	
  
Browser	
  Support	
  
•    IE9	
  
•    Firefox	
  3.5	
  
•    Chrome	
  5	
  
•    Opera	
  10.6	
  
•    Safari	
  5	
  
•    iPhone	
  3	
  
•    Android	
  2	
  
•    WP	
  7.5	
  
function setText(val, e) {
    document.getElementById(e).value = val;
}

function insertText(val, e) {
    document.getElementById(e).value += val;
}

var nav = null;

function requestPosition() {
  if (nav == null) {
      nav = window.navigator;
  }
  if (nav != null) {
      var geoloc = nav.geolocation;
      if (geoloc != null) {
          geoloc.getCurrentPosition(successCallback);
      }
      else {
          alert("geolocation not supported");
      }
  }
  else {
      alert("Navigator not found");
  }
}

function successCallback(position)
{
   alert("" + position.coords.latitude + ", " + position.coords.longitude);
}
Showing	
  Map	
  on	
  Google	
  API	
  
•  hFp://maps.googleapis.com/maps/api/
   staCcmap?
   center=<laCtude>,<longitude>&zoom=10&siz
   e=200x200&maptype=roadmap	
  

•  See:	
  	
  
     –  hFps://developers.google.com/maps/
        documentaCon/staCcmaps/	
  
Wunderground	
  +	
  GeolocaCon	
  +	
  
           Google	
  staCc	
  map	
  
•  Wunderground	
  provides	
  JSON	
  API	
  for	
  weather	
  
   informaCon	
  
•  Get	
  locaCon	
  of	
  the	
  browser	
  and	
  AJAX	
  request	
  
   to	
  wunderground	
  
•  Aqer	
  receiving	
  the	
  result,	
  parse	
  it	
  and	
  show	
  
   results	
  in	
  html.	
  
•  Problem:	
  AJAX	
  does	
  not	
  work	
  cross	
  site..	
  You	
  
   can	
  implement	
  middleware	
  (PHP)	
  
Mobile	
  App	
  (iPhone)	
  



                          Web	
  app!	
  
Mobile	
  App	
  (iPhone)	
  
Canvas	
  
•  “The	
  canvas	
  element	
  a	
  resolu&on-­‐dependent	
  
   bitmap	
  canvas,	
  which	
  can	
  be	
  used	
  for	
  
   dynamically	
  rendering	
  of	
  images	
  such	
  as	
  game	
  
   graphics,	
  graphs,	
  or	
  other	
  images”	
  
•  Image	
  is	
  drawn	
  in	
  JavaScript	
  using	
  typical	
  vector	
  
   graphics	
  drawing	
  primiCves	
  
    –  drawImage(),	
  lineTo(),	
  arcTo(),	
  bezierCurveTo(),	
  
       fillRect(),	
  scale(),	
  rotate(),	
  translate(),	
  
       createLinearGradient(),	
  shadowBlur(),	
  …	
  
       	
  
Simple	
  Drawing	
  using	
  Canvas	
  and	
  JS	
  
<canvas id="mycanvas" width="200" height="200">
</canvas>
<script>
var canvas= document.getElementById('mycanvas');
var context = canvas.getContext('2d');
context.fillRect(60,30,80,120);
</script>
PossibiliCes	
  
•      Simple	
  shapes	
  (Rectangles)	
  
•      Complex	
  shapes	
  (Paths)	
  	
  
•      Lines	
  
•      Shadows	
  
•      Text	
  
•      Images	
  
•      Pixel	
  manipulaCon	
  
•      Colors	
  and	
  styles	
  
•      ComposiCng	
  
•      TransformaCons	
  
•      Canvas	
  state	
  
	
  
ImplemenCng	
  a	
  Game	
  
main	
  
function main() {
    createCanvas();

    // Original position
    reset();

    // Millisecs elapsed since 1970.
    then = Date.now();

    loadImages();

    setEventListeners();

    //The setInterval() method calls a function or evaluates an expression at
    //specified intervals (in milliseconds).
    setInterval(gameLoop, 1);
}

window.onload=function(){
    main();
}
Game	
  Objects	
  and	
  Global	
  Variables	
  
var   keysDown = {};
var   bgImage = null;
var   canvas = null;
var   ctx     = null;
var   then;
var   monstersCaught = 0;

// Game objects
var hero = {
     speed: 256,
     x: 0,
     y: 0,
     myImage: null
};

var monster = {
     x: 0,
     y: 0,
     myImage: null
};
Game	
  Loop	
  
function gameLoop () {
    var now = Date.now();
    var delta = now - then;

     update(delta / 1000);
     render();

     then = now;
};
Create	
  Canvas	
  
function createCanvas() {
    // Create canvas element
    canvas = document.createElement("canvas");

    // Get the canvas object that you can use to draw
    ctx = canvas.getContext("2d");

    // Set size for the canvas object
    canvas.width = 512;
    canvas.height = 480;

    document.getElementById("here").appendChild(canvas);
}
StarCng	
  point	
  
function reset() {
    hero.x = canvas.width / 2;
    hero.y = canvas.height / 2;

     // Throw the monster somewhere on the screen randomly
     monster.x = 32 + (Math.random() * (canvas.width - 64));
     monster.y = 32 + (Math.random() * (canvas.height - 64));
};
Load	
  Image	
  
function loadImage(imageSrc) {
    var image = new Image();
    image.src = imageSrc;
    return image;
}
function loadImages() {
    hero.myImage    = loadImage("lib/hero.png");
    monster.myImage = loadImage("lib/monster.png");
    bgImage         = loadImage("lib/background.jpg");
}
Key	
  Listeners	
  
function setEventListeners() {
    // If keydown, then add the key to the array and set it true
    addEventListener("keydown", function (e) {
        keysDown[e.keyCode] = true;
    }, false);

    // If keyup, remove it from the array
    addEventListener("keyup", function (e) {
        delete keysDown[e.keyCode];
    }, false);
}
Update	
  
function update (modifier) {
     if (38 in keysDown) { // Player holding   up
          hero.y -= hero.speed * modifier;
     }
     if (40 in keysDown) { // Player holding   down
          hero.y += hero.speed * modifier;
     }
     if (37 in keysDown) { // Player holding   left
          hero.x -= hero.speed * modifier;
     }
     if (39 in keysDown) { // Player holding   right
          hero.x += hero.speed * modifier;
     }

     // Are they touching?
     if (
          hero.x <= (monster.x + 32)
          && monster.x <= (hero.x + 32)
          && hero.y <= (monster.y + 32)
          && monster.y <= (hero.y + 32)
     ) {
          ++monstersCaught;
          reset();
     }
};
Render	
  
function render() {
    ctx.drawImage(bgImage, 0, 0);
    ctx.drawImage(hero.myImage, hero.x, hero.y);
    ctx.drawImage(monster.myImage, monster.x, monster.y);

     // Score
     ctx.fillStyle = "rgb(250, 250, 250)";
     ctx.font = "12px Helvetica";
     ctx.textAlign = "left";
     ctx.textBaseline = "top";
     ctx.fillText("FB Monsters caught: " + monstersCaught, 20, 20);
};

More Related Content

PDF
Yearning jQuery
PDF
How to build a html5 websites.v1
PDF
Is HTML5 Ready? (workshop)
PDF
Google's HTML5 Work: what's next?
PDF
HTML5: where flash isn't needed anymore
PDF
JavaScript 1.5 to 2.0 (TomTom)
PDF
I Can't Believe It's Not Flash
PDF
Processing and Processing.js
Yearning jQuery
How to build a html5 websites.v1
Is HTML5 Ready? (workshop)
Google's HTML5 Work: what's next?
HTML5: where flash isn't needed anymore
JavaScript 1.5 to 2.0 (TomTom)
I Can't Believe It's Not Flash
Processing and Processing.js

What's hot (20)

PDF
jQuery (BostonPHP)
PPTX
Progressive What Apps?
PDF
Browsers with Wings
PPTX
Vue.js + Django - configuración para desarrollo con webpack y HMR
PDF
JavaScript & HTML5 - Brave New World
PPTX
IndexedDB - Querying and Performance
PDF
HTML5 JavaScript APIs
PDF
jQuery (MeshU)
PDF
jQuery (DrupalCamp Toronto)
PDF
kissy-past-now-future
PPTX
KISSY 的昨天、今天与明天
PDF
HTML5 Canvas - The Future of Graphics on the Web
KEY
Jarv.us Showcase — SenchaCon 2011
PDF
codebits 2009 HTML5 JS APIs
PDF
YouDrup_in_Drupal
PDF
HTML5: friend or foe (to Flash)?
PDF
Reactive Type-safe WebComponents
PDF
Introducing Assetic: Asset Management for PHP 5.3
PDF
Developing for Plone using ArchGenXML / ArgoUML
PDF
前端MVC 豆瓣说
jQuery (BostonPHP)
Progressive What Apps?
Browsers with Wings
Vue.js + Django - configuración para desarrollo con webpack y HMR
JavaScript & HTML5 - Brave New World
IndexedDB - Querying and Performance
HTML5 JavaScript APIs
jQuery (MeshU)
jQuery (DrupalCamp Toronto)
kissy-past-now-future
KISSY 的昨天、今天与明天
HTML5 Canvas - The Future of Graphics on the Web
Jarv.us Showcase — SenchaCon 2011
codebits 2009 HTML5 JS APIs
YouDrup_in_Drupal
HTML5: friend or foe (to Flash)?
Reactive Type-safe WebComponents
Introducing Assetic: Asset Management for PHP 5.3
Developing for Plone using ArchGenXML / ArgoUML
前端MVC 豆瓣说
Ad

Viewers also liked (17)

PPTX
An Intro to HTML5 and CSS3
PPTX
Responsive Web Design
PDF
An Seo’s Intro to Web Dev, HTML, CSS and JavaScript
PPTX
Web Server - Internet Applications
PPTX
Internet, domain name, worldwideweb
ODP
Introduction of Html/css/js
PDF
Conferencia HTML5 y CSS3 por Alexandra García Milan
PPTX
Computer networks
PPTX
Web Front End - (HTML5, CSS3, JavaScript) ++
PPTX
Photo and photo
KEY
HTML CSS & Javascript
PPTX
Untangling spring week5
PPTX
Introduction to HTML5 & CSS3
PDF
An Introduction To HTML5
PPT
Web Servers (ppt)
PPT
Html JavaScript and CSS
PDF
Internet of Things
An Intro to HTML5 and CSS3
Responsive Web Design
An Seo’s Intro to Web Dev, HTML, CSS and JavaScript
Web Server - Internet Applications
Internet, domain name, worldwideweb
Introduction of Html/css/js
Conferencia HTML5 y CSS3 por Alexandra García Milan
Computer networks
Web Front End - (HTML5, CSS3, JavaScript) ++
Photo and photo
HTML CSS & Javascript
Untangling spring week5
Introduction to HTML5 & CSS3
An Introduction To HTML5
Web Servers (ppt)
Html JavaScript and CSS
Internet of Things
Ad

Similar to Intro to HTML5 (20)

PPTX
HTML5 - Chances and Pitfalls (Bytro Labs GmbH)
PDF
Building a Better Web with HTML5 and CSS3
PDF
A More Flash Like Web?
PPTX
DV10 HTML5: The Future of Web Development
PPTX
HTML5 for Rich User Experience
PPTX
HTML5: An Overview
PPTX
PDF
W3C HTML5 KIG-The complete guide to building html5 games
PPTX
Html5 (games)
PDF
HTML5 and Beyond
PDF
Game Development Using HTML 5
PPTX
HTML5: The Future of Web Development with IE9, IE10 and Windows 8
PDF
Jsf2 html5-jazoon
PPT
HTML5 Canvas
PDF
HTML5: An Introduction To Next Generation Web Development
PPTX
Html5 Game Development with Canvas
PDF
Building a game engine with jQuery
PPTX
HTML5 Programming
PDF
HTML5/CSS3 and Future Web in Mobile and IPTV
PDF
Desingning reusable web components
HTML5 - Chances and Pitfalls (Bytro Labs GmbH)
Building a Better Web with HTML5 and CSS3
A More Flash Like Web?
DV10 HTML5: The Future of Web Development
HTML5 for Rich User Experience
HTML5: An Overview
W3C HTML5 KIG-The complete guide to building html5 games
Html5 (games)
HTML5 and Beyond
Game Development Using HTML 5
HTML5: The Future of Web Development with IE9, IE10 and Windows 8
Jsf2 html5-jazoon
HTML5 Canvas
HTML5: An Introduction To Next Generation Web Development
Html5 Game Development with Canvas
Building a game engine with jQuery
HTML5 Programming
HTML5/CSS3 and Future Web in Mobile and IPTV
Desingning reusable web components

More from Jussi Pohjolainen (20)

PDF
Moved to Speakerdeck
PDF
Java Web Services
PDF
Box2D and libGDX
PDF
libGDX: Screens, Fonts and Preferences
PDF
libGDX: Tiled Maps
PDF
libGDX: User Input and Frame by Frame Animation
PDF
Intro to Building Android Games using libGDX
PDF
Advanced JavaScript Development
PDF
Introduction to JavaScript
PDF
Introduction to AngularJS
PDF
libGDX: Scene2D
PDF
libGDX: Simple Frame Animation
PDF
libGDX: Simple Frame Animation
PDF
libGDX: User Input
PDF
Implementing a Simple Game using libGDX
PDF
Building Android games using LibGDX
PDF
Android Threading
PDF
Creating Asha Games: Game Pausing, Orientation, Sensors and Gestures
PDF
Creating Games for Asha - platform
PDF
Intro to Asha UI
Moved to Speakerdeck
Java Web Services
Box2D and libGDX
libGDX: Screens, Fonts and Preferences
libGDX: Tiled Maps
libGDX: User Input and Frame by Frame Animation
Intro to Building Android Games using libGDX
Advanced JavaScript Development
Introduction to JavaScript
Introduction to AngularJS
libGDX: Scene2D
libGDX: Simple Frame Animation
libGDX: Simple Frame Animation
libGDX: User Input
Implementing a Simple Game using libGDX
Building Android games using LibGDX
Android Threading
Creating Asha Games: Game Pausing, Orientation, Sensors and Gestures
Creating Games for Asha - platform
Intro to Asha UI

Recently uploaded (20)

PDF
The Digital Culture Challenge; Bridging the Employee-Leadership Disconnect
PDF
Lecture 3 - Risk Management and Compliance.pdf
PDF
WRN_Investor_Presentation_August 2025.pdf
PPTX
How to best Address your professional Training Program - August 2025.pptx
PDF
MaiBaoPak--One-Stop Sustainable Packaging Solutions..pdf
PDF
HOT DAY CAFE , Café Royale isn’t just another coffee shop
PPTX
Nagarajan Seyyadurai – Visionary Leadership at WS Industries.pptx
PPTX
Creating the Ultimate SOP Manual: Streamline, Standardize, and Scale
PDF
20250805_A. Stotz All Weather Strategy - Performance review July 2025.pdf
PDF
Minnesota’s New Lane-Sharing Law for Motorcycles.pdf
PPTX
Presentation model for business presentations
PDF
How to Value Virtual Machines and other IP Stuff.pdf
PDF
Running a Private Studio.pdfgvgvhghbjbjbjbjb
PDF
KornFerry Presentation hbkjbkjbk bjkbkbk.pdf
PPTX
Untitled presentation (2).quiz presention
PPTX
BUSINESS FINANCE POWER POINT PRESENTATION
PDF
Traveri Digital Marketing Seminar 2025 by Corey and Jessica Perlman
PDF
Employnova Global Services : Outsourcing
PDF
Keppel Ltd. 1H 2025 Results Presentation Slides
PPTX
BIS-Certification-for-CCTV-Recorders ppt.pptx
The Digital Culture Challenge; Bridging the Employee-Leadership Disconnect
Lecture 3 - Risk Management and Compliance.pdf
WRN_Investor_Presentation_August 2025.pdf
How to best Address your professional Training Program - August 2025.pptx
MaiBaoPak--One-Stop Sustainable Packaging Solutions..pdf
HOT DAY CAFE , Café Royale isn’t just another coffee shop
Nagarajan Seyyadurai – Visionary Leadership at WS Industries.pptx
Creating the Ultimate SOP Manual: Streamline, Standardize, and Scale
20250805_A. Stotz All Weather Strategy - Performance review July 2025.pdf
Minnesota’s New Lane-Sharing Law for Motorcycles.pdf
Presentation model for business presentations
How to Value Virtual Machines and other IP Stuff.pdf
Running a Private Studio.pdfgvgvhghbjbjbjbjb
KornFerry Presentation hbkjbkjbk bjkbkbk.pdf
Untitled presentation (2).quiz presention
BUSINESS FINANCE POWER POINT PRESENTATION
Traveri Digital Marketing Seminar 2025 by Corey and Jessica Perlman
Employnova Global Services : Outsourcing
Keppel Ltd. 1H 2025 Results Presentation Slides
BIS-Certification-for-CCTV-Recorders ppt.pptx

Intro to HTML5

  • 1. Short  intro  to  HTML5   Jussi  Pohjolainen   Tampere  University  of  Applied  Sciences  
  • 6. HTML5   •  Fi#h  version  of  HTML  standard  by  W3C   •  SCll  under  development  but  lot  of  browsers   support  the  proposal  of  the  standard   •  Simple  markup  that  can  be  wriFen  either  in   HTML  or  XHTML  syntax   •  PotenCal  candidate  for  cross  pla0orm  mobile   apps  
  • 7. HTML5   •  "Replacement  for  Flash"   –  See  comparison:     •  hFp://en.wikipedia.org/wiki/ Comparison_of_HTML5_and_Flash   •  HTML5  must  be  supplemented  with  other   technologies  like  CSS3  and  JS   –  HTML5  recommendaCon  specifies  html  markup  and   APIs  for  that  can  be  used  with  JS   •  Plan  is  to  have  HTML5  recommendaCon  by  the   end  of  2014  
  • 8. HTML5  vs  XHTML5   •  XHTML5  is  XML  serializaCon  of  HTML5   –  internet  media  type:  applica&on/xhtml+xml  or  applica&on/ xml   –  <!DOCTYPE  html>   •  HTML5   –  <!DOCTYPE  html>  opConal   •  HTML5  uses  polyglot  markup   –  valid  HTML  document  and  well-­‐formed  XML  document   –  Certain  elements  are  wriFen  using  minimized  tag  <br/>   –  And  certain  not:  <p></p>   –  hFp://dev.w3.org/html5/html-­‐xhtml-­‐author-­‐guide/html-­‐ xhtml-­‐authoring-­‐guide.html#empty-­‐elements  
  • 9. Minimal  HTML5  document   <!-- XML declaration is required --> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> </title> <!-- UTF-8 is recommended --> <meta charset="UTF-8" /> </head> <body> <svg xmlns="http://www.w3.org/2000/svg"> <rect stroke="black" fill="blue" x="45px" y="45px" width="200px" height="100px" stroke-width="2" /> </svg> </body> </html>
  • 10. What  is  New?   •  New  elements,  aFributes   –  SemanCc  elements,  HTML5  Forms   •  Video  and  audio   –  Lot  easier  to  show  <video>  and  <audio>   •  2D/3D  Graphics   –  <canvas>  -­‐  element,  inline  SVG,  CSS  2D/3D   •  New  APIs   –  Data  storage,  SQL  Database,  JS  workers  
  • 11. Video   <video width="320" height="240" controls="controls"> <source src="scroll_indicator.mp4" type="video/mp4"> <source src="scroll_indicator.ogg" type="video/ogg"> Your browser does not support the video tag. </video>
  • 12. SemanCc  Elements   •  Before   –  <div  id="header">..</div>   •  Now   –  <secCon>,  <arCcle>,  <header>,  <nav>  
  • 13. Exercise   •  Implement  HTML5  document  and  use  the  new   features:   –  header,  footer,  video,  arCcle,  secCon,  hgroup,   aside,  figure,  figcapCon,  Cme,  mark,  wbr,     •  See:   –  hFp://www.html-­‐5-­‐tutorial.com/  
  • 14. APIs   •  APIs  and  DOM  is  fundamental  part  of  the   specificaCon   •  APIs   –  Offline  Web  apps   –  Drag  and  drop   –  GeolocaCon   –  Web  SQL  database   –  …  
  • 15. GeolocaCon  API   •  GeolocaCon  API  SpecificaCon   –  hFp://dev.w3.org/geo/api/spec-­‐source.html   •  To  detect  the  locaCon  of  the  client   •  In  mobile:  GPS,  in  desktop  IP-­‐address  or  Wi-­‐Fi   locaCon  
  • 16. Browser  Support   •  IE9   •  Firefox  3.5   •  Chrome  5   •  Opera  10.6   •  Safari  5   •  iPhone  3   •  Android  2   •  WP  7.5  
  • 17. function setText(val, e) { document.getElementById(e).value = val; } function insertText(val, e) { document.getElementById(e).value += val; } var nav = null; function requestPosition() { if (nav == null) { nav = window.navigator; } if (nav != null) { var geoloc = nav.geolocation; if (geoloc != null) { geoloc.getCurrentPosition(successCallback); } else { alert("geolocation not supported"); } } else { alert("Navigator not found"); } } function successCallback(position) { alert("" + position.coords.latitude + ", " + position.coords.longitude); }
  • 18. Showing  Map  on  Google  API   •  hFp://maps.googleapis.com/maps/api/ staCcmap? center=<laCtude>,<longitude>&zoom=10&siz e=200x200&maptype=roadmap   •  See:     –  hFps://developers.google.com/maps/ documentaCon/staCcmaps/  
  • 19. Wunderground  +  GeolocaCon  +   Google  staCc  map   •  Wunderground  provides  JSON  API  for  weather   informaCon   •  Get  locaCon  of  the  browser  and  AJAX  request   to  wunderground   •  Aqer  receiving  the  result,  parse  it  and  show   results  in  html.   •  Problem:  AJAX  does  not  work  cross  site..  You   can  implement  middleware  (PHP)  
  • 20. Mobile  App  (iPhone)   Web  app!  
  • 22. Canvas   •  “The  canvas  element  a  resolu&on-­‐dependent   bitmap  canvas,  which  can  be  used  for   dynamically  rendering  of  images  such  as  game   graphics,  graphs,  or  other  images”   •  Image  is  drawn  in  JavaScript  using  typical  vector   graphics  drawing  primiCves   –  drawImage(),  lineTo(),  arcTo(),  bezierCurveTo(),   fillRect(),  scale(),  rotate(),  translate(),   createLinearGradient(),  shadowBlur(),  …    
  • 23. Simple  Drawing  using  Canvas  and  JS   <canvas id="mycanvas" width="200" height="200"> </canvas> <script> var canvas= document.getElementById('mycanvas'); var context = canvas.getContext('2d'); context.fillRect(60,30,80,120); </script>
  • 24. PossibiliCes   •  Simple  shapes  (Rectangles)   •  Complex  shapes  (Paths)     •  Lines   •  Shadows   •  Text   •  Images   •  Pixel  manipulaCon   •  Colors  and  styles   •  ComposiCng   •  TransformaCons   •  Canvas  state    
  • 26. main   function main() { createCanvas(); // Original position reset(); // Millisecs elapsed since 1970. then = Date.now(); loadImages(); setEventListeners(); //The setInterval() method calls a function or evaluates an expression at //specified intervals (in milliseconds). setInterval(gameLoop, 1); } window.onload=function(){ main(); }
  • 27. Game  Objects  and  Global  Variables   var keysDown = {}; var bgImage = null; var canvas = null; var ctx = null; var then; var monstersCaught = 0; // Game objects var hero = { speed: 256, x: 0, y: 0, myImage: null }; var monster = { x: 0, y: 0, myImage: null };
  • 28. Game  Loop   function gameLoop () { var now = Date.now(); var delta = now - then; update(delta / 1000); render(); then = now; };
  • 29. Create  Canvas   function createCanvas() { // Create canvas element canvas = document.createElement("canvas"); // Get the canvas object that you can use to draw ctx = canvas.getContext("2d"); // Set size for the canvas object canvas.width = 512; canvas.height = 480; document.getElementById("here").appendChild(canvas); }
  • 30. StarCng  point   function reset() { hero.x = canvas.width / 2; hero.y = canvas.height / 2; // Throw the monster somewhere on the screen randomly monster.x = 32 + (Math.random() * (canvas.width - 64)); monster.y = 32 + (Math.random() * (canvas.height - 64)); };
  • 31. Load  Image   function loadImage(imageSrc) { var image = new Image(); image.src = imageSrc; return image; } function loadImages() { hero.myImage = loadImage("lib/hero.png"); monster.myImage = loadImage("lib/monster.png"); bgImage = loadImage("lib/background.jpg"); }
  • 32. Key  Listeners   function setEventListeners() { // If keydown, then add the key to the array and set it true addEventListener("keydown", function (e) { keysDown[e.keyCode] = true; }, false); // If keyup, remove it from the array addEventListener("keyup", function (e) { delete keysDown[e.keyCode]; }, false); }
  • 33. Update   function update (modifier) { if (38 in keysDown) { // Player holding up hero.y -= hero.speed * modifier; } if (40 in keysDown) { // Player holding down hero.y += hero.speed * modifier; } if (37 in keysDown) { // Player holding left hero.x -= hero.speed * modifier; } if (39 in keysDown) { // Player holding right hero.x += hero.speed * modifier; } // Are they touching? if ( hero.x <= (monster.x + 32) && monster.x <= (hero.x + 32) && hero.y <= (monster.y + 32) && monster.y <= (hero.y + 32) ) { ++monstersCaught; reset(); } };
  • 34. Render   function render() { ctx.drawImage(bgImage, 0, 0); ctx.drawImage(hero.myImage, hero.x, hero.y); ctx.drawImage(monster.myImage, monster.x, monster.y); // Score ctx.fillStyle = "rgb(250, 250, 250)"; ctx.font = "12px Helvetica"; ctx.textAlign = "left"; ctx.textBaseline = "top"; ctx.fillText("FB Monsters caught: " + monstersCaught, 20, 20); };

Editor's Notes

  • #8: &lt;!DOCTYPE html&gt; &lt;html&gt;&lt;head&gt;&lt;title&gt;Geolocation API Example&lt;/title&gt;&lt;script type=&quot;text/javascript&quot;&gt;function setText(val, e) {document.getElementById(e).value = val;}function insertText(val, e) {document.getElementById(e).value += val;}varnav = null; function requestPosition() { if (nav == null) {nav = window.navigator; } if (nav != null) {vargeoloc = nav.geolocation; if (geoloc != null) {geoloc.getCurrentPosition(successCallback); } else { alert(&quot;geolocation not supported&quot;); } } else { alert(&quot;Navigator not found&quot;); }}function successCallback(position){ alert(&quot;&quot; + position.coords.latitude + &quot;, &quot; + position.coords.longitude);}&lt;/script&gt;&lt;/head&gt;&lt;body&gt;&lt;input type=&quot;button&quot; onclick=&quot;requestPosition()&quot; value=&quot;Get Latitude and Longitude&quot; /&gt; &lt;/body&gt;&lt;/html&gt;
  • #19: // If on sec has passed, modifier is 1. If 0.5 secs has // passed, modifier is 0.5. // Using modifier, hero moves same speed no matter how // fast the update is called..