AS3 瓦片地图渲染(具有 1000 个瓦片)

2024-04-20

首先我要说的是,这里的上下文是 Actionscript 3.0(IDE:Flashbuilder)以及椋鸟框架 http://gamua.com/starling/.

因此,我想创建一个可用于平台游戏或类似游戏的图块地图。

我想在 800x600 像素的舞台上使用 8x8 像素的图块,但我遇到的问题是我不知道如何将这些 7500 多个图块对象添加到舞台而不显着降低帧速率。

我发现性能下降来自于将每个图块添加到舞台,而不是初始化每个图块对象。

我知道我没有提供太多具体信息,但我要求的是是否有一种标准化方法可以将数千个静态对象绘制到舞台上而不损失性能。我觉得有办法,只是我还没有找到。

Update:

经过你们的热心帮助,我找到了一个很好的解决方案。一开始我想实现Amy的解决方案,使用copyPixels()和draw()为整个地图制作一个大的位图数据,然后将其渲染到屏幕上。不过,然后我想知道是否有一个与此相当的 Starling,因为如果我不必将 Starling 与 Native Flash 混合在一起,一切都会简单得多。

再次感谢 Amy,我进一步研究了 Starling 的 RenderTexture 类,发现使用它的“drawBundled()”和“draw()”方法,我可以轻松地将所有图块绘制到 RenderTexture 中,然后将 RenderTexture 放入到图像(Starling 的图像类)中,然后将该图像添加到屏幕上。

该解决方案比我之前尝试过的愚蠢的缓慢解决方案(使用扁平化精灵等)快一百万倍。它的初始化时间更快,并且当渲染纹理的图像显示在屏幕上时,帧速率似乎没有下降。

我想测试的一件事是在游戏过程中更新图块的图形是否很容易。比如说,如果水从源头(或其他东西)扩散,并且“草”图块必须变成“水”图块,那么 RenderTexture 及其图像是否能够改变其外观,而不会出现某种滞后尖峰或性能问题。我很快就会测试一下。

感谢大家的帮助!


