3.4.1 下,这也许是 api 接口设计如此,对 api 含义的第一反应是 position 会改变,也就是说 setPosition() 以后 widget 再生效,不知道大家的第一反应是什么。
@ccclass('SetPositionTest')
export default class SetPositionTest extends cc.Component {
onLoad() {
}
onDestroy() { }
start() {
this.test().then(instance => {
(instance as cc.Node).setPosition(new cc.Vec3(0, cc.view.getVisibleSize().height / 4, 0)); // 当设置了 cc.Widget align 时,坐标设置没有生效
(instance as cc.Node).angle = 45; // 角度设置生效了
});
}
async test() {
return new Promise((resolve, reject) => {
cc.assetManager.resources.load('SpriteSplash', cc.Prefab, (err, prefab) => {
if (err) {
reject(err);
}
const instance = cc.instantiate(prefab as cc.Prefab);
this.node.addChild(instance);
resolve(instance);
});
});
}
}
set-position-test-prefab.zip (4.2 KB) set-position-test.zip (12.4 KB)