我计划扩展CCSprite该类以创建一个Block类,这是我的游戏的基本构建块。可能有许多“archblocks”——各个块将基于的原型。特别是,我想创建一个调色板,用户可以从中挑选要放置在游戏板上的积木。一旦放置在板上,构建块就会具有自己的身份。
这是我到目前为止所拥有的:
class Block : public CCSprite {
private:
int _id = 0;
int _type = 0;
public:
Block* CopyBlock();
}
一旦用户选择 aBlock并将其放在游戏板上,CopyBlock就会被调用,并且原型会安全地返回到调色板,让新铸造Block的人在游戏板上过自己的生活。
我注意到CCObject“实现”了一种Copy方法,但据我所知,这只是指未实现的CopyWithZone(0)for 。CCObject不过,该Copy方法不是虚拟的,所以我有点不确定我是否能够覆盖它。(我在 C++ 方面不是特别强,但我确实对 OOP 有很好的掌握,所以如果有人愿意分享,我很乐意提供细节。)
问题:
1)这个设计有意义吗?我应该使用覆盖Copy和/或CopyWithZone代替吗?
2)我如何实现CopyBlock(或Copy和/或CopyWithZone)以便将CCSprite东西和成员_type都复制到新的Block?
谢谢!