2

我只是想将 eventListener 添加到一个对象,当我点击它时它应该消失。但我得到标题中提到的错误。这是我此时的全部代码:

-- housekeeping stuff

display.setStatusBar(display.HiddenStatusBar)

local centerX = display.contentCenterX
local centerY = display.contentCenterY

-- set up forward references

local spawnEnemy

-- preload audio

-- create play screens

local function createPlayScreen()

    local bg = display.newImage("background.png")
    bg.y = 130
    bg.x = 100
    bg.alpha = 0

    local planet = display.newImage("planet.png")
    planet.x = centerX
    planet.y = display.contentHeight +60
    planet.alpha = 0

    transition.to( bg,  { time = 2000, alpha = 1,  y = centerY, x = centerX } )

    local function showTitle()
        local gametitle = display.newImage("gametitle.png")
        gametitle.alpha = 0
        gametitle:scale (4, 4)
        transition.to( gametitle, { time = 500, alpha = 1, xScale = 1, yScale = 1 })
        spawnEnemy()
    end 
    transition.to( planet,  { time = 2000, alpha = 1,  y = centerY, onComplete = showTitle } )
end

-- game functions

local function shipSmash(event)

    local obj = event.target
    display.remove( obj )

end

local function spawnEnemy()

    local enemy = display.newImage("beetleship.png")
    enemy.x = math.random(20, display.contentWidth - 20)
    enemy.y = math.random(20, display.contentHeight - 20)
    enemy:addEventListener ( "tap", shipSmash )

end


local function startGame()

end


local function planetDamage()

end


local function hitPlanet(obj)

end




createPlayScreen()
startGame()

这是错误窗口的样子:

在此处输入图像描述

我在这个领域(LUA 编程)有点新,很抱歉可能是愚蠢的语法错误或其他什么,但我看到的是在我编写这行代码后出现了这个错误:enemy:addEventListener ( "tap", shipSmash )

4

2 回答 2

4

更改local function spawnEnemy()为,function spawnEnemy()因为该变量之前已经声明过。是的,对于初学者来说,这是典型的 Lua 陷阱。

于 2013-08-10T18:48:13.450 回答
1

您已经spawnEnemy两次声明为局部变量。这是允许的(第二个隐藏第一个,第二个在范围内),但这不是你想要的。

您已正确声明了一个局部变量并将其捕获在showTitle. 要稍后设置相同的变量,请使用不带前缀的赋值语句local。您可以使用“匿名”函数语法为其分配函数定义:

spawnEnemy = function() 
   ...
end 

实际上,在 Lua 中,所有函数都是匿名的,因为它们只是值。但是,对于调试而言,将名称与函数关联起来会很有帮助。在堆栈跟踪中,尽可能使用用于调用函数的变量的名称。

于 2013-08-10T19:40:40.540 回答