Lua 中的 OOP 和事件监听器 (Corona SDK)

2024-01-20

我在 Corona SDK 中的第一步和第一次遇到的麻烦。尝试制作两个盒子,我可以通过以下方式移动它们this http://www.ludicroussoftware.com/blog/2011/07/06/simple-oop-with-inheritance-in-corona/OOP教程,但这不起作用。我已经成功创建了两个盒子,但只有一个是可移动的。当我尝试移动另一个时,它没有移动,但第一个正在移动。猜测范围有问题,但无法确定具体位置。 感谢您的任何帮助。

tile.lua源代码:

module (..., package.seeall)


function new(initX, initY)

    local scrnWidth = display.stageWidth
local scrnHeight  = display.stageHeight
local squareSize = (scrnWidth*0.9)/4

   local tile = display.newRect( initY, initY, squareSize, squareSize )

   function move(direction)
       if direction == "left" then
            transition.moveTo(tile, {x = tile.x+squareSize,y = tile.y,time = 200})
    elseif direction == "right" then
            transition.moveTo(tile, {x = tile.x-squareSize,y = tile.y,time = 200})
    elseif direction == "up" then
            transition.moveTo(tile, {x = tile.x,y = tile.y-squareSize,time = 200})
    elseif direction == "down" then
            transition.moveTo(tile, {x = tile.x,y = tile.y+squareSize,time = 200})
    end
   end


function tile:touch(event)
        if event.phase == "began" then
            display.getCurrentStage():setFocus( tile )
                beginX = event.x
                beginY = event.y
        end

        if event.phase == "ended"  then
                endX = event.x
                endY = event.y
            display.getCurrentStage():setFocus(nil)

                checkSwipeDirection();
        end
    end

function checkSwipeDirection()

        xDistance =  math.abs(endX - beginX) -- math.abs will return the absolute, or non-negative value, of a given value. 
        yDistance =  math.abs(endY - beginY)

        if xDistance > yDistance then
                if beginX > endX then
                        move("right",tile)
                else 
                       move("left",tile)

                end
        else 
                if beginY > endY then
                        move("up",tile)
                else 
                        move("down",tile)
                end
        end

end

tile:addEventListener("touch", tile)
   return tile

end

我在 main.lua 中使用以下代码创建对象:

    local tileConst = require("tile")
    local tile1 = tileConst.new(100,100)
    local tile2 = tileConst.new(200,200)

In your tile.lua场景,声明一个变量来保存下面触摸的精灵module (..., package.seeall):

local touchedSprite -- my temporary sprite variable

然后将目标精灵分配给函数内的上述变量,如下所示:

function tile:touch(event)
    touchedSprite = event.target -- Assigning target to variable
    ...
end

现在更改功能move如下:

function move(direction)
  if direction == "left" then
    transition.to(touchedSprite, {x = touchedSprite.x+squareSize,y = touchedSprite.y,time = 200})
  elseif direction == "right" then
    transition.to(touchedSprite, {x = touchedSprite.x-squareSize,y = touchedSprite.y,time = 200})
  elseif direction == "up" then
    transition.to(touchedSprite, {x = touchedSprite.x,y = touchedSprite.y-squareSize,time = 200})
  elseif direction == "down" then
    transition.to(touchedSprite, {x = touchedSprite.x,y = touchedSprite.y+squareSize,time = 200})
  end
end

请注意我已经改变了transition.moveTo to transition.to和你的transition tile to touchedSprite(target).

继续编码............:)

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

