我正在尝试使用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)
它表示“无法使用类型为‘(CGFloat, height: CGFloat)’的参数列表调用‘renderTextureWithWidth’”。
我检查了 CCRenderTexture.h
文件,它显示:
+(instancetype)renderTextureWithWidth:(int)w height:(int)h;
我尝试将 viewSize.width
和 viewSize.height
类型转换为 Int
,但它仍然给出相同的“无法调用”又报错了。
有人知道为什么会出现这种情况以及如何解决吗?
最佳答案
这些类型转换可能很棘手。但是,如果您使用默认的 Swift 构造函数 CCRenderTexture(width: Int32, height: Int32)
而不是 Objective-C 工厂方法(您尝试使用的方法),自动完成功能将会帮助您。您需要转换为 Int32
。
关于objective-c - CCRenderTexture的renderTextureWithWidth在cocos2d v3.2.1+中编译失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31504393/