objective-c - CCRenderTexture的renderTextureWithWidth在cocos2d v3.2.1+中编译失败

标签 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)

它表示“无法使用类型为‘(CGFloat, height: CGFloat)’的参数列表调用‘renderTextureWithWidth’”。

我检查了 CCRenderTexture.h 文件,它显示:

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

我尝试将 viewSize.widthviewSize.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/

相关文章:

ios - 在 UIWebView 中嵌入图像和 UILable

ios - UITableViewCell Checkmark - 如何保存和检索 indexPath?

ios - Swift Playground 没有输出

swift : use of %s in String(format: . ..)

ios - 如何检查 CCSprite 中的像素是否透明

iphone - 动画后cocos2d自动删除 Sprite

ios - AVFoundationAudioSettings 的设置 AVAudioTimePitchAlgorithmVarispeed

ios - Unity 应用程序启动时使用 Vungle 的 NSInvalidArgumentException

ios - 如何快速检索 Google Sign iOS 中的用户出生日期和性别

ios - cocos2d 视差触摸