void ActionTest::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
{
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
CCLayerColor* box = (CCLayerColor*)this->getChildByTag(222);
CCSequence* seq1 = CCSequence::create(
CCMoveBy::create(2, ccp(200, 0)),
CCCallFuncND::create(this, callfuncND_selector(ActionTest::callback2), (void*)&x),
NULL
);
box->runAction(seq1); // 因为action对象时用create(其实就是new的),执行runAction,其实是将刚才创建的这个action对象添加到ActionManager中,然后,该函数(TouchEnded)退出,所以x被释放了。所以传递参数一定不要传局部变量的地址!
{
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
CCLayerColor* box = (CCLayerColor*)this->getChildByTag(222);
int x = 33;
CCSequence* seq1 = CCSequence::create(
CCMoveBy::create(2, ccp(200, 0)),
CCCallFuncND::create(this, callfuncND_selector(ActionTest::callback2), (void*)&x),
NULL
);
box->runAction(seq1); // 因为action对象时用create(其实就是new的),执行runAction,其实是将刚才创建的这个action对象添加到ActionManager中,然后,该函数(TouchEnded)退出,所以x被释放了。所以传递参数一定不要传局部变量的地址!
}
void ActionTest::callback2(CCNode* sender, void* data)
{
int m = *((int*)data);
}