• 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
  • 微信公众号
您的位置:首页 > 程序设计 >游戏开发 > 我做了一个h5的画布游戏,用requestanimation控制方向移动,按键控制是否按下方向键,但是有点卡,请问大神怎么优化

我做了一个h5的画布游戏,用requestanimation控制方向移动,按键控制是否按下方向键,但是有点卡,请问大神怎么优化

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

佚名通过本文主要向大家介绍了我做了一个h5的画布游戏,用requestanimation控制方向移动,按键控制是否按下方向键,但是有点卡,请问大神怎么优化等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 我做了一个h5的画布游戏,用requestanimation控制方向移动,按键控制是否按下方向键,但是有点卡,请问大神怎么优化
描述:

代码具体没办法打出来,有没有大神提供宝贵的意见


解决方案1:

你是用DOM 写的小游戏?还是用CANVAS

解决方案2:

使用canvas的局部刷新,不要每次移动就刷新整个画面

解决方案3:

有可能是事件注册的问题,可以先从事件委托,和 dom 结束后取消事件入手。

可以使用 chrome devtool 点开 profile 看看 cpu 和 内存,看看是否是有哪些函数有泄漏或者其他问题。

解决方案4:

  1. 将以帧为单位的动画改成以时间为单位的动画

  2. 对于不需要经常变动的图片,如背景等,请使用离屏canvas来实现

  3. 对于一些细节的地方,如canvas.width 等,需要用width = canvas.width来保存值使用

  4. 使用函数节流

  5. 事件触发动作不要以绑定的函数为主,需要将触发的参数通过传到程序内部,通过游戏循环来实现。如:当点击右箭头的时候,你只需要告诉游戏主体,往右移动已经被触发,至于怎么运动由程序自己决定。

  6. 优化循环,一般来说导致程序运行缓慢最主要的原因都是这个,内部逻辑太多,一个单位循环内根本来不及处理,对于某些数据计算性的东西,比如说生成随机数等可以通过worker来实现,对于一些不需要经常使用的功能,请尽量避免调用,只有在某些情况触发了以后,参数值变了,再进行调用。 比如说if(go) dosomething(); 只有当go为true时才进行操作,这样可以省下大量时间。

当然具体的优化细节需要根据你的代码来决定,我只能讲这么点通用的东西,其实大部分优化的思路都一样的


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

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

  • 我做了一个h5的画布游戏,用requestanimation控制方向移动,按键控制是否按下方向键,但是有点卡,请问大神怎么优化

相关文章

  • 2017-06-05 请教有关3ds读取纹理坐标的相关细节。
  • 2017-06-05 cocos2d-x精灵
  • 2017-06-05 编译到android问题
  • 2017-06-05 给cocos2dx引擎做个界面工具,有人需要吗?
  • 2017-06-05 怎么让CharacterController不会与其它的CharacterController产生碰撞?
  • 2017-06-05 Unity点击按钮播放声音问题
  • 2017-06-05 求助:天空盒子呈现出来的图像破碎问题
  • 2017-06-05 cocos2dx添加对话框
  • 2017-06-05 出现这个错误是什么情况,怎么解决啊
  • 2017-06-05 关于cocos2d-x3xDebugwin32

文章分类

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

最近更新的内容

    • CCTableView类中显示没有成员CCPoint
    • cocos2dx自定义绑定c++在xcode上run失败
    • 想学手机游戏和电脑游戏编程(主要电脑游戏)如何入门
    • cocos2d-x代码在xcode7上运行报错,错误原因?
    • Unity 3D Button控件
    • shader编程使用的语言
    • Unity 3D Event System事件系统
    • unity3d官方网站为什么看不了教程视频,浏览器问题吗,需要谷歌翻墙吗?
    • 8个块的圆形转盘,传入的角度如果是负数如何计算对应的块是哪个?
    • unity是怎么调用脚本的?

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

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