[]Laya集成Matter.js库layaSprite水平翻转无法显示的bug
layaair版本:1.7.19.1beta
项目类型:全部(目前测试的有JS和TS)
环境:Win7 x64
问题描述: laya集成matters.js,
1、创建一个sprite,水平翻转sprite(scalex=-1)
2、创建matter.js刚体body,并且设置layaSprite为步骤1的sprite
发现sprite无法显示。如果步骤1的sprite不翻转,则正常显示。
相关实例代码如下:
var ball_sprite = new Laya.Sprite();
ball_sprite.loadImage("common1/btn_new.png");
Laya.stage.addChild(ball_sprite);
ball_sprite.scale(-1, 1, true); // !!! 如果屏蔽此行代码,球能正常显示
var ballOptions = {
layaSprite:ball_sprite,
render:
{
sprite:
{
// texture: 'common1/btn_new.png',
xOffset: 127,
yOffset: 46,
}
}
};
circle = Bodies.circle(300, 230, 26, ballOptions)
跟踪发现,在计算球的transform时数据不对,继续跟踪,最终发现问题根源在于LayaRender.body()处理的一bug导致,具体见附件截图。在LayaRenders.js文件的Line269
sprite.rotation = (body.angle - sprite.initialAngle) * 180 / Math.PI;
这里因sprite.initialAngle为空导致rotation为空,进而导致后续计算的sprite变换矩阵异常。
修复办法:
sprite.rotation = (body.angle - (sprite.initialAngle || 0)) * 180 / Math.PI;
说明:本帖只是针对这个问题的跟进发现,实现目标还有其它办法,不在本帖讨论范围之内。
====================
期待官方的反馈,谢谢!
项目类型:全部(目前测试的有JS和TS)
环境:Win7 x64
问题描述: laya集成matters.js,
1、创建一个sprite,水平翻转sprite(scalex=-1)
2、创建matter.js刚体body,并且设置layaSprite为步骤1的sprite
发现sprite无法显示。如果步骤1的sprite不翻转,则正常显示。
相关实例代码如下:
var ball_sprite = new Laya.Sprite();
ball_sprite.loadImage("common1/btn_new.png");
Laya.stage.addChild(ball_sprite);
ball_sprite.scale(-1, 1, true); // !!! 如果屏蔽此行代码,球能正常显示
var ballOptions = {
layaSprite:ball_sprite,
render:
{
sprite:
{
// texture: 'common1/btn_new.png',
xOffset: 127,
yOffset: 46,
}
}
};
circle = Bodies.circle(300, 230, 26, ballOptions)
跟踪发现,在计算球的transform时数据不对,继续跟踪,最终发现问题根源在于LayaRender.body()处理的一bug导致,具体见附件截图。在LayaRenders.js文件的Line269
sprite.rotation = (body.angle - sprite.initialAngle) * 180 / Math.PI;
这里因sprite.initialAngle为空导致rotation为空,进而导致后续计算的sprite变换矩阵异常。
修复办法:
sprite.rotation = (body.angle - (sprite.initialAngle || 0)) * 180 / Math.PI;
说明:本帖只是针对这个问题的跟进发现,实现目标还有其它办法,不在本帖讨论范围之内。
====================
期待官方的反馈,谢谢!
没有找到相关结果
已邀请:
要回复问题请先登录
3 个回复
Aar0n
赞同来自:
while(true){棒!};
cwugs
赞同来自:
srr5220
赞同来自: