CCRenderTexture的renderTextureWithWidth无法在cocos2d v3.2.1 +中编译

时间:2015-07-19 18:16:52

标签: objective-c swift cocos2d-iphone

我尝试使用cocos2d截取当前场景的截图。在this answer to a previous question之后,我将它翻译成Swift,并得到了这个:

func takeScreenshot() -> UIImage {
    CCDirector.sharedDirector().nextDeltaTimeZero = true

    let viewSize: CGSize = CCDirector.sharedDirector().viewSize()
    let renderTexture: CCRenderTexture = CCRenderTexture.renderTextureWithWidth(viewSize.width, height: viewSize.height)

    renderTexture.begin()
    CCDirector.sharedDirector().runningScene.visit()
    renderTexture.end()

    return renderTexture.getUIImage()
}

但是,我收到编译错误:

let renderTexture: CCRenderTexture = CCRenderTexture.renderTextureWithWidth(viewSize.width, height: viewSize.height)

它表示"无法调用' renderTextureWithWidth'参数列表类型为'(CGFloat,height:CGFloat)'"。

我检查了CCRenderTexture.h文件,并说:

+(instancetype)renderTextureWithWidth:(int)w height:(int)h;

我尝试将viewSize.widthviewSize.height输入到Int,但它仍然提供相同的"无法调用"再次出错。

任何人都知道为什么会这样,以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这些类型的转换可能很棘手。但是如果你使用默认的Swift构造函数CCRenderTexture(width: Int32, height: Int32)而不是objective-c工厂方法(你尝试使用的那个),自动完成将帮助你。您需要转换为Int32