AddEventListener:监听器不能为 nil

2023-12-28

有人可以解释一下这里出了什么问题吗?我一添加AddEventListener就出错了

   newBalloon:addEventListener( "tap", pushBalloon )

完整代码:

local composer = require( "composer" )

local scene = composer.newScene()


local physics = require( "physics" )
physics.start()



-- Configure image sheet
local positioninsheetOptions = 144.1
local sheetOptions =
{
    frames =
    {
        {   
            x = 0,
            y = 0,
            width = 112,
            height = 142
        },
        {   
            x = 0,
            y = positioninsheetOptions,
            width = 112,
            height = 142
        },
        {   
            x = 0,
            y = positioninsheetOptions*2,
            width = 112,
            height = 142
        },
        {  
            x = 0,
            y = positioninsheetOptions*3,
            width = 112,
            height = 142
        },
        {  
            x = 0,
            y = positioninsheetOptions*4,
            width = 112,
            height = 142
        },
         {  
            x = 0,
            y = positioninsheetOptions*5,
            width = 112,
            height = 142
        },
         {  
            x = 0,
            y = positioninsheetOptions*6,
            width = 112,
            height = 142
        },
         {  
            x = 0,
            y = positioninsheetOptions*7,
            width = 112,
            height = 142
        },
         {  
            x = 0,
            y = positioninsheetOptions*8,
            width = 112,
            height = 142
        },

         {  
            x = 0,
            y = positioninsheetOptions*9,
            width = 112,
            height = 142
        },

             {  
            x = 0,
            y = positioninsheetOptions*10,
            width = 112,
            height = 142
        },




    },
}
local objectSheet = graphics.newImageSheet( "gameObjects.png", sheetOptions )






local tapCount = 0
local platform

local tapText
local balloonsTable = {}
local leftBorder
local rightBorder

local backGroup
local mainGroup
local uiGroup

local platform
local platform2




local function createBalloon()
local randomBalloon = math.random( 10 )


    local newBalloon = display.newImageRect( objectSheet, randomBalloon, 112, 142 )

     if newBalloon then


        table.insert( balloonsTable, newBalloon )
    physics.addBody( newBalloon, "dynamic", { radius=70, bounce=0 } )
    newBalloon.myName = "bigBalloon"
newBalloon.alpha = 0.75
newBalloon.gravityScale = randomBalloon/-150
        newBalloon:addEventListener( "tap", pushBalloon )

    end


local whereFrom = math.random( 3 )

    if ( whereFrom == 1 ) then
        -- From the left
        newBalloon.x = 100
        newBalloon.y = display.contentHeight+300

    elseif ( whereFrom == 2 ) then
        -- From the top
        newBalloon.x = 160
        newBalloon.y = display.contentHeight+300
    elseif ( whereFrom == 3 ) then
        -- From the right
        newBalloon.x = 220
        newBalloon.y = display.contentHeight+300

end
end

local function gameLoop()
    -- Create new balloon
    createBalloon()
     -- Remove balloons which have drifted off screen
    for i = #balloonsTable, 1, -1 do
     local thisBalloon = balloonsTable[i]

        if ( thisBalloon.x < -100 or
             thisBalloon.x > display.contentWidth + 100 or
             thisBalloon.y < -100  )
        then
            display.remove( thisBalloon )
            table.remove( balloonsTable, i )
        end

    end

end



local function pushBalloon( event )
local tappedBalloon = event.target
    --  balloon:applyLinearImpulse( 0.2, -2, balloon.x, balloon.y )
    -- tapCount = tapCount + 1
    -- tapText.text = tapCount 
    if event.phase == "began" then
     tappedBalloon.gravityScale = 10
     end

end


local function pushBalloon2()
    --  balloon:applyLinearImpulse( 0.2, -2, balloon.x, balloon.y )
    -- tapCount = tapCount + 1
    -- tapText.text = tapCount
     balloon2.gravityScale = 10
     balloon2:applyLinearImpulse( 0.1, 0, balloon2.x, balloon2.y )
end


local function pushBalloon3()
    --  balloon:applyLinearImpulse( 0.2, -2, balloon.x, balloon.y )
    -- tapCount = tapCount + 1
    -- tapText.text = tapCount
     balloon3.gravityScale = 10
     balloon3:applyLinearImpulse( -0.1, 0, balloon3.x, balloon3.y )
end



-- -----------------------------------------------------------------------------------
-- Scene event functions
-- -----------------------------------------------------------------------------------

-- create()
function scene:create( event )

    local sceneGroup = self.view
    -- Code here runs when the scene is first created but has not yet appeared on screen
