cocos2d-x——CCCallFunc家族例子
2013-10-31 11:31
274 查看
boolHelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
returnfalse;
}
CCSprite *sp = CCSprite::create("Icon.png");
sp->setPosition(ccp(100,100));
this->addChild(sp,0, 1);
CCLabelTTF *ttf = CCLabelTTF::create("函数回调动作","宋体",24);
CCMenuItemLabel *label =CCMenuItemLabel::create(ttf,this,menu_selector(HelloWorld::menuCallback));
label->setPosition(ccp(0,80));
CCMenu *menu = CCMenu::create(label,NULL);
this->addChild(menu);
returntrue;
}
voidHelloWorld::menuCallback(CCObject* pSender)
{
CCSprite* sp = (CCSprite*)this->getChildByTag(1);
CCActionInterval* move = CCMoveTo::create(1,ccp(300,sp->getPositionY()));
// //1
CCCallFunc * funCall =CCCallFunc::create(this,callfunc_selector(HelloWorld::callbackC));
//2
//CCCallFuncN * funCall =CCCallFuncN::create(this, callfuncN_selector(HelloWorld::callbackN));
//3
// float *data = (float*)malloc(sizeof(float));
// *data = 200;
// CCCallFuncND * funCall =CCCallFuncND::create(this, callfuncND_selector(HelloWorld::callbackND), (void*)data);
// //4
// CCSprite *sp1 = CCSprite::create("Icon-72.png");
// CCCallFuncO * funCall =CCCallFuncO::create(this, callfuncO_selector(HelloWorld::callbackO), (CCObject*)sp1);
//
CCFiniteTimeAction *seq =CCSequence::create(move,funCall,NULL);
sp->runAction(seq);
((CCMenuItemLabel *)pSender)->setEnabled(false);
}
voidHelloWorld::callbackC()
{
CCSprite* sp = (CCSprite*)this->getChildByTag(1);
this->removeChild(sp);
CCLabelTTF *ttf = CCLabelTTF::create("移动动作执行完毕","仿宋",24);
ttf->setPosition(ccp(300,150));
this->addChild(ttf);
}
voidHelloWorld::callbackN(CCNode* sender)
{
this->removeChild(sender);
CCLabelTTF *ttf = CCLabelTTF::create("N移动动作执行完毕","仿宋",24);
ttf->setPosition(ccp(300,150));
this->addChild(ttf);
}
voidHelloWorld::callbackND(CCNode* sender,void* data)
{
this->removeChild(sender);
float y = *(float*)data;
char str[100];
sprintf(str,"ND移动动作执行完毕, 传过来的数据是:%f",
y);
CCLabelTTF *ttf = CCLabelTTF::create(str, "仿宋",24);
ttf->setPosition(ccp(300, y));
free(data);
this->addChild(ttf);
}
voidHelloWorld::callbackO(CCObject* sender)
{
CCLabelTTF *ttf = CCLabelTTF::create("O移动动作执行完毕","仿宋",24);
ttf->setPosition(ccp(300,150));
this->addChild(ttf);
CCSprite *sp = (CCSprite*)sender;
sp->setPosition(ccp(300,100));
this->addChild(sp, -1);
}
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
returnfalse;
}
CCSprite *sp = CCSprite::create("Icon.png");
sp->setPosition(ccp(100,100));
this->addChild(sp,0, 1);
CCLabelTTF *ttf = CCLabelTTF::create("函数回调动作","宋体",24);
CCMenuItemLabel *label =CCMenuItemLabel::create(ttf,this,menu_selector(HelloWorld::menuCallback));
label->setPosition(ccp(0,80));
CCMenu *menu = CCMenu::create(label,NULL);
this->addChild(menu);
returntrue;
}
voidHelloWorld::menuCallback(CCObject* pSender)
{
CCSprite* sp = (CCSprite*)this->getChildByTag(1);
CCActionInterval* move = CCMoveTo::create(1,ccp(300,sp->getPositionY()));
// //1
CCCallFunc * funCall =CCCallFunc::create(this,callfunc_selector(HelloWorld::callbackC));
//2
//CCCallFuncN * funCall =CCCallFuncN::create(this, callfuncN_selector(HelloWorld::callbackN));
//3
// float *data = (float*)malloc(sizeof(float));
// *data = 200;
// CCCallFuncND * funCall =CCCallFuncND::create(this, callfuncND_selector(HelloWorld::callbackND), (void*)data);
// //4
// CCSprite *sp1 = CCSprite::create("Icon-72.png");
// CCCallFuncO * funCall =CCCallFuncO::create(this, callfuncO_selector(HelloWorld::callbackO), (CCObject*)sp1);
//
CCFiniteTimeAction *seq =CCSequence::create(move,funCall,NULL);
sp->runAction(seq);
((CCMenuItemLabel *)pSender)->setEnabled(false);
}
voidHelloWorld::callbackC()
{
CCSprite* sp = (CCSprite*)this->getChildByTag(1);
this->removeChild(sp);
CCLabelTTF *ttf = CCLabelTTF::create("移动动作执行完毕","仿宋",24);
ttf->setPosition(ccp(300,150));
this->addChild(ttf);
}
voidHelloWorld::callbackN(CCNode* sender)
{
this->removeChild(sender);
CCLabelTTF *ttf = CCLabelTTF::create("N移动动作执行完毕","仿宋",24);
ttf->setPosition(ccp(300,150));
this->addChild(ttf);
}
voidHelloWorld::callbackND(CCNode* sender,void* data)
{
this->removeChild(sender);
float y = *(float*)data;
char str[100];
sprintf(str,"ND移动动作执行完毕, 传过来的数据是:%f",
y);
CCLabelTTF *ttf = CCLabelTTF::create(str, "仿宋",24);
ttf->setPosition(ccp(300, y));
free(data);
this->addChild(ttf);
}
voidHelloWorld::callbackO(CCObject* sender)
{
CCLabelTTF *ttf = CCLabelTTF::create("O移动动作执行完毕","仿宋",24);
ttf->setPosition(ccp(300,150));
this->addChild(ttf);
CCSprite *sp = (CCSprite*)sender;
sp->setPosition(ccp(300,100));
this->addChild(sp, -1);
}
相关文章推荐
- cocos2d-x——CCActionInterval(延时动作)例子
- cocos2d-x——CCCallFunc家族
- cocos2d-x——(CCSpeed)可调整速度动作
- Cocos2d-x——瞬时动画例子
- cocos2d-x——跟随动作
- cocos2d-x 2.1.2 bug发现
- Cocos2d-x ——Action (动作)简介
- cocos2d-x ——菜单层(CCMenuItemToggle)五
- cocos2d-x ——菜单层(CCMenuItemImage)四
- cocos2d-x ——菜单层(CCMenuItemSprite)三
- Cocos2d-x ——菜单层(CCMenuItemLabel) 一
- cocos2d-x ——菜单层(CCMenuItemFont)二
- cocos2d-x——CCLabelBMFont(汉字艺术文本)
- Cocos2d-x——CCLabelAtlas (英文艺术文本)
- cocos2d-x——CCLabelTTF(基本文本)
- Cocos2d-x ——CCMenu菜单层的简介
- Cocos2d-x——场景切换的例子
- Cocos2d-x ——CCLabel 文本标签简介
- cocos2d-x aplha3.0中添加touch事件
- VS2010配置Cocos2dx不需要复制cocos2dx和CocosDenshion