我使用了一下方法创建了一个Scene,并在里面添加了些Sprite,都能正常显示
但是当我用CCTimer去调用addSprite()函数来添加Sprite的时候,addSprite函数一直没调用到。
不管是用
CCTimer::timerWithTarget(this, schedule_selector(Controllers::addSprite), 0.01);
还是用
CCTimer* t = new CCTimer();
t->setInterval(0.1);
t->initWithTarget(this, schedule_selector(Controllers::addSprite));
都没理法调用到addSprite函数.
不知道为什么?
在程序入口使用了以下方法新建一个controllers类
CCScene* con = Controllers::scene();
CCDirector::sharedDirector()->replaceScene(con);
Controllers类代码
#include “Controllers.h”
#include “GameResources.h”
USING_NS_CC;
CCScene* Controllers::scene()
{
CCScene * scene = NULL;
do
{
scene = CCScene::create();
CC_BREAK_IF(! scene);
Controllers *layer = Controllers::create();
CC_BREAK_IF(! layer);
layer->setPosition(0,0);
scene->addChild(layer);
}while(0);
return scene;
}
bool Controllers::init()
{
bool hasInitialize = false;
do{
CC_BREAK_IF(!CCLayer::init());
//get windows size
CCSize size= CCDirector::sharedDirector()->getWinSize();
//add close button
CCMenuItemImage closeItem = CCMenuItemImage::create(s_b_closeNormal, s_b_closeSelected, this, menu_selector(Controllers::closeItmeCallBack));
closeItem->setPosition(ccp(size.width - closeItem->getContentSize().width/2, closeItem->getContentSize().height/2));
CCMenu closeMenu = CCMenu::create(closeItem, NULL);
closeMenu->setPosition(CCPointZero);
CCSprite *background = CCSprite::create(s_i_helooBackground);
background->setPosition(ccp(size.width/2, size.height/2));
this->addChild(background,0);
this->addChild(closeMenu);
CCTimer::timerWithTarget(this, schedule_selector(Controllers::addSprite), 0.01);
CCTimer* t = new CCTimer();
t->setInterval(0.1);
t->initWithTarget(this, schedule_selector(Controllers::addSprite));
t->release();
addSprite(0.3);
hasInitialize = true;
}while(0);
return hasInitialize;
}
void Controllers::closeItmeCallBack(CCObject* pSender)
{
CCDirector::sharedDirector()->end();
}
void Controllers::addSprite(float fl)
{
CCSprite* ch = CCSprite::create(as_18);
ch->setPosition(ccp(this->getChildrenCount() * 30, this->getChildrenCount() * 30));
this->addChild(ch);
}