ios – SKShapeNode帧包含点(0,0),即使CGPath没有

ios – SKShapeNode帧包含点(0,0),即使CGPath没有,第1张

概述我正在实现一个动态加载背景图形的游戏,具体取决于当前可见区域.使用SKShapeNode绘制背景.为了节省内存,我只绘制了CGPath的一小部分.问题是无论我使用什么CGPath坐标,SKShapeNode的结果帧将始终包含(0,0)点.这是一个例子: SKShapeNode *shapeNodePos = [SKShapeNode node];CGMutablePathRef pathPos 我正在实现一个动态加载背景图形的游戏,具体取决于当前可见区域.使用SKShapeNode绘制背景.为了节省内存,我只绘制了CGPath的一小部分.问题是无论我使用什么CGPath坐标,SKShapeNode的结果帧将始终包含(0,0)点.这是一个例子:

SKShapeNode *shapeNodePos = [SKShapeNode node];CGMutablePathref pathPos = CGPathCreateMutable();CGPathAddRect(pathPos,NulL,CGRectMake(50,50,50));shapeNodePos.path = pathPos;CGPathRelease(pathPos);NSLog(@"Frame pos = (%f,%f,%f)",shapeNodePos.frame.origin.x,shapeNodePos.frame.origin.y,shapeNodePos.frame.size.wIDth,shapeNodePos.frame.size.height);

结果是:

Frame pos = (0.000000,0.000000,100.000000,100.000000)

但是,我希望SKShapeNode.frame仅限于CGPath内容:

Frame pos = (50.000000,50.000000,50.000000)

它是SpriteKit中的错误还是实际上是预期的行为?如果绘制的小CGPath矩形距离(0,0)点相当远,是否也会对性能产生负面影响,或者Sprite Kit会忽略帧的空白区域?

提前致谢!

解决方法 从我的测试中看来,除非你在创建CGMutablePathref之前专门设置节点的位置,否则起始点将始终为(0,0).但是,事先设置节点的位置可以得到预期的结果.

SKShapeNode *shapeNodePos = [SKShapeNode node];shapeNodePos.position = CGPointMake(50,50); // <<< Set node's positionCGMutablePathref pathPos = CGPathCreateMutable();CGPathAddRect(pathPos,CGRectMake(0,50));shapeNodePos.path = pathPos;CGPathRelease(pathPos);

NSLog现在打印

Frame pos = (50.000000,50.000000)

总结

以上是内存溢出为你收集整理的ios – SKShapeNode帧包含点(0,0),即使CGPath没有全部内容,希望文章能够帮你解决ios – SKShapeNode帧包含点(0,0),即使CGPath没有所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1023323.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存