日期:2014-05-16 浏览次数:20603 次
主要的内容描述的是如何渲染一个矩形的边框和填充背景,以及文字.
代码中有详细的注释:
效果图:
以下是代码:
<!DOCTYPE html> <html lang="cn"> <head> <title>猜数字游戏示例</title> <meta charset="gb2312"> <script type="text/javascript"> //@author 杨虹昌 //guess全局属性 GuessBean对象 var guess=null; var context=null;//2d全局上下文 //检查浏览器是否支持canvas属性 function canvasSupport(){ return !!document.createElement("canvas").getContext; } //dom加载完成后所执行的函数 function windowLoaded(){ canvasStart(); } //对日志对象的简单封装 var Debugger=(function(){ //输出日志信息 this.log=function(message){ try{ console.log(message); }catch(e){ } } return this; })(); // 定义游戏类实体 function GuessBean(){ this.today=null;//显示当前时间 this.guessNum=-1;//要猜的数字,初始为负数 this.pressNum=-1;//用户按下的数字,初始为负数代表是初始化状态 this.numGuessed;//用户已经猜过的数字 this.guesses=0;//记录用户猜过的次数 this.gameOver=false;//游戏是否已经结束 this.message="猜数字,数字从0-9.";//提示用户消息 this.hightOrLower=""; } //初始化游戏相关信息,并返回GuessBean对象 function initGame(){ Debugger.log("初始化游戏设置>>"); guess=new GuessBean(); guess.guessNum=Math.floor(Math.random()*10);//生成0-9的随机数 Debugger.log("此次生成的随机数:"+guess.guessNum); guess.today=new Date();//获取当前日期 guess.guesses=0;//初始化猜的次数为0 guess.gameOver=false; guess.hightOrLower=""; guess.numGuessed=[]; Debugger.log("绑定dom键盘按下事件."); //添加事件绑定 window.addEventListener("keyup",listenerKeyPressed,true); drawScreen();//执行渲染 } //canvas程序入口 function canvasStart(){ // 判断浏览器是否支持canvas if(!canvasSupport()){ return; } //获取dom文档中id属性为"theCanvas"的元canvas素 var theCanvas=document.getElementById("theCanvas"); //获取2d上下文,注意:此处的2d只能是小写,大写不能获取此对象 context=theCanvas.getContext("2d"); Debugger.log("开始渲染>>"); initGame(); } //完成屏幕渲染 function drawScreen(){ // context.fillStyle="#ffffaa"; //设置填充颜色 context.fillRect(0,0,500,300); //创建一个矩形 //围绕图像以及文本绘制一个非填充的小方块, context.strokeStyle="#000000"; //设置填充颜色 //绘制矩形边框,一下四个参数分别为: //第一和第二个参数:左上角x,y坐标 //第三和第四个参数:右下角x,y坐标 context.strokeRect(5,5,490,290); //设置字体大小和字号 context.textBaseline="top"; //设置字体的垂直对齐方式 //日期 context.fillStyle="#000000"; //设置填充颜色 context.font="12px 隶书"; //设置字体大小和类型 //参数: //第一个参数:渲染内容 //第二个参数:x轴 //第三个参数:y轴 context.fillText("时间:"+guess.today.toLocaleString(),20,10); // 消息 context.fillStyle="#ff0000"; //设置填充颜色 context.font="14px 隶书"; //设置字体大小和类型