cocos2dx 一步步入门 CCMoveTo/CCMoveBy/CCRotateTo/CCRotateBy

简介:
// on "init" you need to initialize your instance
bool HelloWorld::init() {
    bool bRet = false;
    do {
        CC_BREAK_IF(!CCLayer::init());
        
        // 添加关闭按钮
        CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
                          "CloseNormal.png",
                          "CloseSelected.png",
                          this,
                          menu_selector(HelloWorld::menuCloseCallback));
        CC_BREAK_IF(!pCloseItem);
        pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) );
        
        // 添加到菜单中
        CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
        CC_BREAK_IF(!pMenu);
        pMenu->setPosition(CCPointZero);
        this->addChild(pMenu, 1);
        
        CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
        float width = visibleSize.width;
        float originX = CCDirector::sharedDirector()->getVisibleOrigin().x + width - 100 * 2;
        float originY = CCDirector::sharedDirector()->getVisibleOrigin().y;
        float height = visibleSize.height;
        
        // grossini
        m_pGrossiniSprite = CCSprite::create(s_pathGrossini);
        CC_BREAK_IF(!m_pGrossiniSprite);
        m_pGrossiniSprite->retain();  // 内存管理,需要保留
        m_pGrossiniSprite->setPosition(ccp(originX / 3.f, originY + height / 2.f));
        this->addChild(m_pGrossiniSprite);
        /// CCMoveTo 表示将精灵的位置移动到500, 500的位置,不管当前什么位置
        CCFiniteTimeAction *pMoveTo = CCMoveTo::create(3.5f, ccp(500, 500));
        CCFiniteTimeAction *pMoveBack = CCMoveTo::create(3.5, ccp(originX / 3.f,
                                                                  originY + height / 2.f));
        m_pGrossiniSprite->runAction(CCSequence::create(pMoveTo, pMoveBack, NULL));
        
        // tamara
        m_pTamaraSprite = CCSprite::create(s_pathGrossinisSister1);
        CC_BREAK_IF(!m_pTamaraSprite);
        m_pTamaraSprite->retain();    // 内存管理,需要保留
        m_pTamaraSprite->setPosition(ccp(originX / 3 * 2.f, originY + height / 2.f));
        this->addChild(m_pTamaraSprite);
        /// CCMoveBy 表示从当前位置开始,x方向向右移动300,y方向向下移动200
        CCFiniteTimeAction *pMoveBy = CCMoveBy::create(3.5f, ccp(300, -200));
        CCFiniteTimeAction *pMoveByBack = CCMoveTo::create(3.5, ccp(originX / 3 * 2.f,
                                                                    originY + height / 2.f));
        m_pTamaraSprite->runAction(CCSequence::create(pMoveBy, pMoveByBack, NULL));
        
        // kathia
        m_pKathiaSprite = CCSprite::create(s_pathGrossinisSister2);
        CC_BREAK_IF(!m_pKathiaSprite);
        m_pKathiaSprite->retain();    // 内存管理,需要保留
        m_pKathiaSprite->setPosition(ccp(originX / 3.f * 3, originY + height / 2.f));
        this->addChild(m_pKathiaSprite);
        /// CCRotateTo 表示旋转到指定的角度(180)
        /// CCRotateBy 表示从当前角度,继续再旋转指定的角度(180),那么最终角度为180 + (-45) = 135
        CCFiniteTimeAction *pRotateTo = CCRotateTo::create(3.5, 180);
        CCFiniteTimeAction *pRotateBy = CCRotateBy::create(3.5, -45);
        m_pKathiaSprite->runAction(CCSequence::create(pRotateTo, pRotateBy, NULL));
        
        bRet = true;
    } while (0);
    
    return bRet;
}


看注释!!!!

源代码:http://download.csdn.net/detail/woaifen3344/7188071



