notes_1(canvas)
来源:互联网 发布:mac命令行安装jdk 编辑:程序博客网 时间:2024/05/22 09:06
<canvas>
var context = canvas.getContext('2d');
- 绘制矩形:
fillRect(x,y,width,height)
实心的
strokeRect(x,y,width,height)
空心的
clearRect(x,y,width,height)
清除指定的矩形区域,使之完全透明 - 绘制复杂形状或路径:
beginPath()
开始新的路径
closePath()
闭合路径
fill() stroke()
填充,空心
moveTo()
lineTo()
arc(x,y,radius,startAngle,endAngle,anticlockwise)
弧 (顺时针false) - 绘制文本
strokeText(text,x,y)
fillText(text,x,y)
修改字体:
context.font = '10 pt Arial';
自定义画笔样式:
context.fillStyle = "red";
context.strokeStyle = ...;
- 绘制图像
drawImage(image,x,y,width,height)
dranImage(image,sourceX,sourceY,sourceWidth,sourceHeight,x,y,width,height)
从原图片切割一个矩形区域 在(x,y)处绘制。 - 平移和旋转:
translate(x,y)
坐标系的原点平移到(x,y)
rotate(angle)
以原点为中心顺时针旋转坐标系
scale(x,y)
Tip: 可以在操作前用save()方法保存当前状态,完毕后restore()返回至上一状态。
<audio>
audio格式:MP3、WAV、OGG
canPlayType() 方法检测浏览器支持。注意该函数返回的是: “”, “maybe”或者”probably”。
检测音频支持:
var audio = document.createElement('audio'); var mp3Support, oggSupport; if (audio.canPlayType) { mp3Support = "" != audio.canPlayType('audio/mpeg'); oggSupport = "" != audio.canPlayType('audio/ogg; codecs="vorbis"'); } else { mp3Support = false; oggSupport = false; } var soundFileExtn = oggSupport?".ogg":mp3Support?"mp3":undefined; if(soundFileExtn) { var sound = new Audio(); sound.src = "somemusic" + soundFileExtn; sound.play(); }
音频文件加载完成后,audio对象触发canplaythrough事件。可以利用追踪。
if(soundFileExtn) { var sound = new Audio(); sound.addEventListener('canplaythrouth', function () { alert('loaded'); sound.play(); }); sound.src = "somemusic" + soundFileExtn; }
精灵图 Sprite Sheet
context.drawImage(this.spriteImage, this.imageWidth*(imageNumber), 0, this.imageWidth, this.imageHeight, x, y,this.imageWidth, this.imageHeight)
动画
典型的动画和绘图循环:
function animationloop () { //遍历游戏物体并更新位置}function drawingloop () { //1 擦除 canvas //2 遍历所有物体 //3 绘制每个物体}
时间函数: setInterval(functionName, timeInterval)
每隔一个时间间隔就调用一次函数。 clearInterval()
setTimeout(functionName, timeInterval)
在给定时间间隔后,调用函数一次。 clearTimeout()
使用requestAnimationFrame:
(function() { var lastTime = 0; var vendors = ['ms', 'moz', 'webkit', 'o']; for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame']; window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame']; } if (!window.requestAnimationFrame) window.requestAnimationFrame = function(callback, element) { var currTime = new Date().getTime(); var timeToCall = Math.max(0, 16 - (currTime - lastTime)); var id = window.setTimeout(function() { callback(currTime + timeToCall); }, timeToCall); lastTime = currTime + timeToCall; return id; }; if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function(id) { clearTimeout(id); };}());
使用requestAnimationFrame调用绘图循环:
function drawingLoop (nowTime) { var gameLoop = requestAnimationFrame(drawingLoop); //清空canvas //遍历所有物体 //画出它们}
要停止动画:
cancelAnimationFrame(gameLoop);
0 0
- notes_1(canvas)
- [Text_Mining]notes_1
- Canvas
- Canvas
- canvas
- Canvas
- Canvas
- canvas
- Canvas
- canvas
- Canvas
- Canvas
- canvas
- canvas
- Canvas
- canvas
- canvas
- Canvas
- TCP协议
- stm32 HardFault_Handler调试及问题查找方法
- 用HTML5 canvas制作简单游戏
- [知其然不知其所以然-12] intel_pstate忘记对cpu区别对待导致的问题
- 树链剖分+线段树 poj3237 Tree
- notes_1(canvas)
- VMware Workstation VT-x禁用问题
- 禁用浏览器右键
- MAC OS上使用OpenGL遇到的大坑
- 线性分类器中的不均衡问题
- 欢迎使用CSDN-markdown编辑器
- ListView下拉刷新&上拉加载
- OpenGL ES 学习教程(六) 使用开源库 Assimp 将 Obj 模型 转换成自己的格式
- 移植Linux4.x到tiny4412开发板记录