cocos2d-x学习记录2——CCAction动作
CCAction能够使CCNode运动起来,能够呈现出多种多样的动作。这些动作能够改变其运动方向、形状、大小、旋转等。
同时,还可利用CCCallFunc、CCCallFuncN、CCCallFuncO、CCCallFuncND等函数实现回调。
MyScene.h代码
#ifndef MyScene_H_H
#define MyScene_H_H #include "cocos2d.h"
using namespace cocos2d; class MyScene : public CCLayer
{
public:
static CCScene* createScene();
virtual bool init();
CREATE_FUNC( MyScene ); void callback1();
void callback2(CCNode *node);
void callback3(CCObject *obj);
void callback4(CCNode *node, void *data); private:
}; #endif
MyScene.cpp代码
#include "MyScene.h" CCScene* MyScene::createScene()
{
CCScene *scene = CCScene::create();
MyScene *layer = MyScene::create();
scene->addChild(layer);
return scene;
}; bool MyScene::init()
{
if( !CCLayer::init() ){
return false;
} CCSize size = CCDirector::sharedDirector()->getWinSize();
CCSprite *sprite = CCSprite::create("pal4.png");
sprite->setAnchorPoint( ccp(0.5, 0.5) );
//sprite->setPosition( ccp(size.width/2, size.height/2) );
sprite->setPosition( ccp(, ) );
sprite->setScale(0.5f);
sprite->setTag();
addChild(sprite); CCAction *action1 = CCMoveTo::create(, ccp(size.width-sprite->getContentSize().width/, size.height-sprite->getContentSize().height/));
CCAction *action2 = CCRotateBy::create(, );
CCAction *action3 = CCBlink::create(, );
CCAction *action4 = CCCallFunc::create( this, callfunc_selector(MyScene::callback1) );
CCAction *action5 = CCCallFuncN::create( this, callfuncN_selector(MyScene::callback2) );
CCAction *action6 = CCCallFuncO::create( this, callfuncO_selector(MyScene::callback3), sprite );
CCAction *action7 = CCCallFuncND::create( this, callfuncND_selector(MyScene::callback4), "funcND" ); CCArray *array = CCArray::createWithCapacity();
array->addObject(action1);
array->addObject(action2);
array->addObject(action3);
array->addObject(action4);
array->addObject(action5);
array->addObject(action6);
array->addObject(action7);
//array->addObject(NULL);
//array->retain();
//CCAction *totoalAction = CCSequence::create( action1, action2, action3, action4, action5, action6, action7, NULL );
CCAction *totalAction = CCSequence::create(array);
sprite->runAction(totalAction); return true;
} void MyScene::callback1()
{
CCLog( "callback1" );
} void MyScene::callback2(CCNode *node)
{
CCLog( "%d", node->getTag() );
} void MyScene::callback3(CCObject *obj)
{
CCNode *node = dynamic_cast<CCNode*>(obj);
if( node != NULL ){
CCLog( "%d", node->getTag() );
}
} void MyScene::callback4(CCNode *node, void *data)
{
CCLog( "%d, %s", node->getTag(), data );
CCMessageBox( "Over!", "Info" );
}
callback1到callback4分别对应4种回调形式,只是各自带的参数不同而已。
运行结果:

cocos2d-x学习记录2——CCAction动作的更多相关文章
- UWP学习记录3-设计和UI之样式
UWP学习记录3-设计和UI之样式 1.颜色 在系统的“设置”>“个性化”>“颜色”里,提供了主题色选择.选定主题色后,会根据颜色亮度的 HSB 值创建浅色和深色的主题色. 应用可使用阴影 ...
- Java设计模式学习记录-命令模式
前言 这次要介绍的是命令模式,这也是一种行为型模式.最近反正没有面试机会我就写博客呗,该投的简历都投了.然后就继续看书,其实看书也会给自己带来成就感,原来以前不明白的东西,书上已经给彻底的介绍清楚了, ...
- NodeJS 学习记录
这里是我学习NodeJs的学习记录 URL:网址解析的好帮手 URL,URI 首先,URI是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源.而URL是u ...
- Python学习记录day8
目录 Python学习记录day8 1. 静态方法 2. 类方法 3. 属性方法 4. 类的特殊成员方法 4.1 __doc__表示类的描述信息 4.2 __module__ 和 __class__ ...
- Quartz 学习记录1
原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...
- Java 静态内部类与非静态内部类 学习记录.
目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...
- Apache Shiro 学习记录4
今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...
- UWP学习记录12-应用到应用的通信
UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...
- UWP学习记录11-设计和UI
UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...
随机推荐
- Python+Selenium笔记(六):元素定位
(一) 前言 Web应用以及包含超文本标记语言(HTML).层叠样式表(CSS).JS脚本的WEB页面,基于用户的操作(例如点击提交按钮),浏览器向WEB服务器发送请求,WEB服务器响应请求,返 ...
- 报错:java.net.bindexception: address already in use: jvm_bind:8080
原因:8080端口被占用 这说明80端口(该端口是Tomcat的监听端口)已经被其他程序占用,先用命令提示符 " netstat -ano " 命令显示端口状态,再在结果中找到端口 ...
- 获取指定时间的Date对象,IE和Chrome的区别(兼容IE)
网上的大多教程都是 new Date("2016-08-03 00:00:00"); 其实这是Chrome的写法,在IE中并不起作用,在IE中应为 new Date("2 ...
- QT学习2
一.常用控件与常用的功能函数. QDialog.QMainWindow.QPushButton.QLabel.QLineEdit 构造函数指定父容器.setText,getText,size,res ...
- Oracle中,时间的相关操作方法
无论是DATE还是timestamp都可以进行加减操作.可以对当前日期加年.月.日.时.分.秒,操作不同的时间类型,有三种方法: 1 使用内置函数numtodsinterval增加小时,分钟和秒2 加 ...
- Node.js环境搭建和学习(windwos环境)
Node.js环境搭建和学习 一.环境搭建 1.下载安装文件 下载地址http://nodejs-org.qiniudn.com/下载Node.js环境安装包,根据操作系统下载对应的安装包 下载地址 ...
- Spring hibernate 事务的流程
1 在业务方法开始之前 ①获取session ②把session和当前线程绑定,这样就可以在Dao中使用SessionFactory的getCurrentSession()方法来获取session了 ...
- digital ocean 内存不足时增加swap文件的方法
买了比较低配的digitalocean 云主机,在执行composer update的时候出现内存不足的问题,但是内存大小已经固定了,除非加钱,还有别的方法吗? 有,增加swap分区,这样就可以弥补内 ...
- How to display values with in piechart using Jfreechart(values in sector )
I am using Jfreechart to create pie charts. Values are displayed outside pie chart as labels. I want ...
- python第三十课--异常(with as操作)
演示with...as...操作 path=r'kaifanglist1.txt' with open(path,'r',encoding='utf-8') as fr: print(fr.read( ...