【问题标题】:removal of image after some time一段时间后删除图像
【发布时间】:2014-06-21 20:41:06
【问题描述】:

我创建了一个手榴弹和地面接触爆炸的场景,共有 5 颗手榴弹可供玩家使用。问题是当投掷不止一颗手榴弹时,仅对最新手榴弹和前一颗手榴弹调用 removeself 函数不会立即被吹走。

 if event.object1.myname=="ground" and event.object2.myname=="grenade2" then
 local ex2=audio.play(bomb,{loops=0})
 health1=health1-1
 check()
 health1_animation:setFrame(health1)
 explosion_animation2=display.newSprite(explosion_sheet,explosion_sequence)
 explosion_animation2.x=event.object2.x
 explosion_animation2.y=event.object2.y
 explosion_animation2:play() 
 end
 timer.performWithDelay(300,function() explosion_animation2:removeSelf()
 end,1)

【问题讨论】:

    标签: timer lua listener collision-detection coronasdk


    【解决方案1】:

    您将explosion_animation2 声明为全局变量,因此每次调用此碰撞代码时都会将其覆盖。您需要将 explode_animation2 作为局部变量,以便在延迟函数中使用它会在其周围创建一个闭包:

    local explosion_animation2
    if event.object1.myname=="ground" and event.object2.myname=="grenade2" then
        local ex2=audio.play(bomb,{loops=0})
        health1=health1-1
        check()
        health1_animation:setFrame(health1)
        explosion_animation2=display.newSprite(explosion_sheet,explosion_sequence)
        explosion_animation2.x=event.object2.x
        explosion_animation2.y=event.object2.y
        explosion_animation2:play() 
    end
    timer.performWithDelay(300,function() explosion_animation2:removeSelf()
    end,1)
    

    如果由于某种原因您依赖explosion_animation2 是全局的,您可以制作一个本地副本:

    if event.object1.myname=="ground" and event.object2.myname=="grenade2" then
        local ex2=audio.play(bomb,{loops=0})
        health1=health1-1
        check()
        health1_animation:setFrame(health1)
        explosion_animation2=display.newSprite(explosion_sheet,explosion_sequence)
        explosion_animation2.x=event.object2.x
        explosion_animation2.y=event.object2.y
        explosion_animation2:play() 
    end
    local closure_var=explosion_animation2
    timer.performWithDelay(300,function() closure_var:removeSelf()
    end,1)
    

    【讨论】:

      猜你喜欢
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-28
      • 2011-11-09
      相关资源
      最近更新 更多