不要向舞台添加那么多对象。相反,创建一个与舞台大小相同的 BitmpaData 并使用 copyPixels() 或 draw() 在其上进行绘制。这是一篇文章 http://www.developria.com/2010/02/dealing-with-bitmapdata.html这应该可以帮助你开始。然后,您可以采用您在那篇文章中学到的概念,并学习您需要做的任何未涵盖的具体内容(flashandmath.com 有很多关于像素操作的优秀教程)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AS3 瓦片地图渲染(具有 1000 个瓦片) 的相关文章

  • 从 Javascript 读取当前文档的大小

    我开始玩回旋镖 https github com yahoo boomerang用于测量性能 这是非常有前途的 虽然它允许我测量延迟 带宽和页面加载时间 但我也有兴趣尝试获取在服务器端渲染初始 HTML 页面所需的时间 虽然记录浏览器开始解
  • sqlParameters vs string.Format 哪个更能提高速度?

    sqlParameters vs string Format 哪个更能提高速度 在不承担安全性的情况下 cmd CommandText INSERT INTO tbl test VALUES a b SqlParameter SqlPara
  • 在Python中计算矩阵乘以其转置(AA^T)的最快方法

    在Python中将矩阵与其转置 AA T 相乘的最快方法是什么 我认为 NumPy SciPy 没有考虑使用例如时涉及的对称性 np dot or np matmul 得到的矩阵总是对称的 所以我可以想象有一个更快的解决方案 None
  • AS3 是否可以复制 Shape 对象?

    我正在尝试制作一个可用于复制的形状 这是我所做的 我正在尝试做的以及我陷入困境的解释 在 Flash IDE 画笔 中手动绘制形状 创建了一个包含形状的新影片剪辑 作为一个类导出 实例化该类 var mc MovieClip new sha
  • 如何通过使用内置的 Date 类来节省时间?

    这个问题的目的是使用内置的 Date 类收集日期 时间计算的解决方案 而不是编写冗长的复杂函数 我会自己写一些答案 如果有人想出一些非常聪明的东西 我会接受答案 但这主要是作为解决方案的集合 因为我经常看到处理日期的代码过于复杂 请记住这是
  • 从另一个域加载外部图像

    是否可以从另一个域加载图像 jpg png gif 并操作像素 我想当下载 复制图像时它就在我的域中 使用加载器并将内容添加到图像组件时 我在调试器中收到错误 我想这里有一些跨域策略在起作用 但在继续之前我需要更确定它是如何工作的 我想 如
  • 一个好的 Java VM 中方法调用的开销是多少?

    有人可以提供反汇编的机器代码汇编程序列表吗 我的意思是 与 C 中的普通函数调用相比 肯定有一些开销 VM 需要跟踪调用以查找热点 并且当它使用编译代码时 如果新加载的类需要重新编译 它需要提供动态更改编译方法的方法 我想某处也有返回堆栈溢
  • 换肤时访问 hostComponent 的自定义属性 - Flex 4.5、SDK 4.5

    使用 SDK 4 1 我能够从自定义皮肤访问自定义按钮组件的自定义属性 我当前正在工作的项目需要 SDK 4 5 但我无法访问这些属性 这是一个例子 自定义按钮组件
  • 我应该如何优化这个文件系统 I/O 绑定程序?

    我有一个 python 程序 它执行如下操作 从 csv 文件中读取一行 对其进行一些变换 将其分解为实际的行 因为它们将被写入数据库 将这些行写入单独的 csv 文件 除非文件已完全读取 否则返回步骤 1 运行 SQL Loader 并将
  • 使用 html 属性的 DOM 惩罚

    我正在考虑使用 HTML5 数据属性来更轻松地编写我的应用程序的第三方脚本 因此 考虑两种情况 页面上有 10 000 个 HTML 元素 例如 div Sticker div 还有其他 10 000 个 HTML 元素 例如 div St
  • JavaScript:字符串连接性能低下? Array.join('')?

    我读过如果我有一个for循环 我不应该使用字符串连接 因为它很慢 例如 for i 0 i lt 10000000 i str a 相反 我应该使用Array join 因为它更快 var tmp for i 0 i lt 10000000
  • 我可以在 pandas 中执行动态行累加吗?

    如果我有以下数据框 如下导出 df pd DataFrame np random randint 0 10 size 10 1 0 0 0 1 2 2 8 3 1 4 0 5 0 6 7 7 0 8 2 9 2 有没有有效的方法cumsum
  • Flex 字典字面量

    在 Flex 中工作 我需要用相当复杂的结构填充字典 基于本文档页面 http livedocs adobe com flex 3 html help html content 10 Lists of data 4 html我尝试通过以下语
  • jQuery UI .buttonset() 太慢

    我的 HTML 页面上有几千个按钮 运行需要10多秒 buttonset buttonset 文件准备好 有没有更快的方法来做到这一点 或者是我以某种方式限制按钮数量的唯一解决方案 创建buttonset在第一次显示之前按需进行 我刚刚测试
  • 在 x86 ASM 中测试零通常哪个更快:“TEST EAX, EAX”与“TEST AL, AL”?

    测试 AL 中的字节是否为零 非零通常哪个更快 TEST EAX EAX TEST AL AL 假设之前有一个 MOVZX EAX BYTE PTR ESP 4 指令加载了一个带有零扩展的字节参数到 EAX 的其余部分 防止了我已经知道的组
  • 使用循环计算 Python 字典中元素的有效方法

    我有一个值列表 我希望在循环期间计算每个类的元素数量 即 1 2 3 4 5 mylist 1 1 1 1 1 1 2 3 2 2 2 2 3 3 4 5 5 5 5 mydict dict for index in mylist mydi
  • 为什么 Chrome 审核建议我最小化 Cookie 大小?

    如何最小化请求的 cookie 大小 Chrome 似乎 警告我 我的 cookie 大小为 41B 这根本不是很多 但是它警告我有什么原因吗 这是一个 PHPSESSID cookie 我真的不知道如何最小化它 有任何想法吗 我的请求响应
  • 对大数据块进行反应非阻塞渲染

    最近我开始学习反应并想知道是否有某种模式可以用于大数据的非阻塞 UI 线程渲染 比方说 我们采取这个例子 https www mendix com tech blog making react reactive pursuit high p
  • 将日期转换为 UTC 的正确方法

    如果这个问题没有多大意义 我很抱歉 但我是 Actionscript 的新手 并且想知道您是否可以帮助我解决这个问题 我正在构建一个给定时区的应用程序 告诉您该位置的时间 当我使用时区为 GMT UTC 的位置时 它效果很好 但如果主机上的
  • Angularjs 在生产中禁用调试数据

    我正在尝试按照角度文档中的建议禁用生产服务器中的调试数据here https docs angularjs org guide production 补充一点 我并没有真正看到性能和加载时间有任何改进 这是我的代码在 app js 中的样子

