【问题标题】:how to avoid resizing texture in swift如何避免快速调整纹理大小
【发布时间】:2015-06-02 21:06:46
【问题描述】:

我正在将精灵节点添加到场景中,给定大小。

但是当我更改精灵节点的纹理时,大小会自动更改为纹理图像(png)的原始大小。

我怎样才能避免这种情况?

我的代码:

var bomba = SKSpriteNode(imageNamed: "bomba2") 
var actionbomba = SKAction()
bomba.size = CGSizeMake(frame2.size.width/18, frame2.size.width/18)   
let bomba3 = SKTexture(imageNamed: "bomba3.png")
actionbomba.addObject(SKAction.moveBy(CGVectorMake(0, frame.size.height/2.65), duration: beweegsnelheid))
actionbomba.addObject(SKAction.setTexture(bomba3,resize: false))         

addChild(bomba)
bomba.runAction(SKAction.repeatAction(SKAction.sequence(actionbomba), count: -1))

【问题讨论】:

  • 为什么你的动作被重复-1次
  • 因为精灵一直在移动
  • 什么是 beweegsnelheid?

标签: swift sprite-kit textures skaction


【解决方案1】:

不要明确设置大小。从您的信息 sprite kit 不会自动找到每个纹理的比例因子并对其进行缩放。

相反,您设置节点的比例因子,每个纹理都会应用该比例。

[playernode setScale: x];

类似的东西。您只需在创建节点时设置它,并且每个纹理都将是您期望的大小,因为您的纹理大小相同。

我对使用多个纹理进行动画处理的所有节点都使用此方法,并且每次都有效。

【讨论】:

  • 但尺寸需要为frame.size.width/18。由于屏幕比例不同,我无法通过您的解决方案实现这一点。还有其他解决方案吗?
  • 根据屏幕尺寸做基本数学计算你的 x 应该是什么有什么问题?
  • 您可以访问精灵的大小。您可以访问所需的精灵大小(帧大小/18)。找到比例因子应该是 (x) 时,应该没有任何遗漏。
猜你喜欢
  • 1970-01-01
  • 2018-09-02
  • 2015-11-12
  • 2016-08-18
  • 1970-01-01
  • 2018-04-30
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多