physics.pause()
local background = display.newImageRect( "background.png", 360, 570 )
background.x = display.contentCenterX
background.y = display.contentCenterY



 platform = display.newImageRect( "platform.png", 10, display.contentHeight*5 )
platform.x = -5
platform.y = 0
physics.addBody( platform, "static", { friction=0.5, bounce=0.3 } )

 platform2 = display.newImageRect( "platform.png", 10, display.contentHeight*5 )
platform2.x = display.contentWidth+5
platform2.y = 0
physics.addBody( platform2, "static", { friction=0.5, bounce=0.3 } )


createBalloon()




end


-- show()
function scene:show( event )

    local sceneGroup = self.view
    local phase = event.phase

    if ( phase == "will" ) then

        -- Code here runs when the scene is still off screen (but is about to come on screen)

    elseif ( phase == "did" ) then
gameLoopTimer = timer.performWithDelay( 1250, gameLoop, 0 )

        -- Code here runs when the scene is entirely on screen
physics.start()

    end
end


-- hide()
function scene:hide( event )

    local sceneGroup = self.view
    local phase = event.phase

    if ( phase == "will" ) then
        -- Code here runs when the scene is on screen (but is about to go off screen)

    elseif ( phase == "did" ) then
        -- Code here runs immediately after the scene goes entirely off screen
physics.pause()
    end
end


-- destroy()
function scene:destroy( event )

    local sceneGroup = self.view
    -- Code here runs prior to the removal of scene's view

end


-- -----------------------------------------------------------------------------------
-- Scene event function listeners
-- -----------------------------------------------------------------------------------
scene:addEventListener( "create", scene )
scene:addEventListener( "show", scene )
scene:addEventListener( "hide", scene )
scene:addEventListener( "destroy", scene )
-- -----------------------------------------------------------------------------------

return scene

谢谢。


