[]获取sprite对象的 width和height为0

 
/**
* 船
*/
class Boat extends Laya.Sprite {
private bt:Laya.Sprite;
constructor() {
super()
this.bt = new Laya.Sprite()
this.bt.loadImage("res/boat.png")
this.addChild(this.bt)
}
}
/**
* 游戏背景
*/

class BackGround extends Laya.Sprite {
//背景图
private bg:Laya.Sprite;

constructor(){
super();
this.init();
}

init():void{
this.bg = new Laya.Sprite()
this.bg.loadImage("res/background.png")
this.addChild(this.bg)
}
}
/**
* Game
*/
class Game {

constructor(){
Laya.init(768,1136);

//设置适配模式
Laya.stage.scaleMode = "showall";
//设置剧中对齐
Laya.stage.alignH = "center";
//设置横竖屏
Laya.stage.screenMode = "vertical";
//创建背景
let bg:BackGround = new BackGround();

Laya.stage.addChild(bg);
//创建船
let bt:Boat = new Boat();
Laya.stage.addChild(bt)

//获取动画大小区域
var bgBound: Laya.Rectangle = bg.getBounds();
var btBound: Laya.Rectangle = bg.getBounds();


console.log(bgBound.width/2)
console.log(bgBound.height - 150)
bt.pos(bgBound.width/2 - btBound.width/2,bgBound.height - 150)
}


}

//启动游戏
new Game();
打印结果:
0
-150
bgBound.width 和 bgBound.heigt 都为0 
已邀请:

cuixueying

赞同来自: 130*****113

  你下面说的问题,我测试是没有问题的,sprite不能用width和height去获取宽高,要用getBounds,但是有可能当前的资源还未加载完成,就开始获取资源的宽高,这个时候需要加一帧的延迟,如下:

222.png

 

要回复问题请先

商务合作
商务合作