https://img-blog.csdnimg.cn/32db9ce43ef64316a2e37a31f4cee033.gif
编程小鱼酱yu612.com,点击前往

Cocos2d-3.x Action介绍

我们在做游戏的时候,或是我们在玩游戏的时候有以下几点我认为是非常重要的     

 1.游戏效果 

 2.游戏的画风 

3.游戏耐玩性

其中游戏的效果有一个很重要的要素,这里就包含 游戏中人物的动作(Action)。有时候我们说这个游戏这个技能真帅啊,这指的有两点,技能的效果帅和动作帅。

下面我领大家来看看官方的Demo


一、下载解压官方的框架



            之前写过的博客已经介绍了,   传送门 http://blog.csdn.net/hiwoshixiaoyu/article/details/51472707





二、我们运行一下官方的例子

      我们最好卸载掉一些别的工程,加快我们的编译速度,C++编译速度很慢的


三、打开我们的官方例子



代码如下,已经加上了注释

//------------------------------------------------------------------
//
// Test1
//
//------------------------------------------------------------------

void CrashTest::onEnter()
{
    ActionManagerTest::onEnter();
	//创建精灵    s_pathGrossini是什么呢?static const char s_pathGrossini= "Images/grossini.png";						
    auto child = Sprite::create(s_pathGrossini);
	//设置到屏幕中心点
    child->setPosition( VisibleRect::center() );
   //添加的逻辑必须 
   /**
   * 添加一个child(带有z order和tag)到一个容器里      
   *
   *如果这个child是被添加到一个运行中的节点,然后onEnter和onEnterTransitionDidFinish将会被调用
   * @param child         一个child 节点.
   * @param localZOrder   Z order 是为了描画的顺序的
   * @param tag           一个整形很容易确定节点.

   */	
	addChild(child, 1, kTagGrossini);

    //Sum of all action's duration is 1.5 second.
	//旋转  90度 ,持续1.5秒
    child->runAction(RotateBy::create(1.5f, 90));
	//DelayTime这个参数是推迟这个动作 1.4秒
	//FadeOut淡出 1.1秒
    child->runAction(Sequence::create(
                                            DelayTime::create(1.4f),
                                            FadeOut::create(1.1f),
                                            nullptr)
                    );
    
    //1.5秒后将会移除这个动作
	child->runAction(Sequence::create(
		DelayTime::create(1.4f),
		CallFunc::create(CC_CALLBACK_0(CrashTest::removeThis, this)),
		nullptr)
		);
}

void CrashTest::removeThis()
{
	//通过Tag号获取了  节点
    auto child = getChildByTag(kTagGrossini);
	//将节点删除
    child->removeChild(child, true);
 
	//运行下一个例子
    getTestSuite()->enterNextTest();
}

std::string CrashTest::subtitle() const
{
    return "Test 1. Should not crash";
}

//------------------------------------------------------------------
//
// Test2
//
//------------------------------------------------------------------
void LogicTest::onEnter()
{
    ActionManagerTest::onEnter();
	//创建精灵
    auto grossini = Sprite::create(s_pathGrossini);
	//将精灵加到层上
    addChild(grossini, 0, 2);
	//添加到中心点
    grossini->setPosition(VisibleRect::center());
	//移动到 (150,0)点 ,时间为5秒
	//CC_CALLBACK_1(LogicTest::bugMe,this) 五秒之后调用的函数
    grossini->runAction( Sequence::create( 
                                                MoveBy::create(5, Vec2(150,0)),
                                                CallFuncN::create(CC_CALLBACK_1(LogicTest::bugMe,this)),
                                                nullptr) 
                        );
}

void LogicTest::bugMe(Node* node)
{

    node->stopAllActions(); //After this stop next action not working, if remove this stop everything is working
    node->runAction(ScaleTo::create(2, 2));//放大倍x和y轴,也就是图片放大2倍
}

四、我领着大家看看效果吧,我特意放慢了速度

   Test1

   

   Test2



五、总结

      对于Demo的Action总结

                  1.创建精灵

                  2.加载精灵到层上

                  3.创建动作

                 4. 精灵调用runAction 传递一个动作的参数

 

     学习方法之我的建议

          1. 我们在学习cocos2d的时候,遇到不会的方法可以去看看  框架中的注释

          2.查看官方Api   传送门    http://api.cocos.com/

         3.搜索一些博客,然后 看看继承图

posted @ 2016-05-25 00:38  鱼酱  阅读(202)  评论(0编辑  收藏  举报

https://img-blog.csdnimg.cn/32db9ce43ef64316a2e37a31f4cee033.gif
编程小鱼酱yu612.com,点击前往