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 个瓦片) 的相关文章

  • 您可以从 MethodInfo 对象获取 Func (或类似的)吗?

    我意识到 一般来说 使用反射会对性能产生影响 实际上 我本人根本不喜欢反思 这纯粹是学术问题 假设存在一些如下所示的类 public class MyClass public string GetName return My Name 请耐
  • MySQL InnoDB 查询性能

    我正在尝试优化一个简单的 sql 查询 该查询将多次运行大量数据 这是场景 MySQL 与 InnoDB 表 where 和 join 中使用的所有字段都已索引 表有 FK 我不需要查询的整个缓存 但每个表的缓存是可能的 表有更多的更新 插
  • 如何在 ItemRenderer 内使用数据网格范围外的变量?

    我使用将项目数组绑定到数据网格ItemRenderer 我用data变量来控制可绑定数据 我也有someComponentVariable需要插入到每一行中 但它是在组件范围内声明的 因此数据网格似乎无法重新识别它 编译错误 我如何使用这个
  • 非阻塞方法中的饥饿

    一段时间以来 我一直在阅读有关非阻塞方法的内容 这是一段所谓的无锁计数器的代码 public class CasCounter private SimulatedCAS value public int getValue return va
  • 从视频创建缩略图 - 提高速度性能 - AVAsset - iPhone [重复]

    这个问题在这里已经有答案了 我正在使用基于以下线程中的代码的代码来生成视频缩略图 从 iPhone SDK 中的视频 URL 或数据获取缩略图 https stackoverflow com questions 1347562 gettin
  • 在 AS3 中创建一个(适当的)计时器

    如何在as3中创建时间计数器 在 google 上进行一些简单的搜索 您会找到 AS3 类 Timer 它实际上是事件计数器 不是一个合适的时间计数效用 我见过这个http blogs adobe com pdehaan 2006 07 u
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • Flex PopUpManager:如何检测模式弹出窗口的存在?

    我的 Flex 3 应用程序有一些通过 PopUpManager 显示的模式对话框 但有时我希望其他视图组件知道有弹出窗口显示 PopUpManager 没有任何方法来实际检查弹出窗口是否存在 有没有其他方法可以在 flash flex 中
  • Flash Action Script 3 设计自定义MovieClip作为按钮

    我是 Flash AS3 的新手 我正在尝试创建一个应该充当按钮的影片剪辑 请参阅下图以供参考 我想知道如何为此自定义按钮创建一个包 以便我可以通过在参数中指定 名称 图像 来使用此包创建所需数量的按钮 Main movieclip mc
  • try-catch 块是否会降低性能[重复]

    这个问题在这里已经有答案了 This link http www cplusplus com doc tutorial exceptions states 为了捕获异常 我们必须将一部分代码放在异常下 检查 这是通过将这部分代码包含在 tr
  • 对象克隆库的 Flash 复制?

    这可能是一个非常简单的问题 我只是不知道如何解决 我有一个想要复制的对象 但不知道如何进行 这是我的尝试 var myObj new ObjectClass var duplicate myObj duplicate null myObj
  • 提高第一个查询的性能

    如果执行以下数据库 postgres 查询 则第二次调用要快得多 我猜第一个查询很慢 因为操作系统 linux 需要从磁盘获取数据 第二个查询受益于文件系统级别和 postgres 中的缓存 有没有一种方法可以优化数据库以快速获得结果fir
  • 如何在 JMeter 中显示实际循环计数

    我们可以通过以下方式显示实际线程 threadNum 实际循环计数有类似的东西吗 您可以使用 jm Thread Group idx 获取当前循环迭代 jm Thread Group idx 请注意 这是 JMeter 5 中一般增强功能的
  • 会话重新启动后 AVcapture 会话启动缓慢

    我有一个主视图控制器 它连接到具有 avcapturesession 的第二个视图控制器 我第一次从主视图控制器转向捕获会话控制器 大约需要 50 毫秒 使用 仪器 检查 然后我从捕获会话返回到主视图控制器 然后从主控制器返回到 avcap
  • 多处理器机器中秒表的最佳实践?

    我找到了一个好的question https stackoverflow com questions 28637 is datetime now the best way to measure a functions performance
  • 如何知道Matlab中系统命令执行过程中经过的时间?

    我有一个运行系统脚本的 Matlab 代码 该脚本可能会因命令运行而停止 我想知道是否有一种方法可以让程序知道它是否花费了很长时间并执行其他操作 这是代码 tic status cmdout system iperfcmd The prog
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • Flex 中的全局变量

    我正在尝试在 Flex 中使用全局变量 但它似乎无法正常工作 在我的默认 mxml 文件中 我声明以下内容 public var appID int 该变量跟踪我的应用程序中用于 SQL 目的的会话 ID 在另一个 mxml 页面上 我调用
  • 如果 PyPy 快 6.3 倍,为什么我不应该使用 PyPy 而不是 CPython?

    我已经听到很多关于PyPy http en wikipedia org wiki PyPy项目 他们声称它比现有技术快 6 3 倍CPython http en wikipedia org wiki CPython口译员开启他们的网站 ht

随机推荐

  • 图例位置,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