【问题标题】:Corona SDK drawing lines using circlesCorona SDK 使用圆圈绘制线条
【发布时间】:2014-02-20 20:51:46
【问题描述】:

我有这段代码可以使用 display.newCircle 在屏幕上画一条线。它工作得很好但是 当我画得更多时,它会更不稳定并泄漏内存。 我怎样才能保持这个优化。 问题仅在设备上。 这是代码

local background = display.newRect( 0, 0, 480, 800 )

local lines = {};
local i = 1;
local strokeWidth = 20;
local R = 150;
local G = 100; 
local B = 50;

local function drawALine(event) 
    if event.phase == "began" then
    elseif event.phase == "moved" then

        lines[i] = display.newCircle(event.x, event.y, strokeWidth, strokeWidth);
        lines[i]:setFillColor( R,G,B );

    elseif event.phase == "ended" then
    end     
end
Runtime:addEventListener("touch", drawALine)

有什么帮助吗?

【问题讨论】:

  • 不稳定是什么意思?
  • 这是你的 main.lua 吗?你不使用场景或 createScene 事件?
  • 不,它不是 main.lua,我使用导演类从一个场景切换到另一个场景我已经添加到这样的组中 lines[i] = display.newCircle(paintGroup, event.x, event.y, strokeWidth, strokeWidth); 但这不会改变任何东西
  • 不稳定是指我的应用在绘制一段时间后没有响应。
  • 请考虑用信息扩展您的问题,而不是放入 cmets,这有助于提出更好的问题,人们不必阅读无数 cmets。

标签: android ios lua coronasdk


【解决方案1】:

每次您触摸屏幕时,您都会将您的圆圈线再延长一个圆圈,但您不会将其添加到场景视图中,因此它不会由场景管理。

【讨论】:

  • 您的意思是加入群组?我已经添加到这样的组 lines[i] = display.newCircle(paintGroup, event.x, event.y, strokeWidth, strokeWidth); 但这不会改变任何东西
  • 不,场景视图组。你不使用 createScene(event) 回调?
  • 我在场景中使用导演类而不是故事板
  • 我怀疑这与您的问题有关,但只是想指出您的 newCircle 应该采用 3 个参数(x,y,radius),而不是 4(这可用但仅当第一个参数是要添加到的组)。笔画宽度应通过 strokeWidth 参数设置(docs.coronalabs.com/guide/graphics/path.html)。
【解决方案2】:

你在哪里增加变量 i?如果不这样做,您将覆盖上一个条目,但它仍在分配内存。你可以在你的代码中打印一些内容来观察你的内存,看看它是否变得太高了。

【讨论】:

    猜你喜欢
    • 2020-03-31
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 2013-06-19
    • 1970-01-01
    相关资源
    最近更新 更多