cocos2d 动作切换

#include "HelloWorldScene.h"

USING_NS_CC;

CCScene* HelloWorld::scene()
{
    CCScene *scene = CCScene::create();
    HelloWorld *layer = HelloWorld::create();
    scene->addChild(layer);
    return scene;
}

bool HelloWorld::init()
{

    if ( !CCLayer::init() )
    {
        return false;
    }

    CCSize winSize = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
    CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("hero.plist");

    tank=    CCSprite::createWithSpriteFrameName("hero_1.png");
    tank->setPosition(ccp(winSize.width/2,winSize.height/2));
    addChild(tank);

    initCreep();
    this->scheduleOnce(schedule_selector(HelloWorld::start), 3.0f);
    this->scheduleOnce(schedule_selector(HelloWorld::stop), 6.0f);
    this->scheduleOnce(schedule_selector(HelloWorld::restart), 9.0f);
    this->scheduleUpdate();
    return true;
}

void HelloWorld::initCreep()
{
    CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("hero.plist");

}

void HelloWorld::start(float t)
{
    CCLOG("start");
    CCAnimation* animation=CCAnimation::create();
    CCSpriteFrame* frame1 = CCSpriteFrameCache::sharedSpriteFrameCache()
        ->spriteFrameByName("hero_1.png");
    animation->addSpriteFrame(frame1);
    CCSpriteFrame* frame2 = CCSpriteFrameCache::sharedSpriteFrameCache()
        ->spriteFrameByName("hero_2.png");
    animation->addSpriteFrame(frame2);
    animation->setDelayPerUnit(0.1);
    animation->setRestoreOriginalFrame(true);
    creep=CCRepeatForever::create(CCAnimate::create(animation));
    tank->runAction(creep);
}

void HelloWorld::restart(float t)
{
    CCLOG("restart");
    CCAnimation* animation=CCAnimation::create();
    CCSpriteFrame* frame1 = CCSpriteFrameCache::sharedSpriteFrameCache()
        ->spriteFrameByName("hero_1.png");
    animation->addSpriteFrame(frame1);
    CCSpriteFrame* frame2 = CCSpriteFrameCache::sharedSpriteFrameCache()
        ->spriteFrameByName("hero_2.png");
    animation->addSpriteFrame(frame2);
    animation->setDelayPerUnit(0.1);
    animation->setRestoreOriginalFrame(true);
    creep=CCRepeatForever::create(CCAnimate::create(animation));
    tank->runAction(creep);
}

void HelloWorld::stop(float t)
{
    CCLOG("stop");
    tank->stopAction(creep);
}

void HelloWorld::update(float t)
{

}
时间: 2024-10-23 15:50:39

cocos2d 动作切换的相关文章

Cocos2d 场景切换特效

添加一个场景WelcomeScene [cpp] view plaincopy #include "WelcomeScene.h" #include "GameScene.h" using namespace cocos2d; CCScene* WelcomeScene::scene() { CCScene * scene = NULL; do { scene=CCScene::create(); WelcomeScene* gameScene=WelcomeSce

cocos2d 动作回调函数

// on "init" you need to initialize your instance bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !CCLayer::init() ) { return false; } CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); C

动作展示《一》

由于Cocos2d-X中的动作较多,我将所有的动作制作成了一个滚动视图,每个滚动视图上都有动作名,单击滚动视图就可以展示相应的动作 程序效果图: 使用滚动视图实现动作切换 动作展示 程序代码: 首先创建一个ActionShow类 在ActionShow.h中的代码 #ifndef _ActionShow_H_ #define _ActionShow_H_ #include "cocos2d.h" #include "cocos-ext.h" USING_NS_CC;

Cocos2d-X中的动作展示《二》

由于Cocos2d-X中的动作较多,我将所有的动作制作成了一个滚动视图,每个滚动视图上都有动作名,单击滚动视图就可以展示相应的动作 程序效果图: 使用滚动视图实现动作切换 动作展示 首先创建一个ActionMore类 ActionMore.h中的代码 #ifndef _ActionMore_H_ #define _ActionMore_H_ #include "cocos2d.h" #include "cocos-ext.h" USING_NS_CC; USING_

Unity3d Fbx动作模型的使用

游戏中的角色动作都是怎么做的?怎么样从一个动作切换到另一个动作? 找到Unity Demo中的一个动画资源(FBX) 如下图: 把Male拖入到Scene中,调整摄像机位置. 查看Male的属性 1框 表示当前选择的默认动画,运行后播放的默认动画就是选择的 walk 2框 表示当前模型里面有5个动画,也就是这个人物有5个动作 如何切换动作?我们通过代码来控制.很简单. 新建一个Script,挂载到Male上. using UnityEngine; using System.Collections

cocos2d-x实现多个精灵动画同步播放(一)

2D游戏经常有角色穿装备的情况,如下图角色手部加了一个武器.此外还有格斗游戏里常有的投技:         注意角色是处在站立状态下的,有Idle动画,手部武器也要随角色一起联动.我们是不是要让美术再画一套加手部动画的素材,那美术显然不干了,那要有脚呢,披风呢?不要画死了.他们只会给你一套纯武器的站立动画,让你自己去拼. 那我们要想让武器随角色一起联动,自然想到设定好位置和zorder后,调用CCSpawn同时动作的方法.可这有个大问题,就是独立执行两个不同的动画会有很大机率产生不同步的问题.为

Unity3D优化技巧系列八

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解>电子工业出版社等. CSDN视频网址:http://edu.csdn.net/lecturer/144 下面给读者讲解在游戏开发中经常使用的FSM有限状态机的实现,有限状态机在状态切换中使用的非常多,比如足球游戏,动作游戏等.角色在游戏场景中经常需要动作的切换,比如Idle,Run,A

Android基础知识-1

1.Android的Activity任务栈 在Android的系统中,在APP运行时每个APP都会默认有一个任务栈,任务栈的名称以APP的包名命名.任务栈是一中先进后出的结构,APP中每一个调用的Activity均会按照先后顺序进栈,处于焦点下的Activity处于任务栈的栈顶. 当用户按back键时,栈内的Activities会按照先后顺序出栈,并调用该Activity的OnDestroy方法.如果栈内已经没有元素时,系统会回收该APP的任务栈. 在Activity的的xml标签中,可以定义每

2.Cocos2d-x-3.2编写3d打飞机,项目代码总结

1.AppDelete中applicationDidFinishLaunching代码示范 2.当电话来了时,停止恢复游戏声音的代码(在AppDelegate中加入下面代码) boolAppDelegate::applicationDidFinishLaunching() { // initialize director autodirector =Director::getInstance(); autoglview =director->getOpenGLView(); //glview