Lua 中的 OOP 和事件监听器 (Corona SDK) 的相关文章

  • 设置私有 luarocks 存储库

    对于我的设置 我需要一个 luarocks rock 的私有存储库 我可以将它们安装在我的开发环境中 而无需连接到互联网 为 luarocks 设置远程存储库的步骤是什么 我可以使用 sftp 服务器吗 有人有过这样的经历吗 在深入研究这个
  • 如何在 Lua 中下载文件,但在运行时写入本地文件

    我正在尝试制作一个更新程序 以便当我的 Lua 应用程序过时时它将使用LuaSocket下载较新的 exe 文件 可以运行我的 Lua 代码 在这个更新程序中 我希望它显示到目前为止已下载的数量 但是 通过以下 HTTP 请求 它会阻止应用
  • 无法在cmake中使用find_package找到Lua标头

    我正在尝试使用 CMake 为我使用 Lua 的项目构建生成 make 文件 当我运行 make 时出现此错误 path to my project luaudio luaudio c 1 17 fatal error lua h No s
  • Lua:C++模块无法互相引用,未定义的符号

    我创建了两个模块 共享对象 CPU 和 SaveState 作为模拟器的一部分 两者都独立编译成 so 单独文件 并在运行时由 Lua 脚本使用 require 加载 IE SaveState require SaveState CPU r
  • 访问 Lua 类型元表

    显然 getmetatable 可以访问几种类型的元表 getmetatable getmetatable getmetatable newproxy true 然而 似乎您无法获取其他类型的元表 除了函数 似乎无法访问数字 布尔值或 ni
  • 如何将 Lua 嵌入到 Python 3.x 中?

    是否可以将 Lua 嵌入到 Python 3 x 中 如果是这样 我如何在我的 Python 程序中运行和执行 Lua 脚本 语言之间的交互有多好 例如 Lua 是否可以访问 Python 的所有变量和类以及 Python 是否可以访问 L
  • Lua:“拖动”数组中的元素序列

    我正在尝试创建一个函数 将连续数量的元素 拖动 到数组中的新位置 并限制为数组的当前大小 其他项目应该围绕 拖动 的项目晃动 例如 如果我的数组有 7 个元素 并且我想拖动中间的三个 1 2 3 4 5 6 7 lt keys a b C
  • 使用 EVAL、SCAN 和 DEL 的 Redis 通配符删除脚本返回“非确定性命令后不允许写入命令”

    因此 我正在寻求构建一个 lua 脚本 该脚本使用 SCAN 根据模式查找键并删除它们 原子地 我首先准备了以下脚本 local keys local done false local cursor 0 repeat local resul
  • 在 lua 中使用相等运算符比较数字有多安全?

    在我的引擎中 我有一个用于脚本编写的 Lua VM 在脚本中 我写了这样的内容 stage stage 1 if stage 5 then end and objnum tonumber 5 if stage objnum 根据 Lua 来
  • LuaJit FFI 从 C 函数返回字符串到 Lua?

    假设我有这个 C 函数 declspec dllexport const char GetStr static char buff 32 Fill the buffer with some string here return buff 这
  • 如何更新lua中的时间以反映执行过程中系统时区的变化?

    Problem 我想修改awful widget textclockAwesome wm 中的小部件可以立即反映系统时区的更改 这个小部件和所有的 Awesome wm 配置都是用 lua 编写的 目前 如果系统时区发生更改 小部件将继续根
  • 如何在多个Lua State(多线程)之间传递数据?

    我在中启动Redis连接池redis lua 通过从 C 调用 我得到了redis lua state 此 Lua 状态全局启动一次 仅在其他线程中启动get从中 当有一个 HTTP 请求 工作线程 时 我需要从redis lua stat
  • Lua:冒号符号、“自我”和函数定义与调用

    我对定义 调用 Lua 函数时使用的冒号表示法感到非常困惑 我以为我已经明白了 直到我看到这段代码 function string PatternSafe str return str gsub pattern escape replace
  • 使用 corona sdk 验证电子邮件地址

    在我的项目中 有一个供用户填写详细信息的表单 其中有一个文本字段用于输入用户的电子邮件 ID 所以我需要在 corona 项目中验证该文本字段中的电子邮件 试试这个正则表达式 local email email protected cdn
  • 用于嵌入式服务器的 Web 技术

    我最近开始了一个针对嵌入式设备的新 Web 开发项目 并希望征求一些有关使用技术的建议 该设备将提供 HTML 页面 其中包括用于从 JSON 服务器检索数据的 AJAX 代码 我们暂时使用 Cherokee 作为 Web 服务器 但我们并
  • corona sdk中拖动物理对象

    我尝试在场景中拖动重力 0 0 的动态主体 我有一个主体类型为动态的正方形 以及一个主体类型为静态的图像 但是当将方形拖动到图像上时 它会产生一点力 但是可以超出图像并传递到另一边 如图所示 这是我拖动正方形的代码 local functi
  • Lua-迭代嵌套表

    我已经学习 Lua 几个星期了 这一次又一次成为我的症结所在 我尝试阅读有关该主题的帖子和书籍 我使用 Lua 查询软件监控系统 Nimsoft 我的数据以表格形式返回给我 我不会发布整个输出 但这里有一个我认为可以描述结构的片段 表参考是
  • Lua中按字符分割字符串

    我有像这样的字符串 ABC DEF 我需要将它们分开 字符并将两个部分分别分配给一个变量 在 Ruby 中 我会这样做 a b ABC DEF split 显然Lua没有这么简单的方法 经过一番挖掘后 我找不到一种简短的方法来实现我所追求的
  • 如何通过 C API 在自己的环境中执行不受信任的 Lua 文件

    我想通过调用在其自己的环境中执行不受信任的 lua 文件lua setfenv http pgl yoyo org luai i lua setfenv这样它就不会影响我的任何代码 该函数的文档仅解释了如何调用函数 而不解释如何执行文件 目
  • 关闭 Löve2D 中的抗锯齿功能

    我在用着L ve2D http love2d org用于编写一个小游戏 L ve2D 是 Lua 的开源游戏引擎 我遇到的问题是 当您在非整数位置绘制精灵时 某些抗锯齿过滤器会自动应用于精灵 love graphics draw sprit

