var role:any = Matter.Bodies.circle(x,y,50,roleOptions);//这里不需要定义texture或者layaSprite
var roleImg = new Laya.Sprite();
roleImg.loadImage("../xx.png"x,y,width,height);//这里的xx.png可以随便选一张图片,透明的最好
roleImg.addchildAt(Image实例1,0);
roleImg.addchildAt(Image实例2,1);
role.layaSprite = roleImg;//将自定义的layaSprite传入role
3 个回复
睡熊
赞同来自: srr5220
另外
/**
* <p>显示对象的宽度,单位为像素,默认为0。</p>
* <p>此宽度用于鼠标碰撞检测,并不影响显示对象图像大小。需要对显示对象的图像进行缩放,请使用scale、scaleX、scaleY。</p>
* <p>可以通过getbounds获取显示对象图像的实际宽度。</p>
*/
width: number;
/**
* <p>显示对象的高度,单位为像素,默认为0。</p>
* <p>此高度用于鼠标碰撞检测,并不影响显示对象图像大小。需要对显示对象的图像进行缩放,请使用scale、scaleX、scaleY。</p>
* <p>可以通过getbounds获取显示对象图像的实际高度。</p>
*/
height: number;
阿耀
赞同来自: srr5220
不过要注意,layaSprite属性在role刚创建的时候,是不存在的,貌似会在sprite对象创建完毕后再添加到role对象上的,目前我还没有去找是否有回调,临时用了个解决方案,延时一段时间再去操作即可
LayaYX
赞同来自: srr5220
如果仅仅需要自定义的刚体的贴图在绑定到刚体时拥有自定义的大小,可以在定义layaSprite时就传入它的大小
role可以不断传入自定义的layaSprite,每次传入会覆盖之前的layaSprite,这样子会带来一个问题是每次都需要自定义 如果在后续代码中要实现一些例如:按下刚体让贴图变大,松开时贴图恢复等实时更新传入图片的大小及位置或者透明度等属性时,我这有一种解决的方案,代码如下: 这样子可以实时改变作为基底的roleImg子节点上的图片的大小等参数,至于为什么不直接改变roleImg的参数,这个我试过,并不行。