我有一个类似于项目模板中的HelloWorldScene的GameScene类。如何使用另一个类中的addChild方法在GameScene的场景中添加精灵和显示?
示例,我有2个类:GameScene和Board是普通类。在GameScene的init方法中,我使用board调用board-> initBoard()是Board类的对象。我如何在initBoard()中添加addChild(sprite)?
我尝试了一些方法,但它仍然没有成功。我使用的是Cocos2d-x v3.0rc1。
答案 0 :(得分:0)
首先,这是一个糟糕的设计!为什么子类在初始化时会向其父级添加内容? 但如果这是一个要求,那么我会做类似的事情,
糟糕的方式
(在GameScene中) Board * board = new Board(); 这 - >的addChild(板); 板级> initBoard();
meanwhile in boardclass,
void Board::initBoard(){
.
.
.
getParent()->addChild(sprite);
}
即使我不喜欢它,它也会起作用。 另一种方式是,
好的方式......
Board::initBoardWithParent(GameScene* scene){
.
.
.
scene->addChild(sprite);
}
在GameScene ......
Board* board = new Board();
board->initBoardWithParent(this);
在这种情况下(对某些人来说),错误开始弹出...所以确保你的场景是用预处理器声明的...否则会让你的编译器尖叫,因为它会疯狂编译GameScene,因为它正在使用董事会本身正在使用GameScene ...
#ifndef __GAME_SCENE_H__
#define __GAME_SCENE_H__
...
...
class GameScene : ....
#endif // __GAME_SCENE_H__
体面的方式......
另一方面,你会覆盖你的Board类的ADDCHILD方法...... 当你这样做时,请确保传递一个额外的参数,表明这是一个特殊的ADDCHILD,并且一旦你到达那里......使用前面提到的两种方法中的任何一种将精灵添加到GameScene对象。
希望这有帮助!