早期Swift中Cocos2D初始化代码的重构

早期Swift中Cocos2D初始化代码的重构,第1张

概述大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道在早期的Swift中在子类里只能调用超类的designated初始化器,这是Swift早期版本的一个限制,所以譬如完成CCSprite子类的init工作,我们就得多写一些代码: init(type:FallingObjectType){

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)

我们知道在早期的Swift中在子类里只能调用超类的designated初始化器,这是Swift早期版本的一个限制,所以譬如完成CCSprite子类的init工作,我们就得多写一些代码:

init(type:FallingObjectType){        self.type = type        var imagename:String? = nil        if type == .Good{            let rndindex = randomInteger(FallingObject.imagenames.good.count)            imagename = prefixAssetsPath(FallingObject.imagenames.good[rndindex])        }else if type == .Bad{            let rndindex = randomInteger(FallingObject.imagenames.bad.count)            imagename = prefixAssetsPath(FallingObject.imagenames.bad[rndindex])        }        let spriteFrame = CCSpriteFrame(imagenamed: imagename)        super.init(texture: spriteFrame.texture,rect: spriteFrame.rect,rotated: false)        anchorPoint = ccp(0,0)    }

注意,CCSprite中是有imagenamed: imagename初始化方法的,但该初始化器是一个convenIEnce initializers,So你懂得,我们上面说过子类只能调用超类的非convenIEnce初始化器,所以我们得自己创建一个CCSpriteFrame,然后调用super的init(texture: spriteFrame.texture,rotated: false)初始化器!

不过在最新的Xcode7.3中,版本为2.2的Swift已经不需要这么做了,我们可以直接这么写:

init(type:FallingObjectType){        self.type = type        var imagename:String? = nil        if type == .Good{            let rndindex = randomInteger(FallingObject.imagenames.good.count)            imagename = prefixAssetsPath(FallingObject.imagenames.good[rndindex])        }else if type == .Bad{            let rndindex = randomInteger(FallingObject.imagenames.bad.count)            imagename = prefixAssetsPath(FallingObject.imagenames.bad[rndindex])        super.init(imagenamed: imagename)        anchorPoint = ccp(0,0)    }

直接一个super.init(imagenamed: imagename)搞定了!

但是遗憾的是Swift2.2中还是不支持Type的class属性关键字,只能用static,我们期待Swift3的改进吧!

总结

以上是内存溢出为你收集整理的早期Swift中Cocos2D初始化代码的重构全部内容,希望文章能够帮你解决早期Swift中Cocos2D初始化代码的重构所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1077726.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存