zoukankan      html  css  js  c++  java
  • cocos2d-x学习记录2——CCAction动作

    CCAction能够使CCNode运动起来,能够呈现出多种多样的动作。这些动作能够改变其运动方向、形状、大小、旋转等。

    同时,还可利用CCCallFunc、CCCallFuncN、CCCallFuncO、CCCallFuncND等函数实现回调。

    MyScene.h代码

     1 #ifndef MyScene_H_H
     2 #define MyScene_H_H
     3 
     4 #include "cocos2d.h"
     5 using namespace cocos2d;
     6 
     7 class MyScene : public CCLayer
     8 {
     9 public:
    10     static CCScene* createScene();
    11     virtual bool init();
    12     CREATE_FUNC( MyScene );
    13 
    14     void callback1();
    15     void callback2(CCNode *node);
    16     void callback3(CCObject *obj);
    17     void callback4(CCNode *node, void *data);
    18 
    19 
    20 private:
    21 };
    22 
    23 #endif

    MyScene.cpp代码

     1 #include "MyScene.h"
     2 
     3 CCScene* MyScene::createScene()
     4 {
     5     CCScene *scene = CCScene::create();
     6     MyScene *layer = MyScene::create();
     7     scene->addChild(layer);
     8     return scene;
     9 };
    10 
    11 
    12 bool MyScene::init()
    13 {
    14     if( !CCLayer::init() ){
    15         return false;
    16     }
    17 
    18     CCSize size = CCDirector::sharedDirector()->getWinSize();
    19     CCSprite *sprite = CCSprite::create("pal4.png");
    20     sprite->setAnchorPoint( ccp(0.5, 0.5) );
    21     //sprite->setPosition( ccp(size.width/2, size.height/2) );
    22     sprite->setPosition( ccp(0, 0) );
    23     sprite->setScale(0.5f);
    24     sprite->setTag(2345);
    25     addChild(sprite);
    26 
    27     CCAction *action1 = CCMoveTo::create(1, ccp(size.width-sprite->getContentSize().width/2, size.height-sprite->getContentSize().height/2));
    28     CCAction *action2 = CCRotateBy::create(2, 360);
    29     CCAction *action3 = CCBlink::create(2, 5);
    30     CCAction *action4 = CCCallFunc::create( this, callfunc_selector(MyScene::callback1) );
    31     CCAction *action5 = CCCallFuncN::create( this, callfuncN_selector(MyScene::callback2) );
    32     CCAction *action6 = CCCallFuncO::create( this, callfuncO_selector(MyScene::callback3), sprite );
    33     CCAction *action7 = CCCallFuncND::create( this, callfuncND_selector(MyScene::callback4), "funcND" );
    34 
    35     CCArray *array = CCArray::createWithCapacity(8);
    36     array->addObject(action1);
    37     array->addObject(action2);
    38     array->addObject(action3);
    39     array->addObject(action4);
    40     array->addObject(action5);
    41     array->addObject(action6);
    42     array->addObject(action7);
    43     //array->addObject(NULL);
    44     //array->retain();
    45     //CCAction *totoalAction = CCSequence::create( action1, action2, action3, action4, action5, action6, action7, NULL );
    46     CCAction *totalAction = CCSequence::create(array);
    47     sprite->runAction(totalAction);
    48 
    49     return true;
    50 }
    51 
    52 void MyScene::callback1()
    53 {
    54     CCLog( "callback1" );
    55 }
    56 
    57 void MyScene::callback2(CCNode *node)
    58 {
    59     CCLog( "%d", node->getTag() );
    60 }
    61 
    62 void MyScene::callback3(CCObject *obj)
    63 {
    64     CCNode *node = dynamic_cast<CCNode*>(obj);
    65     if( node != NULL ){
    66         CCLog( "%d", node->getTag() );
    67     }
    68 }
    69 
    70 void MyScene::callback4(CCNode *node, void *data)
    71 {
    72     CCLog( "%d, %s", node->getTag(), data );
    73     CCMessageBox( "Over!", "Info" );
    74 }

    callback1到callback4分别对应4种回调形式,只是各自带的参数不同而已。

    运行结果:

      

  • 相关阅读:
    【codecombat】 试玩全攻略 第二章 边远地区的森林 一步错
    【codecombat】 试玩全攻略 第十八关 最后的kithman族
    【codecombat】 试玩全攻略 第二章 边远地区的森林 woodlang cubbies
    【codecombat】 试玩全攻略 第二章 边远地区的森林 羊肠小道
    【codecombat】 试玩全攻略 第十七关 混乱的梦境
    【codecombat】 试玩全攻略 第二章 边远地区的森林 林中的死亡回避
    【codecombat】 试玩全攻略 特别关:kithguard斗殴
    【codecombat】 试玩全攻略 第二章 边远地区的森林 森林保卫战
    【codecombat】 试玩全攻略 第二章 边远地区的森林
    实验3 类和对象||
  • 原文地址:https://www.cnblogs.com/MiniHouse/p/3971529.html
Copyright © 2011-2022 走看看