cocos2d-x游戏开发之动画
MyGame.h中声明动画函数:
class MyGame : public cocos2d::Layer
{
public:
static Scene* createScene();
void Updatetime(float t);
virtual bool init();
void logic(float dt);
........
cocos2d::Animate* createAnimate1();
CREATE_FUNC(MyGame);
}
MyGame.cpp:
#include "MyGame.h"
#include "cocostudio/CocoStudio.h"
#include "ui/CocosGUI.h"
#include "cocos2d.h"
#include<iostream>
using namespace std;
USING_NS_CC;
using namespace cocos2d;
using namespace cocostudio::timeline;
cocos2d::Animate* MyGame::createAnimate1() {
auto animation = Animation::create();
for (int i = 1; i <= 4; i++) { //四张图片(用于组成动画)
animation->addSpriteFrameWithFile(StringUtils::format("run%d.png", i));
}
animation->setDelayPerUnit(3.0f / 15.0f);
//回到原始状态
animation->setRestoreOriginalFrame(true);
auto animate = Animate::create(animation);
return animate;
}
Scene* MyGame::createScene() {
// 'scene' is an autorelease object
auto scene = Scene::create();
// 'layer' is an autorelease object
auto layer = MyGame::create();
// add layer as a child to scene
scene->addChild(layer);
// return the scene return scene; }
bool MyGame::init() {
// 1. super init first
if (!Layer::init())
{
return false;
}
ball = Sprite::create("run1.png");
ball->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2));
this->addChild(ball,2);
//点击btn0,则运行击打棒球动画
btn0->addClickEventListener([&](Ref* pSender) {
ball->runAction(createAnimate1());
});
return true;
}
注意:若按钮事件中包含切换场景事件,则需要在按钮事件中添加schedule函数,否则切换场景后,动画还来不及生成,再次点击按钮出发按钮事件,则动画不会执行,即无反应
具体代码如下:
//为按钮添加触摸事件
btn0->addTouchEventListener([&, btn0, btn1, btn2](Ref* pSender, Widget::TouchEventType type) {
switch (type)
{
case Widget::TouchEventType::BEGAN:
btn0->setScale(1.02);
break;
case Widget::TouchEventType::ENDED:
btn0->setScale(1);
btn1->setTouchEnabled(false);
btn2->setTouchEnabled(false);
.......
if (r[0] == 3 || delegate1->restartnum == 0)
{
..........
//切换场景时不能单单写一句代码 Director::getInstance()->replaceScene(GameOver::createScene());
//而应该写个schedule函数用于缓冲时间
schedule([&](float ft) {
unschedule("GameOver");
Director::getInstance()->replaceScene(GameOver::createScene());
},1,0,0,"GameOver");
}
else
schedule([&](float ft) {
unschedule("newGame");
Director::getInstance()->replaceScene(MyGame::createScene());
},1, 0, 0, "newGame");
}
});
cocos2d-x游戏开发之动画的更多相关文章
- iOS cocos2d 2游戏开发实战(第3版)书评
2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS c ...
- Android游戏开发研究帧动画实现
1.动画的原则框架 帧的动画帧的动画顾名思义,画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在同样区域高速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,事实上只 ...
- (转载)如何学好iphone游戏开发
转自:http://www.cnblogs.com/zilongshanren/archive/2011/09/19/2181558.html 自从发布<如何学习iphone游戏开发>到 ...
- [libGDX游戏开发教程]使用libGDX进行游戏开发(1)-游戏设计
声明:<使用Libgdx进行游戏开发>是一个系列,文章的原文是<Learning Libgdx Game Development>,大家请周知.后续的文章连接在这里 使用Lib ...
- 【Cocos2D研究院之游戏开发】
http://www.xuanyusong.com/archives/category/ios/cocos2d_game 分类目录归档:[Cocos2D研究院之游戏开发] 201211-19 Co ...
- 【读书笔记《Android游戏编程之从零开始》】16.游戏开发基础(动画)
1. Animation动画 在Android 中,系统提供了动画类 Animation ,其中又分为四种动画效果: ● AlphaAnimation:透明度渐变动画 ● ScaleAnimati ...
- 《MFC游戏开发》笔记六 图像双缓冲技术:实现一个流畅的动画
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9334121 作者:七十一雾央 新浪微博:http:/ ...
- 《MFC游戏开发》笔记五 定时器和简单动画
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9332377 作者:七十一雾央 新浪微博:http:// ...
- cocos2d 游戏开发实战
文章转自:http://uliweb.clkg.org/tutorial/read/40 6 cocos2d 游戏开发实战 6.1 创建cocos2d项目 6.2 cocos2d v3 & ...
随机推荐
- Window上装PHP开发环境 (XAMPP)
原作者:http://www.cnblogs.com/martin1009/archive/2011/11/11/2245794.html 1. 从www.apachefriends.org 上下载X ...
- 使用多种客户端消费WCF RestFul服务(三)——.net4.5篇
.net 4.5篇 在.net 4.5下面微软提供了System.Net.Http.dll可以非常方便的使用HTTP请求(其实是用来支持Asp.Net Web Api的,不过我们可以拿过来用) 服务仍 ...
- Linux的常用基本命令
Linux的常用基本命令. 首先启动Linux.启动完毕后需要进行用户的登录,选择登陆的用户不同自然权限也不一样,其中“系统管理员”拥有最高权限. 在启动Linux后屏幕出现如下界面显示: …… Re ...
- mongoDB 安装配置
1. 配置文件: 建立配置文件 :mongodb.conf dbpath=D:\mongoDb\data\db #配置数据库目录路径,预先手动创建db目录 logpath=D:\mongoDb\dat ...
- ArcGIS API for Silverlight 点沿着线流动
原文:ArcGIS API for Silverlight 点沿着线流动 概述 前段时间做了一个项目,要求是有一些电力输送线,电力输送线或者石油管道都是有流动方向的,用户想做一个动态效果来模拟电力的输 ...
- Miscellaneous--Tech
1. Questions: 1)EF.2)MVC/MVP/MVVM.3)page lifecyle. preInit,Init,InitCompleted,preLoad,Load,LoadCompl ...
- 由单例模式学到:lock锁
lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁. lock (xxx) { // Critical code section. } lock 关键字可确保当一 ...
- 30天,O2O速成攻略【8.15长沙站】
活动概况 时间:2015年08月15日13:30-16:30 地点:库可咖啡(长沙市岳麓区阜埠河路139号天马都乐街,湖南大学天马学生公寓东侧) 主办:APICloud.爱立示.兰软 网址:www.a ...
- 淘宝杨志丰:OceanBase--淘宝结构化大数据解决之道
时至今日,“Big data”(大数据)时代的来临已经毋庸置疑,尤其是在电信.金融等行业,几乎已经到了“数据就是业务本身”的地步.这种趋势已经让很多相信数据之力量的企业做出改变.恰逢此时,为了让更多的 ...
- Java代码中执行Linux命令,亲测可用
前提需要知道怎么在linux怎么新建java文件和怎么编译,否则请先学其他知识!! import java.io.*;public class Test{ public static void mai ...