Cocos2d-x教程(18)-回调函数的使用

来源:未知 责任编辑:责任编辑 发表时间:2014-01-25 11:31 点击:

欢迎加入 Cocos2d-x 交流群: 193411763

转载时请注明原文出处 : http://blog.csdn.net/u012945598/article/details/17882791

在Cocos2d-x中,为我们提供了很多种类型的回调函数。之前我们提过,CCCallFunc就是一种看不见的动作,它的定义位于CCActionInstant.h文件中,属于瞬时动作的一种,它的作用就是回调某个类中的方法,今天我们来学习一下CCCallFunc系列函数的使用方法。

1.CCCallFunc类派生自CCActionInstant类,typedef void (CCObject::*SEL_CallFunc)()用于创建一个无参数的回调

2.CCCallFuncN类派生自CCCallFunc类,typedef void (CCObject::*SEL_CallFuncN)(CCNode*)用于创建一个带执行者的回调

3.CCCallFuncND类与CCCallFuncO类均派生自CCCallFuncN类,前者创建的回调函数可以带一个执行者以及一个void *类型的参数,后者创建的回调回调函数我们在Cocos2d-x的观察者模式中经常会见到,可以带一个CCObject *类型的的参数

对于void *类型,我们需要注意的一个地方是,不要把指向void类型理解为能指向任何类型的数据,而应该理解为指向空类型或不指向确定的类型的数据。如果指针变量不指定一个确定的数据类型,它是无法访问任何一个具体的数据的,它只提供一个地址。换句话说,在使用void *类型时,我们必须将它转换成一个确定的数据类型的数据,才能访问实际存在的数据。

下面我们通过代码来看一下四种回调函数的使用方法。

新建一个工程,我们在HelloWorld.h文件中声明四种对应回调方法:

\

然后在HelloWorld.cpp文件中的init()方法中分别创建四种回调函数:

\


\


创建CCCallFunc时使用的create()方法第一个参数为目标对象,在create()方法内部实际要执行一个initWithTarget的函数,会保留当前的目标对象防止被释放(以下代码位于CCActionInstant.cpp文件中)

\


运行项目,看一下控制台输出结果:<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20140106/2014010609171273.png" alt="">

此处我们可以看到参数传递成功。四种动作的执行者,其中三个为this,一个为sprite,根据节点绘制的优先级,先执行的是三个this所执行的动作,sprite执行的动作是最后一个执行的。

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • cocos2d-x学习笔记(19)--label 、label atlas
    • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
    • Cocos2d-x学习(一):HelloWorld
    • cocos2dx在xcode下开发,编译到android上(2)
    • cocos2d 设置屏幕默认方向
    • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
    • Cocos2d-x 2.0 之 Actions “三板斧” 之一
    • cocos2d-x学习笔记(18)--游戏打包(windows平台)
    • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1