显示对象在LUA中可以有运行时事件吗?
2014-2-27 7:53:24
收藏:0
阅读:114
评论:2
我在想,如果我的图像可以有一个运行时事件,如果满足某个条件,对象将触发其运行时事件。
myImage = display.newImage("MYIMAGE")
myImage:addEventListener("enterFrame", myImage)
myImage.occurence = onEventTriggered
我不确定这段代码是否有效,因为我当前的计算机上没有LUA / Corona。
点赞
用户1870706
你可以进行基于对象的 enterFrame 处理。它们仍然是 Runtime 对象的一部分,但是可以是表处理程序而不是函数处理程序:
myObject = display.newImageRect("player.png",64, 64)
function myObject:doSomething()
-- do stuff
end
Runtime:addEventListener("enterFrame", myObject)
2014-03-01 04:18:16
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
enterFrame事件仅由Runtime提供,但在enterFrame处理程序中,您可以检查对象的状态并执行每帧所需的任何检查:
`` ` myImage = display.newImage("MYIMAGE") local function enterFrame(event) if myImage.y == 0 then -- 在一秒钟内将其移动到50,50 local settings = { time = 1000, x = 50, y = 50 } transition.to( square, settings) end end Runtime:addEventListener("enterFrame", enterFrame)
`` `
使用此技术,enterFrame和对象是相互独立的:enterFrame将每帧调用一次,在其中您可以检查enterFrame函数可见的任何对象。如果您有对象表,则需要循环对象表内容。例如,
`` ` myImages = {} local function enterFrame(event) for i,image in ipairs(myImages) do if myImage.y == 0 then -- 在一秒钟内将其移动到50,50 local settings = { time = 1000, x = 50, y = 50 } transition.to( square, settings) end end -- 创建新图像: local newImage = display.newImage("MYIMAGE") table.insert(myImages,newImage) end
Runtime:addEventListener("enterFrame", enterFrame) `` `
请注意,如果对象属性上存在现有转换,则必须在启动新转换之前取消该转换。在这种情况下,您将把transition.to的返回值放在表中,并在启动新转换之前检查该表中是否有项目;如果是,则取消它并将其删除。
这个陷阱与转换相关的问题也适用于您在问题的另一个答案中解释的每个对象enterFrame事件。不同的是,使用每个对象enterFrame时,您不需要myImages表。但是,您需要在调用enterFrame之前创建对象,这不是全局enterFrame的情况。如果您在每个帧中生成对象,则需要全局enterFrame。另一方面,您可以同时使用两者:
`` ` local checkConditionPerObject(self,event) if myImage.y == 0 then -- 在一秒钟内将其移动到50,50 local settings = { time = 1000, x = 50, y = 50 } transition.to( self, settings) end end………
local function spawn(event) local newObject = display.newImage(...) newObject.enterFrame = checkConditionPerObject Runtime:addEventListener('enterFrame',newObject) end
local function enterFrameGlobal(event) if someCondition() then spawn() end end
Runtime:addEventListener("enterFrame",enterFrameGlobal) `` `
这提供了很好的关注点分离。