p2.js 与 createjs 的组合应用
开始前简单说下其他几款js物理引擎
box2d老牌,功能全面,但是效率低下,移动端基不用考虑的
matterjs 效率目前我测试下来最高,但是依然还在开发中(好像还很缓慢),目前功能局限,而且有bug。(本来项目打算使用,结果局限和bug导致放弃)
p2js 移动端推荐使用 (常规体量在目前手机大多数上应用没有问题)
作者github: https://github.com/schteppe
阅读此文需要一定的基础知识,这里只讲p2.js 与 createjs 的组合应用
坐标系:
p2.js与createjs 的x轴是一致的。y轴是相反的

注册点:
createjs默认在目标bound的左上角
p2.js默认在目标bound的中心

相关属性转换
createjs.rotation = -p2.angle * 180 / Math.PI;
createjs.x= p2.Body.position[0];
createjs.y= -p2.Body.position[1];
使用createjs的movieclip、sprite、img贴图渲染
p2js的一大特点就是最基本的库里并没有集成贴图渲染的相关api,一开始觉得很不习惯,使用后觉得真心好用,能满足很多特殊情况
例如:1 由于模型原因,我们贴图需要稍大于模型,这样才能在渲染时没有缝隙。
2 动态刷新贴图(例如我们直接使用createjs的movieclip,多方便)
其实就是把p2的坐标,角度对应的绑定给createjs的元件来显示。
var arrDataShow=[]; //数组管理对应关系 //建createjs元件
var _m=new createjs.MovieClip()
//建p2刚体
var _p2= new p2.Body(
{
mass: 1,
position: [0, 0],
angle:0.1,
allowSleep : false
})
world.addBody(_p2); arrDataShow.push({data:_p2,show:_m,type:""});//数组管理对应关系 //渲染
stage.addEventListener("tick",function(e)
{
world.step(1 / 10); //createjs fps 与 p2 word的step 对应关系 自行摸索
for (var i = 0; i < arrDataShow.length; i++)
{
var type = arrDataShow[i].type;
var data = arrDataShow[i].data;
var show = arrDataShow[i].show;
//
show.x = data.position[0];
show.y = -data.position[1];
show.rotation = -data.angle * 180 / Math.PI;
}
})
至于不规则图形,如何在p2中建立刚体官方demo里面也有
注意:
因为不规则所以刚体的重心并不会在bound的中心,所以需要进一步解决这个问题(项目时间原因,暂时还未想到好的办法,待更新)
到此 两者的组合应用 算是基本清了!
p2.js 与 createjs 的组合应用的更多相关文章
- JS二维数组排序组合
需求是这样的:http://q.cnblogs.com/q/29093/ 这里简述一下: 现在有一个不确定长度的数组.比如:var temp=[["Fu","Hai&qu ...
- p2.js物理引擎学习
P2简介 P2是一款基于Javascript编写的HTML5 2D物理引擎,和Box2D.Nape等2D物理引擎一样,P2集成了各种复杂的物理公式和算法,可以帮助我们轻松的实现碰撞.反弹等物理现象的模 ...
- js中的寄生组合继承
function inheritProperty(subType, superType) { function F(){} F.prototype = superType.prototype; sup ...
- JS监听键盘的组合按键
Mark 一下: $(document).keydown(function (e) { console.log(e); var keyCode = e.keyCode || e.which || e. ...
- 【一统江湖的大前端(8)】matter.js 经典物理
目录 [一统江湖的大前端(8)]matter.js 经典物理 一.经典力学回顾 二. 仿真的实现原理 2.1 基本动力学模拟 2.2 碰撞模拟 三. 物理引擎matter.js 3.1 <愤怒的 ...
- 前端UI框架和JS类库
一.前端框架库: 1.Zepto.js 地址:http://www.css88.com/doc/zeptojs/ 描述:Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jqu ...
- P2物理引擎中文文档
P2物理引擎中文文档地址:https://github.com/schteppe/p2.js/wiki/Chinese-wiki-%E4%B8%AD%E6%96%87%E7%BB%B4%E5%9F%B ...
- 【干货】Jquery.Datables与Bootstrap3的组合使用
官方地址 datatables官方网址:www.datatables.net 下载bootstrap3与datables文件包 引用文件 css:bootstrap.css.dataTables.bo ...
- GSAP JS基础教程--认识GSAP JS
第一次写博文呢,这次写博客是因为应一位同学的要求,写一下GSAP JS的一个小教程.为什么说小呢?因为它实际上就是小,只是一个入门级的小教程.如果你想问:“那你为什么不写详细一点呢?”,我想说,说., ...
随机推荐
- JavaMail读取收件箱退信邮件/分析邮件附件获取Message_Id
需求描述:公司最近有个项目邮件通知功能,但是客户上传的邮件地址并不一定存在,以及其他的各种问题.所有希望发送通知后有个回执,及时发现地址存在问题的邮箱. 需求分析:经过分析JavaMail可以读取收件 ...
- SEERC 2018 Inversion
题意: 如果p数组中 下标i<j且pi>pj 那么点i j之间存在一条边 现在已经知道边,然后求p数组 在一张图中,求有多少个点集,使得这个点集里面的任意两点没有边 不在点集里面的点至少有 ...
- UTF虚拟对象
虚拟对象: 虚拟对象是为了让UFT识别某些不能识别的控件,把这些控件的范围定义为虚拟对象. 新建虚拟对象 管理虚拟对象 创建虚拟对象之后可通过菜单tools-Virutal Objects-Virut ...
- 读写分离(AMOEBA)
博主本人平和谦逊,热爱学习,读者阅读过程中发现错误的地方,请帮忙指出,感激不尽 1. 环境准备: 1.1新增一台虚拟机 amoeba:192.168.247.80 架构(使用图片源自其它博文): 1. ...
- 提前窥测奥斯卡颁奖信封中的谜底 ——Rothschild预测2014奥斯卡花落谁家
--Rothschild预测2014奥斯卡花落谁家" title="提前窥测奥斯卡颁奖信封中的谜底 --Rothschild预测2014奥斯卡花落谁家"> 编者 ...
- Tarjan模板——求强连通分量
Tarjan求强连通分量的流程在这个博客讲的很清楚,再加上我也没理解透,这里就不写了. 缩点:将同一个连通块内的点视为同一个点. 扔一道模板题:codeVS2822爱在心中 第一问很显然就是求点数大于 ...
- 【Java集合】试读ArrayList源码
ArrayList简介 ArrayList 是一个数组队列,相当于 动态数组.与Java中的数组相比,它的容量能动态增长.它继承于AbstractList,实现了List, RandomAccess, ...
- 吴裕雄--天生自然python学习笔记:python爬虫与网页分析
我们所抓取的网页源代码一般都是 HTML 格式的文件,只要研究明白 HTML 中 的标签( Tag )结构,就很容易进行解析并取得所需数据 . HTML 网页结构 HTML 网 页是由许多标签( Ta ...
- jmeter如何解决乱码问题
使用jmeter的时候时常遇到中文乱码的情况,下面总结一下几个解决方法,方便以后进行复习. 1.添加后置处理器Beanshell PostProcessor,在输入框内写入“prve.setDateE ...
- Java IO: FileInputStream
原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) FileInputStream可以以字节流的形式读取文件内容.FileInputStream ...