CCRenderTexture 的 renderTextureWithWidth 无法在 cocos2d v3.2.1+ 中编译
CCRenderTexture's renderTextureWithWidth fails to compile in cocos2d v3.2.1+
我正在尝试使用 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)
它说 "cannot invoke 'renderTextureWithWidth' with an argument list of type '(CGFloat, height: CGFloat)'"。
我检查了 CCRenderTexture.h
文件,它说:
+(instancetype)renderTextureWithWidth:(int)w height:(int)h;
我尝试将 viewSize.width
和 viewSize.height
类型转换为 Int
,但它仍然再次出现相同的 "cannot invoke" 错误。
有谁知道为什么会这样以及如何解决?
这些类型转换可能很棘手。但是,如果您使用默认的 Swift 构造函数 CCRenderTexture(width: Int32, height: Int32)
而不是 objective-c 工厂方法(您尝试使用的方法),自动完成将帮助您解决问题。您需要转换为 Int32
.
我正在尝试使用 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)
它说 "cannot invoke 'renderTextureWithWidth' with an argument list of type '(CGFloat, height: CGFloat)'"。
我检查了 CCRenderTexture.h
文件,它说:
+(instancetype)renderTextureWithWidth:(int)w height:(int)h;
我尝试将 viewSize.width
和 viewSize.height
类型转换为 Int
,但它仍然再次出现相同的 "cannot invoke" 错误。
有谁知道为什么会这样以及如何解决?
这些类型转换可能很棘手。但是,如果您使用默认的 Swift 构造函数 CCRenderTexture(width: Int32, height: Int32)
而不是 objective-c 工厂方法(您尝试使用的方法),自动完成将帮助您解决问题。您需要转换为 Int32
.