随机推荐

  • iOS 8 CGAffineTransformMakeScale + 自动布局不再工作

    似乎有一些帖子与我的问题相关 但似乎没有任何帮助 使用自动布局时如何调整 CALayer 的锚点 https stackoverflow com questions 12943107 how do i adjust the anchor p
  • 如何使用 IN 条件访问 SQLite.swift 中的 FTS 表

    我正在尝试使用 SQLite swift 查询 FTS 表 之前我在Android上做过 https stackoverflow com questions 29815248 full text search example in andr
  • Scala Future 和 java 8 CompletableFuture

    的简介CompletableFuturesJava 8 带来了可用的语言功能scala concurrent Future例如一元变换 有什么区别 以及为什么 Scala 开发人员应该更喜欢 Scala Futures 而不是 java 8
  • 防止 Web 应用程序中同时发生事务

    我们有一个 Web 应用程序 它是一个游戏 其中包含许多不同的表单和元素 它们充当按钮并触发服务器上的一些操作 问题是 如果用户单击按钮太快或在两个选项卡中打开网站 然后同时发出一些操作 有时可能会混淆我们的应用程序 我们有一些基本的保护
  • 在 S3 存储桶之间移动文件的最佳方式?

    我想每天将一些文件从生产存储桶复制到开发存储桶 例如 复制 Productionbucket feed feedname date 到developmentbucket feed feedname date 由于我想要的文件在文件夹结构中太
  • 多个 RTSP 流不工作

    我在 Activity 中使用了 4 个 VideoView 如果 uri1 可用且其他 uri 不可用 则意味着所有视频视图都显示 uri1 的视频 如果其他 uri 可用但 uri1 未启动 则意味着所有视频视图均未显示任何内容 指导我
  • 打开 Chrome 或 Firefox,无需选项卡和其他菜单项,并设置屏幕位置和大小

    我需要在设定的位置启动 Chrome 或 Firefox 具有设定的大小 并且没有选项卡和其他菜单项 最终目标是一个桌面图标 我可以单击桌面图标以在桌面上的 x y 处获得一个 X 宽 Y 高的窗口 显示特定页面 而无需将这些设置永久保留在
  • vc++ 应用程序中的看门狗

    我写了一个简单的vc 后台应用程序 我正在尝试的就像一个看门狗服务 可以监视应用程序是否正在运行 如果应用程序崩溃 那么服务应该启动应用程序 为了通过 Windows 安装程序创建安装程序 我仅使用 app exe 和 app dll 是否
  • WPF - 绑定到菜单图标

    我有一个包含菜单的用户控件 我需要将 Menu Icon 绑定到 UserControl 的属性 但它不起作用 代码是这样开始的
  • 从可执行文件创建 Windows 服务

    是否有任何快速方法可以根据给定的可执行文件创建 Windows 服务 并在启动时启动它 要从可执行文件创建 Windows 服务 您可以使用sc exe sc exe create
  • Code OSS 和 Visual Studio Code 之间的差异

    正如开发商所说here https github com Microsoft vscode issues 60 issuecomment 161792005 所有这一切的最酷之处在于 您可以选择在我们的许可下使用 Visual Studio
  • 如何实现跨应用导航并导航回Fiori launchpad主页?

    在我们公司 我们建立了 Fiori 启动板 在其中 我们配置了一个链接到自定义开发的 SAPUI5 应用程序的磁贴 该应用程序作为 BSP 部署在服务器上 我们花了很长时间 但使用该应用程序中的路由器模式 我们成功地实现了从启动板磁贴到自定
  • 有没有脚本 SVG 编辑器?

    我想使用某种脚本语言 最好是 Python 编辑 SVG 文件 特别是 我想合并两个 SVG 文件 添加一些注释 并将它们排列在更大的图像中 有没有可用于此类目的的软件 Thanks Bartosz UPDATE 我最终决定使用nosklo
  • 网页字体大小中的px到底代表什么

    我正在做一些图形 在Javascript中 如果相关的话 我知道你可以使用pt px 等查找什么时px这意味着 每个网站似乎都有相同的模糊答案 字体大小 以像素为单位 我想知道什么exactly px代表 例如 如果我有20px 20 像素
  • 尝试与 Web 服务通信时遇到“没有到主机的路由”错误

    我正在尝试与我的笔记本电脑上的网络服务进行通信 并使用 Android 手机作为客户端 我试图做一个简单的登录功能 但是 每当客户端尝试与 Web 服务通信时 Eclipse 上的 DDMS 中就会弹出此错误 我可以通过家庭网络访问网络服务
  • Android 离线语音识别只显示一个结果?

    我已经设置了语音识别服务 如本文所示Android 语音识别作为 Android 4 1 和 4 2 上的服务 https stackoverflow com questions 14940657 android speech recogn
  • 如何使 Jinja2 中的 tojson() 过滤器输出 Unicode 而不是转义序列?

    我的模板是用于JS的 let SETTINGS settings tojson 4 我的设置是一个字典 name Russian name id 12345 如果我渲染它 我会得到 let SETTINGS name Russian nam
  • 使用用户变量访问结构成员

    假设我有一个结构如下 struct person int age char name 24 person 用户给出程序应该读取哪个结构成员的参数 program age int main int argc char argv int i i
  • 使用四边形的重心坐标

    你们中的一些人知道如何使用重心填充二维四边形 坐标 目前 我将四边形分成2个三角形 但这种方式效率低下 因为我必须迭代第二个 边界框重复先前填充的像素 通过 例如 为了填充第二个三角形 我遍历了第一个三角形 属于由第二个三角形形成的边界框
  • Lua 中的 OOP 和事件监听器 (Corona SDK)

    我在 Corona SDK 中的第一步和第一次遇到的麻烦 尝试制作两个盒子 我可以通过以下方式移动它们this http www ludicroussoftware com blog 2011 07 06 simple oop with i