我有 3 个不同的课程Tree
,Fruit
和Basket
。他们每个人都有自己的CCSprite
成员,我可以通过这些成员访问getSprite( )
(每个班级都有自己的成员getSprite( )
)。此外,每个类都有一个draw( )
设置CCSprite
纹理、位置和其他CCSprite
相关内容的方法。当我创建这些类的实例时,我总是需要addChild( )
主层中的每个精灵。它实际上并没有什么问题,但我想要它,以便每个draw( )
方法都是处理addChild( )
主层方法的方法。
我的代码是这样的:
// Tree.cpp
#include "Tree.h"
#include "cocos2d.h"
using namespace cocos2d;
Tree::Tree( ) {
draw( );
}
CCSprite * Tree:getSprite( ) {
return m_TreeSprite;
}
void Tree::draw( ) {
m_TreeSprite = CCSprite::create( "tree.png" );
m_TreeSprite -> setPosition ( 100, 100 );
}
/*
* The other classes have similar structure. Will take a long long post if I write them all.
*/
// MainLayer.cpp
void MainLayer::drawScreenObjects( ) {
m_Tree = Tree( );
this -> addChild( m_Tree.getSprite( ) );
m_Basket = Basket( );
this -> addChild( m_Basket.getSprite( ) );
}
我想要它,以便该draw( )
方法看起来类似于:
void Tree::draw( ) {
m_TreeSprite = CCSprite::create( "tree.png" );
m_TreeSprite -> setPosition( 100, 100 );
MainLayer -> addChild( m_TreeSprite );
}
我正在考虑的解决方案是
- 将引用传递
MainLayer
给每个类,并有一个成员变量保存该引用。 - 使所有类都从 CCNode 继承,以便它们可以拥有自己的子级。
还有其他可能的解决方案吗?我只是觉得我目前的设置很脏而且不稳定。提前致谢。