//创建类的对象,并返回相应类的指针
/*** define a create function for a specific type, such as CCLayer* @__TYPE__ class type to add create(), such as CCLayer*/
#define CREATE_FUNC(__TYPE__) \
static __TYPE__* create() \
{ \__TYPE__ *pRet = new __TYPE__(); \if (pRet && pRet->init()) \{ \pRet->autorelease(); \return pRet; \} \else \{ \delete pRet; \pRet = NULL; \return NULL; \} \
}

#ifndef _ROTATE_WORLD_TEST_H_
#define _ROTATE_WORLD_TEST_H_#include "../testBasic.h"class RotateWorldTestScene : public TestScene
{
public:virtual void runThisTest();
};class SpriteLayer : public CCLayer
{
public:virtual void onEnter();CREATE_FUNC(SpriteLayer)
};class TestLayer : public CCLayer
{
public:virtual void onEnter();CREATE_FUNC(TestLayer)
};class RotateWorldMainLayer : public CCLayer
{
public:virtual void onEnter();CREATE_FUNC(RotateWorldMainLayer)
};#endif

init()和onEnter()这俩个方法都是CCNode的方法。其区别如下:

1.其被调用的顺序是先init(),后onEnter()。

2.init()在类的初始化时只会调用一次。

3.onEnter在该类被载入场景的时候被调用,可能会发生多次。

4.CCLayer* cclayer = new MyLayer();

这种情况下,只会触发onEnter。

5.CCLayer* cclayer = MyLayer::create();

这样情况下,既会触发init()方法,也会触发onEnter()方法。

#include "RotateWorldTest.h"
#include "../testResource.h"//------------------------------------------------------------------
//
// TestLayer
//
//------------------------------------------------------------------
void TestLayer::onEnter()
{CCLayer::onEnter();float x,y;CCSize size = CCDirector::sharedDirector()->getWinSize();x = size.width;y = size.height;//CCMutableArray *array = [UIFont familyNames];//for( CCString *s in array )//    NSLog( s );CCLabelTTF* label = CCLabelTTF::create("cocos2d", "Tahoma", 64);label->setPosition( ccp(x/2,y/2) );addChild(label);
}//------------------------------------------------------------------
//
// SpriteLayer
//
//------------------------------------------------------------------
void SpriteLayer::onEnter()
{CCLayer::onEnter();float x,y;CCSize size = CCDirector::sharedDirector()->getWinSize();x = size.width;y = size.height;CCSprite* sprite = CCSprite::create(s_pPathGrossini);CCSprite* spriteSister1 = CCSprite::create(s_pPathSister1);CCSprite* spriteSister2 = CCSprite::create(s_pPathSister2);sprite->setScale(1.5f);spriteSister1->setScale(1.5f);spriteSister2->setScale(1.5f);sprite->setPosition(ccp(x/2,y/2));spriteSister1->setPosition(ccp(40,y/2));spriteSister2->setPosition(ccp(x-40,y/2));CCAction *rot = CCRotateBy::create(16, -3600);addChild(sprite);addChild(spriteSister1);addChild(spriteSister2);sprite->runAction(rot);CCActionInterval *jump1 = CCJumpBy::create(4, ccp(-400,0), 100, 4);CCActionInterval *jump2 = jump1->reverse();CCActionInterval *rot1 = CCRotateBy::create(4, 360*2);CCActionInterval *rot2 = rot1->reverse();spriteSister1->runAction(CCRepeat::create( CCSequence::create(jump2, jump1, NULL), 5 ));spriteSister2->runAction(CCRepeat::create( CCSequence::create((CCFiniteTimeAction *)(jump1->copy()->autorelease()), (CCFiniteTimeAction *)(jump2->copy()->autorelease()), NULL), 5 ));spriteSister1->runAction(CCRepeat::create( CCSequence::create(rot1, rot2, NULL), 5 ));spriteSister2->runAction(CCRepeat::create( CCSequence::create((CCFiniteTimeAction *)(rot2->copy()->autorelease()), (CCFiniteTimeAction *)(rot1->copy()->autorelease()), NULL), 5 ));
}//------------------------------------------------------------------
//
// RotateWorldMainLayer
//
//------------------------------------------------------------------void RotateWorldMainLayer::onEnter()
{CCLayer::onEnter();float x,y;CCSize size = CCDirector::sharedDirector()->getWinSize();x = size.width;y = size.height;//创建4个颜色不一样的层CCNode* blue =  CCLayerColor::create(ccc4(0,0,255,255));CCNode* red =   CCLayerColor::create(ccc4(255,0,0,255));CCNode* green = CCLayerColor::create(ccc4(0,255,0,255));CCNode* white = CCLayerColor::create(ccc4(255,255,255,255));//将另一个层加到该层中blue->setScale(0.5f);blue->setPosition(ccp(-x/4,-y/4));blue->addChild( SpriteLayer::create() );red->setScale(0.5f);red->setPosition(ccp(x/4,-y/4));green->setScale(0.5f);green->setPosition(ccp(-x/4,y/4));green->addChild(TestLayer::create());white->setScale(0.5f);white->setPosition(ccp(x/4,y/4));white->ignoreAnchorPointForPosition(false);white->setPosition(ccp(x/4*3,y/4*3));addChild(blue, -1);addChild(white);addChild(green);addChild(red);CCAction* rot = CCRotateBy::create(8, 720);//对4个层做动作blue->runAction(rot);red->runAction((CCAction *)(rot->copy()->autorelease()));green->runAction((CCAction *)(rot->copy()->autorelease()) );white->runAction((CCAction *)(rot->copy()->autorelease()) );
}void RotateWorldTestScene::runThisTest()
{CCLayer* pLayer = RotateWorldMainLayer::create();addChild(pLayer);runAction( CCRotateBy::create(4, -360) );CCDirector::sharedDirector()->replaceScene(this);}

