【问题标题】:cocos2d CCDrawNode scale bounding boxcocos2d CCDrawNode 缩放边界框
【发布时间】:2014-03-26 20:50:42
【问题描述】:

我正在使用 cocos2d 并创建了一个 CCDrawNode。 在我调用addChild: 添加CCDrawNode 的那一刻,我调用以下方法使节点永远缩放:


CCActionScaleBy *scaleAction = [CCActionScaleBy actionWithDuration:0.3f scale:1.1f];
CCActionRepeatForever *repeatForever = [CCActionRepeatForever actionWithAction:scaleAction];
[self runAction:repeatForever];

不幸的是,当尝试访问 CCDrawNode boundingBox 时,它的宽度和高度不会随着缩放操作而改变。

是什么原因造成的,我怎样才能得到它的真实宽度和高度?

谢谢!

【问题讨论】:

  • 你可以通过将原始宽度/高度乘以当前比例值得到真正的宽度、高度。

标签: cocos2d-iphone bounding-box ccaction ccnode


【解决方案1】:

快速浏览一下 CCActionScaleBy 的实现,可以发现它使用了节点的 scale 属性,而没有篡改 contentSizeInPoints 属性。 boundingBox 是使用 0,0 作为原点并使用 contentSizeInPoints 属性获得宽度和高度尺寸的矩形。 获得实际宽度和高度的一种简单方法是将contentSize/boundingBox.size 与当前比例值相乘:

    CGFloat actualWidth = self.boundingBox.size.width * self.scale;
    CGFloat actualHeight = self.boundingBox.size.height * self.scale;

【讨论】:

  • 嗨,这可能很好地回答了这个问题......但不要忘记总有 n00bs 会提出这个问题并想知道这如何解决问题......它总是一个好主意添加一些内容来解释您的解决方案为何有效。 :)
猜你喜欢
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 2012-04-17
  • 2018-11-05
  • 1970-01-01
相关资源
最近更新 更多