目录
相关文章
|
6月前
|
API 开发工具 开发者
HarmonyOS NEXT实战:拨打电话
本课程介绍如何在HarmonyOS SDK中使用Telephony Kit实现拨打电话功能。通过CallPhoneDemoPage示例,讲解如何输入电话号码并调用makeCall接口拨号,涉及call模块的使用及设备通话能力检测。
7860 0
|
10月前
|
架构师 Linux Docker
三分钟让Dify接入Ollama部署的本地大模型!
本文详细介绍了如何在 Dify 中接入 Ollama 模型,包括模型添加、参数配置及常见问题解决。通过运行 Ollama 服务并与 qwen2:0.5b 模型交互,实现本地化大模型应用开发。同时提供了 Docker、Mac、Linux 和 Windows 平台上 Ollama 的部署与环境变量设置指南,帮助开发者快速上手。更多实战技巧可访问[编程严选网](http://www.javaedge.cn/)或关注作者的 Github 仓库。
6167 2
三分钟让Dify接入Ollama部署的本地大模型!
|
11月前
|
人工智能 搜索推荐 安全
《AI赋能鸿蒙Next视频内容分析与理解,开启智能新视界》
鸿蒙Next结合人工智能,特别是盘古大模型,为视频内容分析、理解与处理带来创新。系统可精准识别图像、语音和文本,实现智能分类、个性化推荐及内容审核,确保安全合规。同时,支持智能剪辑、创作及质量优化,提升用户体验。未来,AI将持续优化,推动视频领域创新发展。
362 3
|
机器学习/深度学习 人工智能 搜索推荐
探索未来:人工智能在日常生活中的应用与影响
本文将深度探讨人工智能(AI)如何在我们的日常生活中扮演着越来越重要的角色,从智能家居到个性化医疗、从教育辅助到职场变革。我们将通过具体案例和最新统计数据,分析AI技术带来的便利与挑战,并对其未来发展进行预测。 【7月更文挑战第25天】
2339 1
|
域名解析 网络协议 安全
【域名解析DNS专栏】云服务中的DNS解析服务比较:阿里云、AWS、Azure大PK
【5月更文挑战第23天】此对比分析探讨了阿里云DNS、AWS Route 53和Azure DNS的服务特点。阿里云DNS以其智能解析和IPv6支持脱颖而出,适合中国地区用户;AWS Route 53凭借其强大的路由策略和与AWS生态的深度集成吸引高级用户;Azure DNS则以简洁管理和DNSSEC安全支持见长,与Azure平台集成良好。选择取决于具体需求,如功能、易用性、性能、安全性和成本。
806 1
【域名解析DNS专栏】云服务中的DNS解析服务比较:阿里云、AWS、Azure大PK
|
机器学习/深度学习 人工智能 API
薅羊毛!阿里云免费GPU云主机畅玩AI绘画,免费领取阿里云v100显卡搭建AI绘画利器Stable Diffusion
薅羊毛!阿里云免费GPU云主机畅玩AI绘画,免费领取阿里云v100显卡搭建AI绘画利器Stable Diffusion
1889 4
薅羊毛!阿里云免费GPU云主机畅玩AI绘画,免费领取阿里云v100显卡搭建AI绘画利器Stable Diffusion
|
人工智能 自然语言处理 搜索推荐
如何利用AI技术改善学生的学习体验?
【5月更文挑战第19天】如何利用AI技术改善学生的学习体验?
570 1
|
数据可视化 JavaScript 前端开发
Android自动生成代码,可视化脚手架之环境搭建
目前可视化工具采用的是Electron进行开发的,Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台的桌面应用程序,它基于 Node.js 和 Chromium,被 Atom 编辑器和许多其他应用程序使用,也就是说使用Electron,您必须有一定的web开发经验,如果没有也没关系,后续您可以直接在我的模板中进行对应的修改即可,当然了,为了能够自己灵活的可视化,建议还是掌握一些Web的经验,编程语言之间的语法,基本互通,学起来也比较容易。
416 0
|
分布式计算 Java Hadoop
Spark3.2.1源码编译(傻瓜式图文教学)
Spark3.2.1源码编译(傻瓜式图文教学)
702 0
Spark3.2.1源码编译(傻瓜式图文教学)
|
JavaScript
Vue3.js中使用svg:vite-plugin-svg-icons
Vue3.js中使用svg:vite-plugin-svg-icons
793 0