2012年4月24日 星期二

HTML5新嘗試 -- canvas標籤(2)

這篇是canvas初步實做,前文介紹詳見HTML5新嘗試 -- canvas標籤(1)

在下面,我將用<!DOCTYPE>宣告一個HTML5網頁,裡面包含簡單的html, head, body標籤,head中import進HTML5的框架之一modernizr-1.6.min.js檔案(按此下載),這是必須的,並且在body中放入一個簡單的canvas標籤。然而為免沒有支援HTML5 canvas的瀏覽器(例如你猜的到的:IE5前後版本)會看到一無所有的網頁造成使用者有困惑,在canvas標籤之間放入一串文字"Your browser cannot support the canvas!"。

是啊,雖然我們不能控制瀏覽器版本,但我們可以控制網頁使用者XD

<!DOCTYPE html>
<html lang = "zh-TW">
 <head>
  <meta charset = "BIG5">
  <title></title>
  <script src = "modernizr-1.6.min.js"></script>
  <style>
   #c1{width:500px; height:300px; border:solid 1px red;}
   div{position:absolute; top:50px; left:50px; border:solid 1px green;}
  </style>
 </head>
 <body>
 <div>
  <canvas id="c1">Your browser cannot support the canvas!</canvas>
 </div>
 </body>
</html>

在此我只放入了簡單的css樣式來凸顯我們現在的canvas圖紙範圍,待會的javascript畫圖動作都只能在其中完成。
紅框中為圖紙範圍

準備好了,現在我把畫圖的動作放進另一個hi.js檔中import進入我們的網頁。
<!DOCTYPE html>
<html lang = "zh-TW">
 <head>
  <meta charset = "BIG5">
  <title></title>
  <script src = "modernizr-1.6.min.js"></script>
                //加入下面這一行,import我自己寫的javascript檔"hi.js"
                <script src = "hi.js"></script>
  <style>
   #c1{width:500px; height:300px; border:solid 1px red;}
   div{position:absolute; top:50px; left:50px; border:solid 1px green;}
  </style>
 </head>
 <body>
 <div>
  <canvas id="c1">Your browser cannot support the canvas!</canvas>
 </div>
 </body>
</html>

而我的hi.js中寫了下面的內容
window.addEventListener("load", eventWindowLoaded, false);
var Debugger = function(){};
Debugger.log = function(message){
 try{
  console.log(message);
 }catch(exception){
  return;
 }
}
function eventWindowLoaded() {
 canvasApp();
}
function canvasSupport() {
 return Modernizr.canvas;
}
function canvasApp() {
 if(!canvasSupport()){
  return;
 }

 var theCanvas = document.getElementById("c1");
 var context = theCanvas.getContext("2d");
 Debugger.log("Drawing Canvas");
 function drawScreen(){
  context.fillStyle = "#ffffaa";
  context.fillRect (0, 0, 500, 300);
  context.fillStyle = "#000000";
  context.font = "20px_sans";
  context.textBaseline = "top";
  context.fillText("hello, world", 195, 80);

  context.strokeStyle = "#000000";
  context.strokeRect (5, 5, 490, 290);

 }

 drawScreen();
}

現在來看看剛剛空白的網頁變成怎樣了。
給了他一個hello, world的字(其實是圖)在那兒
這個範例很簡單也很陽春,不過裡面已經包含了幾個主要的canvas中會使用的javascript,從modernizr-1.6.min.js中import進來的API可以讓我們很方便又優雅的用函數來畫畫,之後會再針對這幾個函數做簡單解釋。

Continue...

April 24th, 2012
shesee@Taipei

沒有留言:

張貼留言