如何为CCButton设置固定的背景图像

时间:2015-09-20 11:47:42

标签: objective-c cocos2d-iphone spritebuilder

我试图为CCButton设置背景图像,并确保它拉伸或最小化到CCButton的确切大小:

-(void)setBackgroundSpriteFrame: (NSString*)spriteFrameFileName
{
    NSString* fullFileName = [NSString stringWithFormat:@"%@.png", spriteFrameFileName];
    CCSpriteFrame *spriteFrame = [CCSpriteFrame frameWithImageNamed:fullFileName];
    [super setBackgroundSpriteFrame:spriteFrame forState:CCControlStateNormal];
    double scaleValue = self.contentSize.height / spriteFrame.rect.size.height;
    [self.background setScale:scaleValue];
    self.fileName = spriteFrameFileName;
}

此方法驻留在一个继承自CCButton的类中。

问题在于我看到了背景图像,但是它以一种奇怪的方式被挤压(见图像)并且未被最小化\拉伸到按钮的大小。

请注意,图像和按钮是正方形,因此无需单独缩放X \ Y,还要注意CCButton是使用SprtieBuilder而不是代码生成的。

'奇怪的样子':
The square image got a weird squeezed look
原貌:
Original image

由于

2 个答案:

答案 0 :(得分:1)

感谢'YvesLeBorg'尝试提供帮助,我设法解决了这个问题。

我发布了帮助我的代码。 希望它能帮助别人。

NSString* fullFileName = [NSString stringWithFormat:@"%@.png", spriteFrameFileName];
CCTexture *texture = [CCTexture textureWithFile:fullFileName];
texture.contentScale = 2.0;
[super setBackgroundSpriteFrame:[texture createSpriteFrame] forState:CCControlStateNormal];
[self setScale:0.40];
self.fileName = spriteFrameFileName;

答案 1 :(得分:0)

没有足够的声誉来评论,所以请原谅写一个答案。

当我遇到同样的问题时,我在cocos2d论坛上找到了一个网络解决方案(没有链接,sry)。总结一下 - 无需单独缩放图像。但是人们应遵循2条规则:

1)图像应至少相同的尺寸(CCButton)和

2)不要忘记显式设置forState:CCControlStateNormal

在这种情况下不需要使用 contentScale