我计划扩展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
?
谢谢!