Cocos2d-x特效:场景切换效果、控件动作、逐帧动画

news/2024/7/4 8:51:37

第三阶段:常用功能2

1.Cocos2d-x场景切换
    Size visibleSize = Director::getInstance()->getVisibleSize();
   
   
    Sprite *bg = Sprite::create(
"bg.jpg" );
    bg->setPosition(visibleSize.width/
2 , visibleSize.height/ 2 );
    addChild(bg);
   

    LabelTTF *label = LabelTTF::create(
"Show Next Scene" , "Courier" , 36 );
    addChild(label);
   
    label->setPosition(visibleSize.width/
2 , visibleSize.height/ 2 );
   
    EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create();
    listener->onTouchBegan = [label,
this ](Touch* t,Event *e){
       
       
if (label->getBoundingBox().containsPoint(t->getLocation())) {
           
            Director::getInstance()->replaceScene(TransitionFadeBL::create(
1 , ImageScene::createScene()));
        }
       
       
return false ;
    };
    Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, label);
   
   
    return true;


在ImageScene.h中
#include <iostream>
#include
<cocos2d.h>
USING_NS_CC;  
class ImageScene: public Layer {  
public :
    static Scene* createScene();  
    virtual bool init();
    CREATE_FUNC(ImageScene);
};

在ImageScene.cpp中
#include "ImageScene.h"
Scene* ImageScene::createScene(){    
    Scene* scene = Scene::create();
   
ImageScene * layer = ImageScene::create();
    scene->addChild(layer);   
    return scene;
}
bool ImageScene ::init(){    
    Size size = Director::getInstance()->getVisibleSize();
    Sprite *s = Sprite::create(
"HelloWorld.png" );
    s->setPosition(size.width/
2 , size.height/ 2 );
    addChild(s);    
    return true ;
}


2.Cocos2d-x场景切换效果
            Director::getInstance()->replaceScene(TransitionFadeBL::create( 1 , ImageScene::createScene()));

cocos2d Scene场景转换
  1. TransitionCrossFade.create(t,scene)   // 交叉消失两个场景使用cc.RenderTexture对象。  
  2. TransitionFad.create(t,scene,color)  // 淡出即将离任的场景,然后消失在传入的场景。  
  3.  
  4. TransitionFadeBL.create(t, scene)  // 向左下波浪退出  
  5. TransitionFadeDown.create(t, scene)  // 向下百叶窗式换场景  
  6. TransitionFadeUp.create(t, scene)  // 向上百叶窗式换场景  

  7. TransitionJumpZoom.create(t, scene)   // 跳跃式替换,场景缩小,再加载进来  
  8. TransitionMoveInB.create(t,scene)  // 创建一个在底部,覆盖当前场景  
  9. TransitionMoveInR.create(t,scene)  // 创建一个在右边,覆盖当前场景  
  10. TransitionMoveInT.create(t,scene)  // 创建一个在左边,覆盖当前场景  
  11. TransitionPageTurn.create(t,scene, backwards)  // 前翻页式场景替换  
  12. TransitionRadialCW.create(t,scene)  // 逆时针切入  
  13. TransitionRotoZoom.create(t,scene)  // 转换角度替换  
  14. TransitionFlipAngular.create(t,scene, o)  // 按一定角度左翻  
  15. TransitionFlipX.create(t, scene,o)  // X轴左边翻换  
  16. TransitionFlipY.create(t,scene, o)  // Y轴左边翻换  
  17. TransitionZoomFlipAngular.create(t,scene, o)   // 带有缩放效果,有角度的转左翻  
  18. TransitionZoomFlipX.create(t,scene, o)   // 带有缩放效果,在X轴左翻  
  19. TransitionZoomFlipY.create(t,scene, o)   // 带有缩放效果,左Y轴左翻  
  20. TransitionShrinkGrow.create(t,scene) //交叉着替换场景  
  21. TransitionSlideInB.create(t,scene) //场景有底部进入  
3.Cocos2d-x动作
instant  /'ɪnst(ə)nt/ 片刻, 顷刻, 刹那/  立即的
Size visibleSize = Director::getInstance()->getVisibleSize();
   
   
auto label = LabelTTF::create( "jikexueyuan" , "Courier" , 30 );
    label->setPosition(visibleSize.width/
2 , visibleSize.height/ 2 );
    addChild(label);
   
   
auto listener = EventListenerTouchOneByOne::create();
    listener->onTouchBegan = [label](Touch *t,Event *e){
       
       
if (label->getBoundingBox().containsPoint(t->getLocation())) {
           
//            label->runAction(MoveTo::create(1, Point(100, 100)));
//            label->runAction(MoveBy::create(1, Point(-50, -50))->reverse());
           
//            label->runAction(Spawn::create(MoveBy::create(1, Point(100, 100)), RotateBy::create(1, 360),NULL));
           
//            label->runAction(Sequence::create(MoveBy::create(1, Point(100, 100)),RotateBy::create(1, 360), NULL));
           
           
            label->runAction(Sequence::create(
                                              MoveBy::create(
1 , Point( 100 , 100 )),
                                              RotateBy::create(
1 , 360 ),
                                              CallFunc::create([](){
                MessageBox(
"Action complete" , "complete" );
            }),
NULL ));
        }
       
       
return false ;
    };
    Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, label);
   
