动作回调函数 (CallFunc,CallFuncN,CCCallFuncND)

动作回调函数 (例子)

 1 bool HelloWorld::init()
 2 {
 3     //////////////////////////////
 4     // 1. super init first
 5     if ( !Layer::init() )
 6     {
 7         return false;
 8     }
 9
10     Size visibleSize = Director::getInstance()->getVisibleSize();
11     Vec2 origin = Director::getInstance()->getVisibleOrigin();
12 ///////////////     动作回掉函数            /////////////////
13
14     Sprite* sprite = Sprite::create("button.png");
15     sprite->setPosition(Vec2(visibleSize.width * 0.2, visibleSize.height * 0.5));
16     this->addChild(sprite);
17
18     ActionInterval *move = MoveTo::create(3, Vec2(visibleSize.width * 0.8, visibleSize.height * 0.5));
19
20     // 空的动作回调函数
21     ActionInstant *func = CallFunc::create(this, callfunc_selector(HelloWorld::funcCallBack));
22     // 带一个参数的动作回掉函数(参数是 Node 类型的)
23     ActionInstant *funcN = CallFuncN::create(this, callfuncN_selector(HelloWorld::funcNCallBack));
24     // 带两个参数的动作回调函数(参数是 Node 类型的, 传递的数据)
25     ActionInstant *funcND = CCCallFuncND::create(this, callfuncND_selector(HelloWorld::funcNDCallBack),(void*) 10);
26
27     // 每隔 1s执行一个动作
28     sprite->runAction(Sequence::create(move, DelayTime::create(1.0f), func, DelayTime::create(3.0f), funcN, DelayTime::create(3.0f), funcND, nullptr));
29
30
31     ///////////////     动作回掉函数            /////////////////
32
33
34
35     return true;
36 }
37
38 // 无参的回调函数
39 void HelloWorld::funcCallBack(){
40
41     log("action end");
42 }
43
44 // 获取精灵的回调函数;精灵变大 3 倍
45 void HelloWorld::funcNCallBack(Node *pSender){
46
47     Sprite* sprite = (Sprite*)pSender;
48     ActionInterval *scale = ScaleTo::create(1.0f, 3.0f);
49     sprite->runAction(scale);
50 }
51
52 // 获取精灵和数据的回调函数:精灵移动到(200,200)的位置,并输出 data 的值
53 void HelloWorld::funcNDCallBack(cocos2d::Node *pSender, void* data){
54
55     Sprite* sprite = (Sprite*)pSender;
56     ActionInterval *move = MoveTo::create(1.0f, Vec2(200,200));
57     sprite->runAction(move);
58
59     log("data %d", data);
60 }

在精灵运动到指定位置后

1s后控制台才输出  action end 语句

3s后精灵变大3倍

3s后精灵移动到(200,200)位置处并输出  data  10

时间: 2024-10-26 20:02:50

动作回调函数 (CallFunc,CallFuncN,CCCallFuncND)的相关文章

cocos2dx中的假动作,又称动作回调函数

1.动作与动画的区别 动作是:定时器+属性的改变,是帧循环的累积效应 动画是:帧图片的播放效果,我们知道电影的播放就是快速播放的胶片,这就是动画的原理 2.假动作:又称动作回调函数 四大类假动作: callfunc_selector()        对应的回调函数是:void funcCallBack(); callfuncN_selector()      对应的回调函数是:void funcNCallBack(CCNode *node); callFuncND_selector()   对

cocos2d 动作回调函数

// on "init" you need to initialize your instance bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !CCLayer::init() ) { return false; } CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); C

cocos3 动作回调函数

FiniteTimeAction *actionOne = Sequence::create( CCScaleTo::create(1.0f,0.5f,1.5f), CCFadeIn::create(1.0f), CCCallFunc::create(this,callfunc_selector(HelloWorld::actionCallBack)), NULL ); sp->runAction(actionOne);

cocos2dx动作结束回调函数的用法

cocos2dx中一个action结束后想正确使用回调函数 要用如下写法 CCFiniteTimeAction *actionOne = CCSequence::create( CCScaleTo::create(1.0f,0.5f,1.5f), CCFadeIn::create(1.0f), CCCallFunc::create(this,callfunc_selector(xx::menuSetVisableFalse)), NULL );

Cocos2d-x 3.x中新的回调函数归纳

由于引入了C++ 11特性,cocos2d-x 3.x中许多实现方案,相对于以前的cocos2d-x 2.x,都有了很大的改进,当然性能上也得到一定的提升. 本文关注的是回调函数从2.x到3.x的变化. cocos2d-x 2.x时代的回调函数 2.X时代主要使用CCCallFunc.CCCallFuncN和CCCallFuncND等几种方式实现. CCCallFunc.CCCallFuncN和CCCallFuncND都用来创建带有回调函数的动作,区别主要在于回调函数是否带有参数. 2.x时代实

【Cocos2d-x 3.0 基础系列一】 各类回调函数写法汇总

一.button回调 1. Lambda 表达式,C++11 Lambda 赋予了Cocos2d-x 3.0创建回调函数的灵活性. auto itemNor = Sprite::create("CloseNormal.png"); auto menuItem = MenuItemSprite::create(itemNor,nullptr,nullptr,[](Ref* sender) { log("show this msg."); }); auto menu =

cocos2dx 3.x 关于action的回调函数

auto bgPic = Sprite :: create( "StartGameBg.jpg" ); bgPic ->setContentSize ( Size( 800.0f , 1246.0f)); bgPic ->setPosition ( Vec2( visibleSize .width / 2 , - bgPic -> getContentSize(). height /2 + visibleSize . height)); this -> addC

Cocos2d-x 3.0 回调函数

一.按钮回调 1. Lambda 表达式,C++11 Lambda 赋予了Cocos2d-x 3.0创建回调函数的灵活性. [cpp] view plaincopy auto itemNor    =   Sprite::create("CloseNormal.png"); auto menuItem   =   MenuItemSprite::create(itemNor,nullptr,nullptr,[](Ref* sender) { log("show this ms

Python 多进程实战 & 回调函数理解与实战

这篇博文主要讲下笔者在工作中Python多进程的实战运用和回调函数的理解和运用. 多进程实战 实战一.批量文件下载 从一个文件中按行读取 url ,根据 url 下载文件到指定位置,用多进程实现. #!/usr/local/python27/bin/python2.7 from multiprocessing import Process,Pool import os,time,random,sys import urllib # 文件下载函数 def filedown(url,file):