【问题标题】:Remove lag in AS3 tiling program消除 AS3 平铺程序中的滞后
【发布时间】:2012-09-21 17:55:52
【问题描述】:

查询

我正在创建一个程序,该程序在环境中有很多片,这些片都是电影剪辑。玩家可以在这个环境中四处走动。如何隐藏屏幕外的图块以减少延迟?

图块均位于 20 个水平单位乘以 10 个垂直单位的二维阵列中。 如果您有任何建议,请告诉我!

更多信息

我有一个用于 tile 的 Tile 类,所以我可以在其中添加要删除的函数。我只是不确定如何去做。

-奥林

【问题讨论】:

  • 您可能想要使用一些现有的基于 tile 的 AS3 游戏平台(如 Flixel)进行调查,或查看此页面 ironcoding.com/2011/02/… 或查看此页面,如果您有使用 Stage3D 获取 GPU 的想法基于性能优势active.tutsplus.com/tutorials/games/…
  • 或者自己做这个我建议想出一个系统来跟踪笛卡尔坐标中的“当前位置”以及这三个部分的“视口”的宽度和高度的信息,您可以计算左上角和右下角的图块,并包括它们之间的所有图块。
  • 想到的最简单的事情是: 1. 如果您的图块位于 Sprite 中,请尝试使用 scrollRect 属性,该属性类似于蒙版。 2. 如果这不起作用,尝试做基本的blitting(将所有的tiles绘制成一个更大的BitmapData,然后根据需要显示的区域使用BitmapData的copyPixels方法将正确的区域从tiles复制到显示在可见区域)。这只是一个基本的测试。 @shaunhusain 的建议很有用

标签: arrays actionscript-3 lag tile


【解决方案1】:

听起来您正在寻找如何通过从不再出现在屏幕上的磁贴、Flash 或任何其他产生字节码的语言中重新收集内存来进行更细粒度的内存管理,然后在虚拟机中运行处理低级别的内存管理和垃圾收集,您对回收内存的控制是有限的。在这些情况下,您最好的选择是使用对象池来动态分配您需要的对象数量,然后保留它们,并在它们准备好被回收时简单地将它们标记为未使用。

在此处阅读 AS3 中的对象池: http://help.adobe.com/en_US/as3/mobile/WS948100b6829bd5a6-19cd3c2412513c24bce-8000.html

或者在这里使用垃圾收集器: http://help.adobe.com/en_US/as3/mobile/WS4bebcd66a74275c3-576ba64d124318d7189-7ffc.html

顶层的所有部分(节省内存): http://help.adobe.com/en_US/as3/mobile/WS4bebcd66a74275c333637c44124318c9bf9-8000.html

尽管这一切都在移动目录中,但我敢打赌,这些信息在桌面上也同样相关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多