您参考函数(pushBalloon) 添加事件监听器时还不存在。因此,将函数的定义放在上面,您可以像这样添加事件侦听器

 local function pushBalloon( event )
    local tappedBalloon = event.target
        --  balloon:applyLinearImpulse( 0.2, -2, balloon.x, balloon.y )
        -- tapCount = tapCount + 1
        -- tapText.text = tapCount 
        if event.phase == "began" then
         tappedBalloon.gravityScale = 10
         end

 end

    ...

 newBalloon:addEventListener( "tap", pushBalloon )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AddEventListener:监听器不能为 nil 的相关文章

  • 如何将 Lua 嵌入到 Python 3.x 中?

    是否可以将 Lua 嵌入到 Python 3 x 中 如果是这样 我如何在我的 Python 程序中运行和执行 Lua 脚本 语言之间的交互有多好 例如 Lua 是否可以访问 Python 的所有变量和类以及 Python 是否可以访问 L
  • 创建独立的 Lua 可执行文件

    有没有一种简单的方法可以从 Lua 脚本创建独立的 exe 文件 基本上这将涉及链接 Lua 解释器和脚本 我相信这是可能的 PLT 方案允许以相同的方式创建独立的可执行文件 但是到底是如何实现的呢 查看srlua http www tec
  • 如何更新lua中的时间以反映执行过程中系统时区的变化?

    Problem 我想修改awful widget textclockAwesome wm 中的小部件可以立即反映系统时区的更改 这个小部件和所有的 Awesome wm 配置都是用 lua 编写的 目前 如果系统时区发生更改 小部件将继续根
  • Corona/Box2D 检测与非移动静态物体的碰撞

    出于发帖原因 这是我正在尝试做的事情的简单版本 在屏幕上我有一个简单的圆形对象 它是静态的并且不会移动 然后用户可以拖放一条直线 如果该线穿过该圆圈 我希望触发碰撞事件 看来除非其中一个物体正在移动 否则永远不会检测到碰撞 绘制线条时能否检
  • Lua中如何对数字表求和?

    Lua有内置的吗sum 功能 我似乎找不到一个 我几乎翻遍了文档中的所有地方 或许table sum 或类似的东西 以遵循当前的约定 但由于我找不到它 我不得不实现它 function sum t local sum 0 for k v i
  • Redis 排序集和解决关系

    我正在使用 Redis 排序集来存储我正在处理的项目的排名 我们没有预料到 我们想要如何处理关系 Redis 按字典顺序对具有相同分数的条目进行排序 但我们想要做的是对具有相同分数的所有条目给予相同的排名 例如在以下情况 redis 127
  • lua http套接字超时

    LuaSocket HTTP 模块文档说可以在 HTTP 连接上设置超时 可以设置以下常量来控制 HTTP 模块的默认行为 PORT 用于连接的默认端口 PROXY 用于连接的默认代理 TIMEOUT 设置所有I O操作的超时时间 USER
  • 如何在aerospike中获取ttl为-1的记录集?

    我在aerospike中有很多记录 我想获取ttl为 1的记录 请提供解决方案 只是为了澄清 设置TTL 为 1 https github com aerospike aerospike client go blob master docs
  • Lua userdata:无法同时进行数组访问和方法

    我遇到了这个人的问题 Lua userdata数组访问及方法 https stackoverflow com questions 26970316 lua userdata array access and methods 其中 当我设置用
  • 如何在Conky中实现一个基本的Lua功能?

    我正在尝试向我的 Conky 添加一个函数 该函数打印字符串的长度以用于调试目的 代码位于名为的文件内test lua 非常简单 function test word return string len word end 我这样加载它 在我
  • Lua中如何获取表中的最大整数?

    Lua中如何获取表中的最大整数 在Lua 5 1及更早版本中 你可以使用 math max unpack 1 2 3 4 5 这受到Lua堆栈大小的限制 在 PUC Lua 5 1 上 该值的最大值可达 ca 8000 个数字 如果堆栈空闲
  • lua中的权限问题

    是否需要在 corona build settings 中设置一些特定权限才能将高分永久保存在文件中 每次运行代码时都会出现 权限被拒绝 的错误 如何纠正这个错误 这是我尝试过的代码 function read score local f1
  • 安装Lua套接字库

    要么我太累了 要么我瞎了 我想学习 Lua 网络 因此我必须安装socketlib 所以我可以轻松地要求它 但我不知道我应该 要求 哪些文件 例子说 local socket require socket 但正如我所说 如果我使用 我不知道
  • 如何在我的 Lua 脚本中添加“睡眠”或“等待”?

    我正在尝试通过更改一天中的时间来为游戏制作一个简单的脚本 但我想快速完成 这就是我要说的 function disco hour minute setTime 1 0 SLEEP setTime 2 0 SLEEP setTime 3 0
  • Openresty 中的并发模型是什么?

    我很难理解 openresty 或 nginx 的并发模型 我读了Lua变量作用域 http wiki nginx org HttpLuaModule Lua Variable Scope 它解释了变量的生命周期 但它没有说明对它们的并发访
  • 如何在lua中获取shell脚本的返回码?

    我正在lua中执行一个脚本 os execute sh manager scripts update system sh f 我想获得脚本的输出 如果退出状态为 7 则返回 7 I tried local output os execute
  • 如何通过 C API 在自己的环境中执行不受信任的 Lua 文件

    我想通过调用在其自己的环境中执行不受信任的 lua 文件lua setfenv http pgl yoyo org luai i lua setfenv这样它就不会影响我的任何代码 该函数的文档仅解释了如何调用函数 而不解释如何执行文件 目
  • Lua C API:初始化结构体 C 中的变量矩阵

    我正在尝试使用 Lua C API 创建一个用户数据 并在其中关联一个元表 我将在其中收集矩阵 我无法得到的是如何将初始化矩阵的每个分量设置为零 我按照我的描述编译我的 Lua 模块 C 代码here https stackoverflow
  • 如何让我的 add 命令找到第一个变量和第二个变量的值,然后将它们加在一起?

    vars values function open file lex file end function lex file local data io open file r for char in data lines do Print
  • Lua 上的 For 循环

    我的作业是如何执行 for 循环 我已经从数字上弄清楚了 但无法从名称上弄清楚 我想创建一个 for 循环来运行名称列表 以下是我到目前为止所拥有的 names John Joe Steve for names 1 3 do print n

