• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >游戏开发 > 关于开场动画的实现

关于开场动画的实现

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了视频开场动画制作,ae开场动画教程,免费开场动画素材,ppt开场动画模板,开场动画制作等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于开场动画的实现
描述:

想实现一个开场动画,是一个370帧17秒的帧动画,同时播放音乐形成开场动画效果,但是在电脑商运行没问题,打包到安卓机上却会卡的十分厉害,想请教有没有什么实现的方法,比如做成视频之类的来进行播放什么的,如果能直接代码解决最好,因为图片是480*800的,比较大,用texturepacker好像会打包的很乱,很多文件,图片经过tinypng压缩了,音乐进行了预加载[
代码如下:
复制代码

void StartScene::menuStartCallBack(Ref* pSender){
    
    //replace scene
    auto callbackFunc = [&](){
        auto scene = GameScene::createScene();
        Director::getInstance()->replaceScene(scene);//TransitionCrossFade TransitionMoveInT::create(2.0f, scene)
    };
    CallFunc* callFunc = CallFunc::create(callbackFunc);
    //antimation
    Sprite* runSp = Sprite::create("part/link_start (1).png");
    runSp->setRotation(-90.0f);
    runSp->setPosition(Point(GAME_SCREEN_WIDTH / 2, GAME_SCREEN_HEIGHT / 2));
    this->addChild(runSp);
    auto actions = Sequence::create(createStrAnimate(), callFunc, NULL);
    
    runSp->runAction(actions);
}
Animate* StartScene::createStrAnimate(){
    int iFrameNum = 375;
    SpriteFrame* frame = NULL;
    Vector<SpriteFrame*> frameVec;
    for (int i = 1; i <= iFrameNum; i++){
        frame = SpriteFrame::create(StringUtils::format("part/link_start (%d).png", i), Rect(0, 0, GAME_SCREEN_HEIGHT, GAME_SCREEN_WIDTH));
        frameVec.pushBack(frame);
    }
    Animation* animation = Animation::createWithSpriteFrames(frameVec);
    animation->setDelayPerUnit(0.045f);
    Animate* action = Animate::create(animation);
    //music
    CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic("linkstr.ogg", false);
    return action;
}
 关于开场动画的实现


解决方案1:

我知道卡的原因。我先给你解决这个问题,然后告诉你以后怎么找出真机卡的原因。
卡的原因在于  auto actions = Sequence::create(createStrAnimate(), callFunc, NULL);
 因为你这个createStrAnimate()是实时创建的。这个帧动画创建会非常慢。为什么会慢?因为图片加载在真机上需要很长时间。
所以 你应该在init函数 把这个
 Animation* animation 加载好。甚至,你可以做个loading界面专门来干这件事。
然后animation ->retain();存起来。不要每次都创建。
然后这个问题就解决了。
===============================
接下来告诉你怎么找出真机卡的原因以及是什么代码导致的卡。
就上面这个例子来说,你可以在每个函数 开头和结束 都用计时函数去计时并输出执行时间,你就可以找到在电脑和安卓板上的区别。你会发现createStrAnimate()占用了非常多的时间,而其中里面的 for (int i = 1; i <= iFrameNum; i++){ 又占用了非常多时间。
再然后,你会发现,其实是加载图片的问题。
所以你就知道怎么解决了


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 关于开场动画的实现

相关文章

  • 2017-06-05 游戏编程中数据相关类如何设计?
  • 2022-04-30Unity 3D脚本应用实例演示(三个实例)
  • 2017-06-05 Opengl怎么通过一个纹理单元去设置多个纹理对象?
  • 2017-06-05 cocos中MenuItemImage选中前后设置的图片大小不一样导致的位置偏移
  • 2017-06-05 box2d圆形刚体卡在角落
  • 2022-04-30Unity 3D UGUI系统及常用控件
  • 2017-06-05 unity3d官方网站为什么看不了教程视频,浏览器问题吗,需要谷歌翻墙吗?
  • 2022-04-30Unity 3D TextArea控件
  • 2017-06-05 unity不同场景间怎么传值
  • 2017-06-05 看过开源引擎的进

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Unity 3D ScrollView控件
    • cocos2d-x做应用
    • Unity 3D ToolBar控件
    • 游戏各大引擎调研
    • Unity 3D人形角色动画(Avatar)
    • VR开发的工具和语言
    • Unity3D建立不了tcp服务器总是被提示“一个封锁操作被。。。。终止”
    • 编译到android问题
    • cocos2d-x代码在xcode7上运行报错,错误原因?
    • cocos2dx自定义绑定c++在xcode上run失败

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有