随机推荐

  • 图例位置,ggplot,相对于绘图区域

    我认为这里的问题有点明显 我希望将图例放置 锁定 在 绘图区域 的左上角 由于多种原因 使用 c 0 1 0 13 等不是一个选择 有没有办法改变坐标的参考点 使它们相对于绘图区域 mtcars cyl lt factor mtcars c
  • 将 EL 表达式传递给复合组件

    我们仍处于 JSF 1 2 到 2 0 的迁移场景 并且现在面临与 EL 表达式内使用的 c set 或 ui param 变量相关的问题 以下是事实 有一个按钮作为复合组件
  • 如何使用 imagemagick 从命令行将灰度 png 图像转换为 RGB

    我正在尝试使用以下命令将 png 灰度图像转换为 RGB png 图像 convert HopeLoveJoy png size 1x1 fill rgba 0 1 2 0 draw color 511 511 point out test
  • 使用字符串按名称访问局部变量

    我对此很陌生 但我有以下代码 when read puts Reading 1 puts 1 description downcase 我想使用 1 作为可以调用方法的变量 当前解释器返回一个 NoMethodError undefined
  • jpa 标准比较两个字符串而不考虑空格

    我认为这是一个基本问题 但我正在努力寻找答案 问题是 使用CriteriaBuilder并谓词如何比较字符串而不考虑中间的空格 例如 CH 525 kV AREIA 1077 PR 没有 替换 功能CriteriaBuilder图书馆 cb
  • iOS Swift - 使用蓝牙外部扬声器时音质较差

    我正在使用从 url 广播应用程序 流式传输的 iOS 应用程序 一旦我尝试通过外部扬声器或汽车音响系统等蓝牙设备从应用程序进行流传输 音频质量就会非常差且刺耳 当从 iOS 设备本身播放时 一切听起来都很好 扬声器和耳机 override
  • django-cart 还是 Satchmo?

    我正在寻找实现一个非常基本的购物车 Satchmo http www satchmoproject com 似乎安装了一个lot我不需要的应用程序和额外的东西 我听别人提到过Django 购物车 http code google com p
  • 如何对 Google Cloud Storage 中存储的文件使用 cv2.imread?

    假设我有一张标题为 Sunset jpg 的图片存储在 Google 云存储 gs example bucket testing data 上的以下 URL 中 所以图像的完整 URL 是 gs example bucket testing
  • 复制列表初始化从概念上讲是否调用复制构造函数?

    在 C 11 之前 我们可以通过编写类似的代码来进行复制初始化A a 1 这或多或少相当于A a A 1 也就是说 首先创建一个临时对象 然后调用一个复制构造函数 不管复制省略如何 这在概念上都必须是这样 并且复制者必须是可访问的 通过 C
  • DX11 中的顶点缠绕顺序

    我试图用 dx11 绘制一个简单的正方形 但每个三角形的索引顺序决定了它是否显示 我在光栅化状态下将剔除模式设置为无 但它似乎没有改变任何东西 如果我将第一个三角形的顶点指定为 0 1 2 而不是 2 1 0 则该三角形不会显示 所以我的问
  • cuda cpu功能-gpu内核重叠

    我在尝试开发以练习 CUDA 的 CUDA 应用程序时遇到并发问题 我想通过使用 cudaMemecpyAsync 和 CUDA 内核的异步行为来共享 GPU 和 CPU 之间的工作 但我无法成功重叠 CPU 执行和 GPU 执行 它与主机
  • WebCL 在主要浏览器上的实现现状如何? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有这个问题是因为我找不到 Google Mozilla 或 Microsoft 的官方信息 我刚刚找到 2014 年日期的条目 我希
  • 计算边界球体半径时遇到一些问题

    我已经设法用两种方法计算边界球体半径 但没有一种方法能够准确地满足我的要求 我不需要 像素 完美边界球 但我想要比我目前拥有的更好的东西 我正在使用 Wavefront obj 模型并计算这些模型的边界球半径 我提取当前模型尺寸 我使用 N
  • 代码与日志的比率? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 理想的代码与日志记录比率是多少 我不习惯编写日志 因为我开发的大多数应用程序都没有太多日志记录 最近 虽然我换了工作 但我注意到您看不到调用 l
  • 克隆有效,远程推送无效。通过 copssh 的远程存储库

    我按照 Tim Davis 的方法 setup a msysgit server with copssh on windows guide http www timdavis com au git setting up a msysgit
  • 如何向自定义形状添加阴影图案

    我使用 iText 绘制了一个等边三角形 如下所示 canvas setColorStroke BaseColor BLACK int x start getX int y start getY canvas moveTo x y canv
  • 如何使用参数集合格式化 std::string ?

    可以格式化吗std string传递一组参数 目前我正在以这种方式格式化字符串 string helloString Hello s and s vector
  • rspec 与 devise 的集成测试抛出 NoMethodError 错误

    我在这里发布了类似的错误 但所有这些都无法解决我的问题 我的文件 spec request news controller spec rb 如下所示 require spec helper describe NewsController d
  • php 头问题

    你能帮我一下吗 我转移到新的托管 突然收到此错误 警告 无法修改标头信息 标头已由 输出从 home capital public html Google Connect php 1 开始 在 home capital public htm
  • AS3 瓦片地图渲染(具有 1000 个瓦片)

    首先我要说的是 这里的上下文是 Actionscript 3 0 IDE Flashbuilder 以及椋鸟框架 http gamua com starling 因此 我想创建一个可用于平台游戏或类似游戏的图块地图 我想在 800x600