//    label->runAction(Repeat::create(RotateBy::create(1, 180), 3));
//    label->runAction(RepeatForever::create(RotateBy::create(1, 180)))
   
   
return true ;


4.Cocos2d-x动作反转
  label->runAction(MoveBy::create(1, Point(-50, -50))->reverse());
5.Cocos2d-x动作重复
//    label->runAction(Repeat::create(RotateBy::create(1, 180), 3));重复动作三次
//    label->runAction(RepeatForever::create(RotateBy::create(1, 180)));永远重复下去
6.Cocos2d-x动作混合
同时执行:
//            label->runAction(Spawn::create(MoveBy::create(1, Point(100, 100)), RotateBy::create(1, 360),NULL));
7.Cocos2d-x动作序列
顺序执行:
//            label->runAction(Sequence::create(MoveBy::create(1, Point(100, 100)),RotateBy::create(1, 360), NULL));
8.Cocos2d-x动作侦听
RotateBy之后执行 CallFunc:
            label->runAction(Sequence::create(
                                              MoveBy::create(
1 , Point( 100 , 100 )),
                                              RotateBy::create(
1 , 360 ),
                                              CallFunc::create([](){
                MessageBox(
"Action complete" , "complete" );
            }),NULL));

9.Cocos2d-x动画
  auto cache = SpriteFrameCache::getInstance();
    cache->addSpriteFramesWithFile(
"anim.plist" );
   
    Vector<SpriteFrame*> vec;
   
char name[ 15 ];
    memset(name,
0 , 15 );
   
   
for ( int i= 0 ; i< 20 ; i++) {
        sprintf(name,
"anim%04d" ,i);
        vec.pushBack(cache->getSpriteFrameByName(name));
    }
    //每秒十帧
    Animation *animation = Animation::createWithSpriteFrames(vec, 0.1f );
    Animate *animate = Animate::create(animation);
   
   
auto sprite = Sprite::create();
    addChild(sprite);
    sprite->setPosition(
200 , 200 );
    sprite->runAction(RepeatForever::create(animate));


http://www.niftyadmin.cn/n/3585858.html

相关文章

nginx 404错误页面配置详解

nginx 错误页面配置 再主配置文件server中加入一个location模块即可 vim /etc/nginx/conf.d/default.conf server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index 404.html; # rewrite .* http://jd.com permanent; # 这个是直接转向ww…

PHP GD库相关图像生成和处理函数

首先分析一下GD库所提供的函数&#xff0c;依据功能作了划分&#xff1a;&#xff08;这只是常用的基础级函数&#xff0c;更高级的函数稍后再作研究&#xff09; 1. create // 图像生成 A.绘制图像 ?12imageCreate // 基于调色板(256色)的图像(gif/*)imageCreateTrueColor //…

WebSocket使用(C++环境)(二) --- libwebsockets库的安装与使用

一、参考网址&#xff1a; libwebsockets官网&#xff1a; https://libwebsockets.org/ libwebsockets的API&#xff1a;https://libwebsockets.org/lws-api-doc-master/html/modules.html https://libwebsockets.org/libwebsockets-api-doc.html 二、libwebsockets的安装 …

Cocos2d-x常用功能-Cocos2d-x用户交互事件处理:触摸、传感器、物理按键

第三阶段&#xff1a;常用功能3---Cocos2d-x常用功能-Cocos2d-x用户交互事件处理&#xff1a;触摸、传感器、物理按键&#xff08;共6部分&#xff09;1.Cocos2d-x单点触摸Size size Director::getInstance()->getVisibleSize(); autolabel LabelTTF::creat…

PHP输出图像imagegif、imagejpeg与imagepng函数用法

详细的分析了imagegif()、imagejpeg()、imagepng()和imagewbmp()函数的功能、参数含义及使用技巧 imagegif()、imagejpeg()、imagepng() 和 imagewbmp() 函数分别允许以 GIF、JPEG、PNG 和 WBMP 格式将图像输出到浏览器或文件。 PHP 输出图像 PHP 允许将图像以不同格式输出&…

nginx 版本升级和添加模块详解

版本升级 把1.16.0版本升级为1.18.0 查看本机现在版本为1.16.0 [rootlocalhost ]# /usr/local/nginx/sbin/nginx -v nginx version: nginx/1.16.0 1&#xff0c;下载1.18.0的版本 [rootlocalhost ]# wget http://nginx.org/download/nginx-1.18.0.tar.gz 2&#xff0c;解压 […

nginx 证书申请和证书的使用

1&#xff0c;证书申请 申请证书要有阿里云的域名 阿里云提供免费的证书&#xff0c;不需要人工审核&#xff0c;用来做测试是非常不错的选择&#xff0c;申请地址如下URL。 购买完了以后申请证书 证书签发之后&#xff0c;可以在列表中可以看到状态栏中为 已签发 &#xff0…

getopt和getopt_long函数

本文转自&#xff1a;http://blog.csdn.net/cashey1991/article/details/7942809 平时在写程序时常常需要对命令行参数进行处理&#xff0c;当命令行参数个数较多时&#xff0c;如果按照顺序一个一个定义参数含义很容易造成混乱&#xff0c;而且如果程序只按顺序处理参数的话&a…