[LayaAir3]使用 Laya.Sprite 的 transform 无法获取正确的Matrix

以下代码挂载在任意 2D Sprite 上
const { regClass, property } = Laya;

@regClass()
export class Main extends Laya.Script {

declare owner: Laya.Sprite;

onStart() {
this.owner.pos(10, 10);

// 以下代码获取的矩阵都是不正确的
console.log(this.owner.transform); // output: {a:1 b:0 c:0 d:1 tx:0 ty:0}
let oner:any=this.owner;
console.log(oner._tfChanged); // output: false
console.log(oner._adjustTransform()); // ouput: {a:1 b:0 c:0 d:1 tx:0 ty:0}
console.log(oner._transform); // output: {a:1 b:0 c:0 d:1 tx:0 ty:0}

// 设置 transform 是正确的
this.owner.transform = new Laya.Matrix(1, 0, 0, 1, 20, 20);
console.log(this.owner.x, this.owner.y); // output: 20, 20
}
}
已邀请:

layaAir小孟

赞同来自:

您好,您获取_tfChanged、transform等有什么需求吗,因为transform就是用来改变位置的,您这部分的用法也是正确的:
        // 设置 transform 是正确的
this.owner.transform = new Laya.Matrix(1, 0, 0, 1, 20, 20);
console.log(this.owner.x, this.owner.y); // output: 20, 20
直接使用就可以了。

如果想知道中间的过程,可以结合引擎源码和调试:

1.png

 
 

要回复问题请先

商务合作
商务合作