用于游戏开发,使物体的运动更加真实,让游戏场景看起来更具交互性,比如愤怒的小鸟
npm install @flyover/box2d --save
OpenHarmony npm环境配置等更多内容,请参考 如何安装OpenHarmony npm包 。
1、依赖原库后,须在/entry/node_modules/@flyover/box2d/Build/Box2D/box2d.umd.js中修改 return
rgba(${r},${g},${b},${a})
为returnrgba(${Math.round(r)},${Math.round(g)},${Math.round(b)},${a})
, 修改 returnrgb(${r},${g},${b})
为returnrgb(${Math.round(r)},${Math.round(g)},${Math.round(b)})
以适配openharmony工程颜色渲染问题
2、/entry/node_modules/@flyover/box2d/Build/Box2D/box2d.umd.js中删除Pop()方法中if (element === null) { throw new Error(); }代码,解决部分效果崩溃问题
3、最新新版修复了问题2中问题,但原库作者没有在npm上发布最新版本,npm install的版本为1.0.1对应原库版本2.3.2。针对问题1在openharmony上颜色渲染问题及新版本npm发布问题,已提交Issues给作者。经过测试新版在openharmony上可以正常使用
import * as box2d from '@flyover/box2d'
...
aboutToAppear() {
selectArr = [];
for (let i: number = 0; i < g_testEntries.length; ++i) {
let o = {};
o['value'] = g_testEntries[i].name;
selectArr[i] = o;//初始化数据
}
//循环调用渲染
this.init();
}
private init() {
setTimeout(inits, timeStep);
}
const inits = function (time) {
setTimeout(loop, timeStep);
}
const loop = function (time) {
setTimeout(loop, timeStep);
app.SimulationLoop(time);
}
...
//动画切换
Select(selectArr)
.selected(this.index)
.value(selectArr[this.index].value)
.font({ size: 20, weight: 200, family: 'serif', style: FontStyle.Normal })
.selectedOptionFont({ size: 30, weight: 300, family: 'serif', style: FontStyle.Normal })
.optionFont({ size: 20, weight: 200, family: 'serif', style: FontStyle.Normal })
.onSelect((index: number) => {
this.index = index;
if (app) {
app.m_test_index = index;
//加载动画
app.LoadTest();
}
})
在下述版本验证通过:
DevEco Studio 版本:3.1 Beta1(3.1.0.200),SDK:API9 Beta5(3.2.10.6)
|---- jbox2d
| |---- entry # 示例代码文件夹
| |----src
|----main
|----ets
|----pages
|----index.ets #效果主页面
|----Testbed
|----Framework
|----DebugDraw.ets #效果绘制具体实现
|----FullscreenUI.ts #全局页面初始化,是否启用粒子参数
|----Main.ets #效果绘制入口
|----ParticleEmitter.ts #粒子发射器
|----ParticleParameter.ts #粒子参数
|----Test.ets #canvas相关初始化设置
|----Tests #所有效果具体实现
|----Testbed.ts #对外接口
| |---- README.md # 安装使用方法
使用过程中发现任何问题都可以提 Issue 给我们,当然,我们也非常欢迎你给我们发 PR 。
本项目基于 MIT License ,请自由地享受和参与开源。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。