游戏很容易遇到一个需求:大量帧动画节点在屏幕中移动
如果想自己用最简单高效的逻辑控制表现,就需要每帧手动调用setPosition来更新节点位置,这些节点并没有挂载其他组件,却要执行if (this._eventMask & TRANSFORM_ON) {
this.emit(NodeEventType.TRANSFORM_CHANGED, TransformBit.POSITION);
}
节点也没有子节点,却要执行this.invalidateChildren(TransformBit.POSITION);
这个里面的逻辑对于没有子节点的节点来说,好浪费性能
能不能出一个可以用于最简单情况的setPosition,比如下面
setPosition (x,y){
this._lpos.x = x
this._lpos.y = y
let dirtyBit = TransformBit.POSITION
let flag = node._dirtyFlagsPri;
if (JSB)nativeDirtyNodes[0] = this.native;
if ((flag & this._hasChangedFlags[0] & dirtyBit) !== dirtyBit) {
flag |= dirtyBit;
this._dirtyFlagsPri = flag;
if (JSB) this._nativeDirtyFlag[0] = flag;
}
}
