canvas 实现微信小游戏
var canvas = document.getElementById('canvas');
var cxt = canvas.getContext('2d');
var timer;
var iStop = false;
var rotateSpeed = 0;
var endLines = [{'deg':0},{'deg':90},{'deg':180},{'deg':270}];
var runSpeed = 0;
var runLines = [{'x1':300,'y1':600, 'x2':300, 'y2':500, 'speed':0}];
function draw(){
cxt.save();
cxt.translate(300, 300);
cxt.rotate(rotateSpeed*Math.PI/180);
cxt.beginPath();
cxt.arc(0, 0, 50, 0, 360*Math.PI/180, false);
cxt.stroke();
cxt.closePath();
for(var i=0; i<endLines.length; i++){
cxt.save();
cxt.rotate(endLines[i].deg*Math.PI/180);
cxt.beginPath();
cxt.moveTo(50, 0);
cxt.lineTo(150, 0);
cxt.stroke();
cxt.closePath();
cxt.restore();
}
cxt.restore();
for(var j=0; j<runLines.length; j++){
cxt.save();
cxt.beginPath();
cxt.moveTo(runLines[j].x1, runLines[j].y1);
cxt.lineTo(runLines[j].x2, runLines[j].y2);
cxt.stroke();
cxt.closePath();
cxt.restore();
}
var _runLines = [];
for(var k=0; k<runLines.length; k++){
if(runLines[k].y2 < 450){
for(var m=0; m<endLines.length; m++){
if((endLines[m].deg + rotateSpeed)%360 == 90){
iStop = true;
}
}
}
if(runLines[k].y2 == 350){
endLines.push({'deg':90-rotateSpeed});
}else{
runLines[k].y1 -= runLines[k].speed;
runLines[k].y2 -= runLines[k].speed;
_runLines.push(runLines[k]);
}
}
runLines = _runLines;
if((++rotateSpeed) == 360){
rotateSpeed = 0;
}
}
function erase(){
cxt.clearRect(0, 0, canvas.width, canvas.height);
}
document.onmousedown = function(){
runLines.push({'x1':300,'y1':600, 'x2':300, 'y2':500, 'speed':10});
};
window.requestAnimationFrame =
window.requestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.msRequestAnimationFrame;
window.cancelRequestAnimationFrame =
window.cancelRequestAnimationFrame ||
window.mozCancelRequestAnimationFrame ||
window.webkitCancelRequestAnimationFrame ||
window.msCancelRequestAnimationFrame;
function animate() {
erase();
draw();
if(iStop){
cancelRequestAnimationFrame(timer);
}else{
timer = requestAnimationFrame(animate);
}
}
animate();
canvas 实现微信小游戏的更多相关文章
- 微信小游戏开发Canvas资源汇总
Demo: 微信小程序demo组件:股票分时图 微信小程序小组件:仿直播点赞气泡效果,基于Canvas 优质demo推荐:二维码生成器:使用canvas与纯JS版二维码生成 微信小程序学习用完整dem ...
- 微信小游戏canvas操作
这几天在做项目的时候,想在游戏画面之前,在Canvas上面画上一张背景图,代码如下 let ctx = canvas.getContext('2d') export default cl ...
- 微信小游戏排行榜页滚动查看排行榜(canvas指定区域溢出滚动,懒渲染)
在微信小游戏中,好友排名数据是能在关系数据域操作,整个关系数据域只会返回一个最终的sharedCanvas,并且这个canvas不能调用toDataURL()方法,所以要展示好友排行榜的话只能在关系数 ...
- 【转】利用 three.js 开发微信小游戏的尝试
前言 这是一次利用 three.js 开发微信小游戏的尝试,并不能算作是教程,只能算是一篇笔记吧. 微信 WeChat 6.6.1 开始引入了微信小游戏,初期上线了一批质量相当不错的小游戏.我在查阅各 ...
- 微信小游戏开发之四:使用three.js引擎
一.前言 微信小游戏中最魔性的'跳一跳'就是基于three.js 引擎开发的 源码放到github上了:GitHub地址 请自行下载. 二.下载 three.min.js 打开页面,复制代码到本地 ...
- 使用Laya引擎开发微信小游戏(上)
本文由云+社区发表 使用一个简单的游戏开发示例,由浅入深,介绍了如何用Laya引擎开发微信小游戏. 作者:马晓东,腾讯前端高级工程师. 微信小游戏的推出也快一年时间了,在IEG的游戏运营活动中,也出现 ...
- three.js 微信小游戏
最近在 https://classroom.udacity.com/courses/cs291 学习了一些 3D 引擎和 three.js 的知识 把 three.js 弄到微信小游戏里,先随便跑一跑 ...
- .Net Core ORM选择之路,哪个才适合你 通用查询类封装之Mongodb篇 Snowflake(雪花算法)的JavaScript实现 【开发记录】如何在B/S项目中使用中国天气的实时天气功能 【开发记录】微信小游戏开发入门——俄罗斯方块
.Net Core ORM选择之路,哪个才适合你 因为老板的一句话公司项目需要迁移到.Net Core ,但是以前同事用的ORM不支持.Net Core 开发过程也遇到了各种坑,插入条数多了也特别 ...
- Egret5.2.2 微信小游戏行的示例排行榜
Egret5.2.2版本发布微信小游戏后,在开放数据域有一个默认排行榜.这个文件夹代码+图大小就22kb. 排行榜的效果就是示范用的,很丑...带翻页. 代码如下,基本就是使用canvas渲染了一个排 ...
随机推荐
- defer和async的详细区别
看过javascript高级程序设计的人,在javascript高级程序设计里,应该看到了介绍了有关defer和async的区别,可是比较浅显,而且也说得不是很清楚.下面我们来通过图片来详细了解下df ...
- privilege instruction error
检查新建的回调函数是否用了__stdcall修饰
- Myeclipse安装完配置
1.Window --> preferences --> 搜索tomcat --> Tomcat7.x --> 选择Enable并导入tomcat所在目录2.Window -- ...
- 解决 MySQL 比如我要拉取一个消息表中用户id为1的前10条最新数据
我们都知道,各种主流的社交应用或者阅读应用,基本都有列表类视图,并且都有滑到底部加载更多这一功能, 对应后端就是分页拉取数据.好处不言而喻,一般来说,这些数据项都是按时间倒序排列的,用户只关心最新的动 ...
- java正则表达式(regular)
哎呀妈呀,脑瓜疼----正则表达式 正则是用来处理复杂文本类型的 标准字符集合: \d --->代表0-9任意一个数字 \D ---->除了数字之外的任意字符 \w ----->字母 ...
- 2017-2018-2 20165315 实验二《Java面向对象程序设计》实验报告
2017-2018-2 20165315 实验二<Java面向对象程序设计>实验报告 一.实验内容及步骤 1.初步掌握单元测试和TDD 单元测试 任务一:三种代码 用程序解决问题时,要学会 ...
- Java项目学习笔记(一)
2017/2/27 一.target属性 <a>标签的target属性规定在什么地方打开该链接文档. 1.打开新窗口,将文档重定向到一个单独的窗口. <a href="a. ...
- ALV界面显示
PERFORM ADD. IS_LAYOUT_LVC-CWIDTH_OPT = 'X'. IS_LAYOUT_LVC-SEL_MODE = 'A'. CALL FUNCTION 'REUSE_ ...
- SqlServer2014导出数据库的数据字典-最新版本(字段说明也能导出)
--移动360导出数据字典 -- --快速查看表结构(比较全面的) THEN obj.name ELSE '' END AS 表名, col.colorder AS 序号 , col.name AS ...
- mysql分组后将未分组的列合并成行GROUP BY,GROUP_CONCAT
今天遇到一个问题,消息通知可以同时发送给多个班级,而查询消息通知的时候并不需要根据班级分组,如何把多个班级的名称合并成一行数据追加到消息通知的后面呢 然后就发现了 group_concat: SELE ...