matter中layasprite怎么改变图片大小?

 
var roleOptions: any = {mass:1, restitution:0.8, layaSprite: sprite};
var role: any = Matter.Bodies.rectangle(180, 450, 334, 522, roleOptions);
 
代码类似这样的:sprite是我传入的图片,要怎么改变这张图片的大小?
已邀请:

睡熊

赞同来自: 5220

sprite对象创建之后 设 initialAngle = 0,之后就可以正常使用scale缩放sprite对象。
另外
/**
* <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;

阿耀

赞同来自: 5220

role对象有个layaSprite属性,这个layaSprite就是一个普通的sprite对象,改变这个对象的大小即可。
不过要注意,layaSprite属性在role刚创建的时候,是不存在的,貌似会在sprite对象创建完毕后再添加到role对象上的,目前我还没有去找是否有回调,临时用了个解决方案,延时一段时间再去操作即可

LayaYX

赞同来自: 5220

你是要传入一个图片在修改大小还是传入前就定义好图片大小?
  如果仅仅需要自定义的刚体的贴图在绑定到刚体时拥有自定义的大小,可以在定义layaSprite时就传入它的大小
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);//直接定义roleImg的大小及相对位置
roleImg.zOrder = 2;//还能定义层级,这个层级是与laya直接相关的
role.layaSprite = roleImg;

role可以不断传入自定义的layaSprite,每次传入会覆盖之前的layaSprite,这样子会带来一个问题是每次都需要自定义   如果在后续代码中要实现一些例如:按下刚体让贴图变大,松开时贴图恢复等实时更新传入图片的大小及位置或者透明度等属性时,我这有一种解决的方案,代码如下:
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

调用
role.layaSprite.getChildAt(0).alpha = 0;//Image实例1变透明
这样子可以实时改变作为基底的roleImg子节点上的图片的大小等参数,至于为什么不直接改变roleImg的参数,这个我试过,并不行。

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作