为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

canvas游戏开发

2012-04-14 17页 ppt 290KB 25阅读

用户头像

is_776476

暂无简介

举报
canvas游戏开发nullnullCANVAS 游戏制作Make Presentation much more fun@WPS官方微博 @kingsoftwps杭州电子科技大学 王劲 06wj@163.comnullCANVAS 常用操作操纵像素 putImageData(),getImageData()绘制位图 drawImage()绘制矩形 clearRect(),fillRect()绘制复杂路径 beginPath(),closeP...
canvas游戏开发
nullnullCANVAS 游戏制作Make Presentation much more fun@WPS官方微博 @kingsoftwps杭州电子科技大学 王劲 06wj@163.comnullCANVAS 常用操作操纵像素 putImageData(),getImageData()绘制位图 drawImage()绘制矩形 clearRect(),fillRect()绘制复杂路径 beginPath(),closePath(),fill(),stroke()矩形转换 rotate(),scale(),translate(),transform()null游戏的基本 擦除背景画游戏物体1更新游戏数据 2处理键盘,鼠标事件 循 环nullSprite 图像精灵(x,y)heightwidthproperty:x,y,width,height,angle,scaleX,scaleY,alphanullMovieClip 影片剪辑time++frame++时间轴帧数property:x,y,width,height,frame,totalFrame,fpsnull物体de移动基本方式 :sprite.x += sprite.speedX; sprite.y += sprite.speedY;更进一步 : sprite.speedX += sprite.ax; sprite.x += sprite.speedX; sprite.speedY += sprite.ay; sprite.y += sprite.speedY; null向量来了function Vector(x, y) { this.x = x || 0; this.y = y || 0; }aba + baba - bnull向量来了位置,速度,加速度都可以用向量示xyava'a + v = a'null向量来了yxcir1cir2cir1 - cir2vv'null碰撞检测矩形碰撞 :function hitRect(x0,y0,w0,h0,x1,y1,w1,h1) { var w =Math.abs( x0 - (x1 + w1)); var h = Math.abs(y0 - (y1 + h1)); return w < ((w0 + w1) && h < (h0 + h1)) }圆形碰撞:function hitCircle(x0,y0,r0,x1,y1,r1) { return (x0 - y0)*(x0 - y0)+(x1 - y1)*(x1 - y1) < r1*r1 + r2 * r2; }null像素级碰撞这可以通过getImageData()来判断第一步:先矩形检测,若碰撞,则再进行第二步,若无碰撞,直接返回false(minx, miny)(maxx, maxy)nullcontext.drawImage(this.img, this.x, this.y); var data1 = context.getImageData(minx, miny, maxx - minx, maxy - miny).data; context.clearRect(0, 0, 550, 400); context.drawImage(sprite.img, sprite.x, sprite.y); var data2 = context.getImageData(minx, miny, maxx - minx, maxy - miny).data; for(var i = 3; i < data1.length; i += 4) { if(data1[i] > 0 && data2[i] > 0) return true; } return false;第二步:有两种方法第一种:同时检测两图在红色矩形内的像素,若存在一点在两个图上的alpha值不为0,则发生碰撞(minx,miny)(maxx,maxy)nullcontext.drawImage(this.img, this.x, this.y); context.globalCompositeOperation = 'source-in'; context.drawImage(sprite.img, sprite.x, sprite.y); var data = context.getImageData(minx, miny, maxx - minx, maxy - miny).data; context.globalCompositeOperation = 'source-over'; for(var i = 3; i < data.length; i += 4) { if(data[i] > 0 ) return true; } return false;第二步:有两种方法(minx,miny)(maxx,maxy)第二种:先画一张图,然后将混合模式改为source-in,这时再画图,新图片会仅仅出现与原有内容重叠的地方,其他地方透明度变为0,这时就可以通过判断是否所有像素都透明来判断碰撞了null数组地图null键盘控制用一个keyState储存按键状态:var keyState = {}; 在keydown事件中:keyState[e.keyCode] = true; 在keyup事件中:keyState[e.keyCode] = false;有什么好处呢?nullDEMOSnull谢谢观赏@06wj @hdu_06wj
/
本文档为【canvas游戏开发】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索