RotateWorldTest对层动作
//创建类的对象,并返回相应类的指针 /*** 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对层动作相关推荐
- java dao层编写及注释_JAVA代码注释规范
2. 班级: 班级的目的,即班级完成的功能,以及班级的创建时间和作者姓名:当多个人一次编辑或修改同一个班级时, 作者姓名中应出现多个姓名: 3. 接口: 在满足类注释的基础上,接口注释应包含设置接口的 ...
- Meta祭出元宇宙「阿拉丁神灯」!LeCun称世界模型将带来像人一样的AI
视学算法报道 编辑:桃子 好困 袁榭 拉燕 [新智元导读]2022年2月24日凌晨,在Meta AI实验室讨论会上,小扎亲自带队公布了多项技术内容:语音生成元宇宙场景的Builder Bot. ...
- Yann LeCun:未来几十年AI研究的最大挑战是「预测世界模型」
来源:机器之心 本文约4000字,建议阅读8分钟 本文为你介绍一种叫做分层 JEPA(联合嵌入预测架构)的架构. LeCun 认为,构造自主 AI 需要预测世界模型,而世界模型必须能够执行多模态预测, ...
- Yann LeCun 最新发声:自监督+世界模型,让 AI 像人类与一样学习与推理
来源:AI科技评论 本文约6100字,建议阅读10+分钟 Yann LeCun提倡下一代AI系统将不再依赖于精心标注的数据集. 如何突破当代人工智能(AI)的瓶颈?不同学者存在不同观点. 总体来看可以 ...
- 图灵奖获得者Yann LeCun:未来几十年AI研究的最大挑战是「预测世界模型」
来源:机器之心 LeCun 认为,构造自主 AI 需要预测世界模型,而世界模型必须能够执行多模态预测,对应的解决方案是一种叫做分层 JEPA(联合嵌入预测架构)的架构.该架构可以通过堆叠的方式进行更抽 ...
- html语言中,定义文档中一个正在打开的链接的颜色的代码是,2017微软认证考试精选练习(附答案)...
2017微软认证考试精选练习(附答案) 1.如果要使图像在缩放时不失真,在图像显示原始大小时,按下( )键,拖动 图像右下方 的控制点,可以按比例调整图像大小 B A. Ctrl B. Shift C ...
- 利用Spring框架封装的JavaMail现实同步或异步邮件发送
利用Spring框架封装的JavaMail现实同步或异步邮件发送 作者:张纪豪 J2EE简单地讲是在JDK上扩展了各类应用的标准规范,邮件处理便是其中一个重要的应用.它既然是规范,那么我们就可以通过J ...
- RDBMS运行过程示例
① 用户A通过应用程序A向RDBMS发出调用数据库数据的命令,命令中给出关系名和查找条件 ② RDBMS 首先对命令进行语法检查,通过后进行语义检查和存取权限检查.具体:RDBMS查数据字典,检查是否 ...
- CoreAnimation编程指南(一)概念
一.概述 1.核心动画是一套包含图形绘制,投影,动画的Objective–C类集合.它通过开发人员所熟悉的应用程序套件和Cocoa Touch视图架构的抽象分层模式,同时使用先进的合作效果提供了一套流 ...
最新文章
- 负载均衡服务器nginx详细安装教程及网络部署
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)...
- 研旭电子dsp配套程序_为什么自动调音DSP还火不了?
- Got error -1 when reading table
- CRM Fiori Application opptListRefreshed
- linux内核编译安装,编译安装Linux内核
- java线上问题定位_线上java.lang.OutOfMemoryError问题定位三板斧
- 句句真研—每日长难句打卡Day7
- ui li 菜单 点击添加下级_如何制作导航栏中的下拉菜单
- 网页无法正常显示Lato字体,绕路而行
- 两年开发工作总结及未来展望
- Relay和Rendezvous
- Elasticsearch 原理,安装,生产配置以及常见CRUD,ILM管理,常见API解析,go-elasticsearch-client使用
- 设置一绝对地址为0x67a9的整型变量的值为0xaa66
- 最新系统[防黑屏版]BT及双网盘下载(ZZ)
- 教你微信怎么加更多好友的绝佳方法
- 公众号开发素材管理效果演示-微信开发素材管理1
- 小白学NLP学习笔记-入门
- ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map
- 为了上班摸鱼我用Python制作了俄罗斯方块?
热门文章
- ctime、mtime、atime
- 基于XMPP协议的aSmack源码分析
- [C++] C++风格的强制类型转换探讨
- Android 实现文件上传功能(upload)
- 学习使用TryParse方法
- C语言 —— 关键字(C语言标准定义的32个关键字:auto、register、static、sizeof、signed、unsigned 、break 、 continue 、void)
- 读文件 —— WEB前端读取本地文件内容哪些事(前台解析txt文件)……
- redis配置主从复制
- (转)flask的context机制
- 2018面向对象程序设计(Java)第3周学习指导及要求