#define menu_selector(_SELECTOR) (SEL_MenuHandler)(&_SELECTOR)是什么意思??

这个很简单。请看说明

typedef void (CCObject::*SEL_MenuHandler)(CCObject*);

#define menu_selector(_SELECTOR) (SEL_MenuHandler)(&_SELECTOR)

void HelloWorld::exit(CCObject *pSender)
{CCLog("exit");}

上面一行:typedef是一个类型定义符号。定义了一个数据类型,在这里定义了一个函数类型,函数名叫SEL_MenuHander。参数类型是CCObject *,返回值是void。注意:CCObject::*SEL_MenuHander的意思是,限定了函数必须为CCObject的成员函数。如果不限定就类似:typdef
void (*myFun)(int),声明了一个函数类型myFun

下面一行:#define是宏定义。比如我们这样写menu_selector(HelloWorld::call_exit)。就等于(SEL_MenuHander)(&HelloWorld::call_exit),先将我们helloWorld里面的函数call_exit取地址,然后强制转换为SEL_MenuHander函数类型。强制转换完就能作为参数传递给其他函数了。

时间: 2024-10-10 05:27:04

#define menu_selector(_SELECTOR) (SEL_MenuHandler)(&_SELECTOR)是什么意思??的相关文章

Cocos2dx选择器

今天学习cocos2dx的时候发现原来所有选择器要求传递的回调函数的参数是有限制的,看了库中的定义后就遇到的整理如下,仅供参考,Cocos2dx版本2.2.3: ? 选择器参数说明 schedule_selector(浮点数)[float dt] ? callfunc_selector(无参数)[void] ? callfuncn_selector(节点)[CCNode *node] ? callfuncND_selector(节点,任意参数)[CCNode *node,void *any] ?

[cocos2dx]cocos2dx主要类

CCObject CCObject.h: #ifndef __CCOBJECT_H__ #define __CCOBJECT_H__ #include "platform/CCPlatformMacros.h" //Cocos2d命名空间 NS_CC_BEGIN //声明以下几种类,在后面会定义相应类的成员变量的指针.以下几个类均是CCObject类的派生类. class CCZone; //CCObject指针暂存类 class CCObject;//基类 class CCNode;

Cocos2d-x学习笔记(十)scheduler及Cocos2dx的回调

原创文章,转载请注明出处:http://blog.csdn.net/sfh366958228/article/details/38893795 前言 看完了前九节的学习笔记,我们已经基本上可以做一些简单的界面了,但是如果我们想要让东西不断动起来怎么办呢?答案很简单,用scheduler,我们先来看看schedule的用法吧. scheduler用法 在之前CCNode的学习中,我们介绍了部分schedule的方法,现在我们来回顾一下: // 返回指定计划是否正在执行 bool isSchedul

1.cocos2dx它Menu(CCMenuItemFont,CCMenuItemImage,CCMenuItemLabel,CCMenuItemSprite,CCMenuItemToggle)

 CCMenu 基本结构 CCMenu继承自CCLayer,本质是一个容器.须要被addChild到父类中去. CCMenuItem是菜单项,它有例如以下子类: CCMenuItemFont;CCMenuItemImage;CCMenuItemLabel;CCMenuItemSprite;CCMenuItemToggle; 是真正的须要实例化的菜单项.须要addChild到CCMenu对象中去. 演示样例: CCMenuItem * item = CCMenuItemFont::create

1.cocos2dx之Menu(CCMenuItemFont,CCMenuItemImage,CCMenuItemLabel,CCMenuItemSprite,CCMenuItemToggle)

 CCMenu 基本结构 CCMenu继承自CCLayer,本质是一个容器.需要被addChild到父类中去. CCMenuItem是菜单项,它有如下子类: CCMenuItemFont;CCMenuItemImage;CCMenuItemLabel;CCMenuItemSprite;CCMenuItemToggle; 是真正的需要实例化的菜单项.需要addChild到CCMenu对象中去. 示例: CCMenuItem * item = CCMenuItemFont::create("St

[当我在研究Cocos-2dx的源代码时,我在想什么]-Ref类,一切的起源

[名词解释] 引用计数:引用计数是现代内存管理中常常使用到的一个概念.它的基本思想是通过计数方式实现多个不同对象同一时候引用一个共享对象,详细地讲,当创建一个对象的实例并在堆上分配内存时,对象的引用计数为1,在其它对象中须要持有这个共享对象时.须要把共享对象的引用计数加1.当其它对象不再持有该共享对象时,共享对象的引用计数减1,当共享对象的引用计数变成0时.对象的内存会被马上释放.(部分截取自维基百科). 比較著名的使用引用计数的有COM和Objective-C,在COM的IUnknow接口中定

Cocos2d-X3.0 刨根问底(六)----- 调度器Scheduler类源码分析

上一章,我们分析Node类的源码,在Node类里面耦合了一个 Scheduler 类的对象,这章我们就来剖析Cocos2d-x的调度器 Scheduler 类的源码,从源码中去了解它的实现与应用方法. 直入正题,我们打开CCScheduler.h文件看下里面都藏了些什么. 打开了CCScheduler.h 文件,还好,这个文件没有ccnode.h那么大有上午行,不然真的吐血了, 仅仅不到500行代码.这个文件里面一共有五个类的定义,老规矩,从加载的头文件开始阅读. #include <funct

Cocos2d-x3.1回调函数详解

Cocos2d-x3.1中回调函数的定义在CCRef.h中声明,源码如下: typedef void (Ref::*SEL_CallFunc)(); typedef void (Ref::*SEL_CallFuncN)(Node*); typedef void (Ref::*SEL_CallFuncND)(Node*, void*); typedef void (Ref::*SEL_CallFuncO)(Ref*); typedef void (Ref::*SEL_MenuHandler)(Re

Cocos2d-X学习之Ref类

先看看定义该类的头文件--CCRef.h 1 /**************************************************************************** 2 Copyright (c) 2010-2012 cocos2d-x.org 3 Copyright (c) 2013-2014 Chukong Technologies 4 5 http://www.cocos2d-x.org 6 7 Permission is hereby granted,