随机推荐

  • 如何判断页面是否使用selenium加载?

    我正在与一个数据库进行交互 该数据库返回有关使用硒的事件的报纸报道 每次我执行搜索查询时 数据库都会打开一个新页面并开始加载有关该事件的所有报纸报道 该网页有一个元素报告找到的相关报告的总数 在页面完全加载之前 数字会发生变化 我的问题是有
  • 在 swift 中从地图计算距离和预计到达时间

    我目前正在使用下面的代码 它将打开带有前往某个目的地的驾驶指南的地图 let lat1 NSString 57 619302 let lng1 NSString 11 954928 let latitute CLLocationDegree
  • 集成测试 ASP.NET MVC 应用程序

    我需要一些关于为我们当前的 ASP NET MVC 应用程序编写集成测试的有效方法的建议 我们的架构包括 控制器下面的服务层 服务层 有时 使用存储库和消息队列将消息发送到外部应用程序 我认为应该做的是 单独为所有部分编写行为单元测试 因此
  • 简单的 HTML DOM - 子选择器 (CSS)

    我正在尝试选择父母的 直接 孩子div element使用 gt 组合器 但它失败了 HTML div class element p test p div div class element div class selected p te
  • 如何在c中打印utf-16字符

    int main char c 0x41 printf char is c n c c 0xe9 printf char is c n c unsigned int d 0x164e printf char is c n d return
  • 如何使用makefile包含C中另一个目录中的.a静态库和.h文件?

    我创建了一个 h头文件 实现并创建 a静态库文件 它们都位于目录中 home data folder1 我还有一个 c将使用链接的文件 h头文件和 a库文件 但是 那 c文件在目录中 home data folder2 我应该在 Makef
  • HTTP POST 请求上的跨源请求被阻止

    我正在将 http 请求从我的 Angular 客户端应用程序发送到 NET Core Web API 尽管我启用了 CORS 但还是收到 CORS 错误 当我向 SearchController 发送 GET 请求时 一切顺利 但是当我向
  • Clojure 的计算机代数

    简洁版本 我对一些 Clojure 代码感兴趣 它允许我指定 x 的变换 例如排列 旋转 在这些变换下函数 f x 的值是不变的 这样我就可以有效地生成满足 r 的 x 序列 f x Clojure 的计算机代数方面有进展吗 对于 一个简单
  • Angular url 加号转换为空格

    我有角度应用程序 我想在其中传递加号 在查询字符串中 例如 http localhost 3000 page name xyz manwal 当我点击这个 URL 时 它会转换为 http localhost 3000 page name
  • GitPython:git push - 设置上游

    我使用 GitPython 克隆主分支并签出功能分支 我进行本地更新 提交并推送回 git 代码片段如下所示 注意 我的分支名称是 feature pythontest def git clone repo Repo clone from
  • Bouncy Castle API 线程安全吗?

    Is 充气城堡 API http bouncycastle org java html线程安全 尤其 org bouncycastle crypto paddings PaddedBufferedBlockCipher org bouncy
  • W3C 兼容 URL 的正则表达式?

    我正在尝试为 URL 找到一个符合 HTML5 url 输入类型 将在 JavaScript 中使用 的 W3C 标准的正则表达式 See W3C 规范的要求 http www w3 org TR html5 urls html valid
  • DbSet表名

    要获取实体框架 4 0 上的数据库表名称 我这样做 ObjectSetInstance EntitySet ToString 有没有办法在 Entity Framework 4 1 上执行此操作 扩展方法数据库上下文 and 对象上下文 p
  • Cypher 查询:查找大图上的最小和最大关系长度

    客观的 查找两种节点类型之间的最小和最大关系长度 Example 以下是节点类型 T 的虚拟连接 Aplha gt Bravo Bravo gt Charlie 因此 到达两个节点 的最小跳数是 1 即 Alpha 直接链接到 Charli
  • 由于为应用程序池提供服务的进程出现一系列故障,应用程序池“DefaultAppPool”被自动禁用

    Log Name System Source Microsoft Windows WAS Date 13 06 2012 08 34 45 Event ID 5002 Task Category None Level Error Keywo
  • Web服务中的方法重载

    我有 2 个与网络服务相关的问题 我们如何在 Web 服务中实现方法重载 如何在 Web 服务中实现安全性 身份验证 我们如何在 Web 服务中实现方法重载 如果您使用 SOAP 则不能 方法名称在导出的 WSDL 中必须具有唯一的名称 根
  • 如何绑定ViewModel生命周期来撰写

    我现在正在使用 Jetpack Compose 我意识到我可以在可组合项中使用 ViewModel 并在可组合项中初始化视图模型 如下所示 val myViewModel MyViewModel viewModel 但存在一个问题 即使未显
  • 如何解决 Firebug Lite 中“无法读取未定义的属性‘push’”?

    我在 OS X Maverick 上使用 Chrome 在打开 Firebug Lite 测试 AngularJS 应用程序时遇到一些问题 有一条消息 cannot read property push of undefined fireb
  • SQLAlchemy,可序列化事务隔离并以惯用的 Python 方式重试

    PostgreSQL 和 SQL 定义了可串行化事务隔离级别 http www postgresql org docs devel static transaction iso html 如果将事务隔离到此级别 则冲突的并发事务将中止并需要
  • AddEventListener:监听器不能为 nil

    有人可以解释一下这里出了什么问题吗 我一添加AddEventListener就出错了 newBalloon addEventListener tap pushBalloon 完整代码 local composer require compo