RotateWorldTest对层动作相关推荐

  1. java dao层编写及注释_JAVA代码注释规范

    2. 班级: 班级的目的,即班级完成的功能,以及班级的创建时间和作者姓名:当多个人一次编辑或修改同一个班级时, 作者姓名中应出现多个姓名: 3. 接口: 在满足类注释的基础上,接口注释应包含设置接口的 ...

  2. Meta祭出元宇宙「阿拉丁神灯」!LeCun称世界模型将带来像人一样的AI

      视学算法报道   编辑:桃子 好困 袁榭 拉燕 [新智元导读]2022年2月24日凌晨,在Meta AI实验室讨论会上,小扎亲自带队公布了多项技术内容:语音生成元宇宙场景的Builder Bot. ...

  3. Yann LeCun:未来几十年AI研究的最大挑战是「预测世界模型」

    来源:机器之心 本文约4000字,建议阅读8分钟 本文为你介绍一种叫做分层 JEPA(联合嵌入预测架构)的架构. LeCun 认为,构造自主 AI 需要预测世界模型,而世界模型必须能够执行多模态预测, ...

  4. Yann LeCun 最新发声:自监督+世界模型,让 AI 像人类与一样学习与推理

    来源:AI科技评论 本文约6100字,建议阅读10+分钟 Yann LeCun提倡下一代AI系统将不再依赖于精心标注的数据集. 如何突破当代人工智能(AI)的瓶颈?不同学者存在不同观点. 总体来看可以 ...

  5. 图灵奖获得者Yann LeCun:未来几十年AI研究的最大挑战是「预测世界模型」

    来源:机器之心 LeCun 认为,构造自主 AI 需要预测世界模型,而世界模型必须能够执行多模态预测,对应的解决方案是一种叫做分层 JEPA(联合嵌入预测架构)的架构.该架构可以通过堆叠的方式进行更抽 ...

  6. html语言中,定义文档中一个正在打开的链接的颜色的代码是,2017微软认证考试精选练习(附答案)...

    2017微软认证考试精选练习(附答案) 1.如果要使图像在缩放时不失真,在图像显示原始大小时,按下( )键,拖动 图像右下方 的控制点,可以按比例调整图像大小 B A. Ctrl B. Shift C ...

  7. 利用Spring框架封装的JavaMail现实同步或异步邮件发送

    利用Spring框架封装的JavaMail现实同步或异步邮件发送 作者:张纪豪 J2EE简单地讲是在JDK上扩展了各类应用的标准规范,邮件处理便是其中一个重要的应用.它既然是规范,那么我们就可以通过J ...

  8. RDBMS运行过程示例

    ① 用户A通过应用程序A向RDBMS发出调用数据库数据的命令,命令中给出关系名和查找条件 ② RDBMS 首先对命令进行语法检查,通过后进行语义检查和存取权限检查.具体:RDBMS查数据字典,检查是否 ...

  9. CoreAnimation编程指南(一)概念

    一.概述 1.核心动画是一套包含图形绘制,投影,动画的Objective–C类集合.它通过开发人员所熟悉的应用程序套件和Cocoa Touch视图架构的抽象分层模式,同时使用先进的合作效果提供了一套流 ...

最新文章

  1. 负载均衡服务器nginx详细安装教程及网络部署
  2. 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)...
  3. 研旭电子dsp配套程序_为什么自动调音DSP还火不了?
  4. Got error -1 when reading table
  5. CRM Fiori Application opptListRefreshed
  6. linux内核编译安装,编译安装Linux内核
  7. java线上问题定位_线上java.lang.OutOfMemoryError问题定位三板斧
  8. 句句真研—每日长难句打卡Day7
  9. ui li 菜单 点击添加下级_如何制作导航栏中的下拉菜单
  10. 网页无法正常显示Lato字体,绕路而行
  11. 两年开发工作总结及未来展望
  12. Relay和Rendezvous
  13. Elasticsearch 原理,安装,生产配置以及常见CRUD,ILM管理,常见API解析,go-elasticsearch-client使用
  14. 设置一绝对地址为0x67a9的整型变量的值为0xaa66
  15. 最新系统[防黑屏版]BT及双网盘下载(ZZ)
  16. 教你微信怎么加更多好友的绝佳方法
  17. 公众号开发素材管理效果演示-微信开发素材管理1
  18. 小白学NLP学习笔记-入门
  19. ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map
  20. 为了上班摸鱼我用Python制作了俄罗斯方块?

热门文章

  1. ctime、mtime、atime
  2. 基于XMPP协议的aSmack源码分析
  3. [C++] C++风格的强制类型转换探讨
  4. Android 实现文件上传功能(upload)
  5. 学习使用TryParse方法
  6. C语言 —— 关键字(C语言标准定义的32个关键字:auto、register、static、sizeof、signed、unsigned 、break 、 continue 、void)
  7. 读文件 —— WEB前端读取本地文件内容哪些事(前台解析txt文件)……
  8. redis配置主从复制
  9. (转)flask的context机制
  10. 2018面向对象程序设计(Java)第3周学习指导及要求