我尝试使用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.width
和viewSize.height
输入到Int
,但它仍然提供相同的"无法调用"再次出错。
任何人都知道为什么会这样,以及如何解决这个问题?
答案 0 :(得分:1)
这些类型的转换可能很棘手。但是如果你使用默认的Swift构造函数CCRenderTexture(width: Int32, height: Int32)
而不是objective-c工厂方法(你尝试使用的那个),自动完成将帮助你。您需要转换为Int32
。