码迷,mamicode.com
首页 > 其他好文 > 详细

cocos2d-x学习记录2——CCAction动作

时间:2014-09-14 20:43:17      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   2014   div   

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种回调形式,只是各自带的参数不同而已。

运行结果:

bubuko.com,布布扣 bubuko.com,布布扣 bubuko.com,布布扣

cocos2d-x学习记录2——CCAction动作

标签:style   blog   http   color   io   os   ar   2014   div   

原文地址:http://www.cnblogs.com/MiniHouse/p/3971529.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!