首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Corona删除同名对象的一个实例

Corona删除同名对象的一个实例
EN

Stack Overflow用户
提问于 2014-07-03 14:42:16
回答 1查看 197关注 0票数 0

我正在使用Corona制作一个太空游戏,我的代码中的一个函数是用来发射激光束的。这些光束应该在它们完成转换时消失,但是我有一个问题:当我同时发射不止一个(使用按钮小部件(每次点击一个))时,只有最后一个点火消失了,就在第一个小部件完成其转换之后。

这是我现在的代码:

代码语言:javascript
运行
复制
local function removeLaser(event)
    --[[
    this doesn't work -> display.remove(laser)
    this returns an error (main.lua:34: attempt to call method 'removeSelf' (a
    nil value)) -> laser.removeSelf()
    --]]
end

local function fire(event)
    laser=display.newImageRect("laser.png",75,25)
    laser.x=spaceship.contentWidth+spaceship.x/2+3
    laser.y=spaceship.y 
    transition.to(laser,{time=1000,x=display.contentWidth, onComplete=removeLaser})
end

local function createButton()
    buttonFire=widget.newButton
    {
        defaultFile="buttonUNP.png",
        overFile="buttonP.png",
        width=130,
        height=130,
        emboss=true,
        onPress=fire,
        id="buttonFire"
    }
    buttonFire.x=display.contentWidth-buttonFire.contentWidth/2-10
    buttonFire.y=display.contentHeight-buttonFire.contentHeight/2-10
end

我该怎么处理function removeLaser(event)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-03 18:23:35

只需将removeLaser放入fire函数:

代码语言:javascript
运行
复制
local function fire(event)
    local laser=display.newImageRect("laser.png",75,25) -- always declare objects as locals
    laser.x=spaceship.contentWidth+spaceship.x/2+3
    laser.y=spaceship.y 

    local function removeLaser(target)  -- `onComplete` sends object as a parameter
        target:removeSelf()
        target = nil
    end

    transition.to(laser,{time=1000,x=display.contentWidth, onComplete = removeLaser})
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24556800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档