【发布时间】:2016-12-20 05:30:57
【问题描述】:
我是 Lua 编程的新手,在尝试将图像从一组坐标移动到另一个坐标时遇到问题。
我正在尝试创建的是与 X-Plane 飞行模拟器一起使用。有一个名为 SASL (www.1-sim.com) 的库,它的创建是为了使插件(用于 X-Plane)的创建更容易,因为默认语言是 C++,很多人觉得很难。
通常,SASL 充当 Lua 和 X-Plane 之间的桥梁,一般来说,您编写的脚本在 X-Plane (DataRefs) 运行时直接从 X-Plane (DataRefs) 读取一些数据,具体取决于您编写的代码执行命令或许多其他可能的事情。
因此,当使用 SASL 创建驾驶舱/面板仪表时,它使用一个名为“avionics.lua”的基本文件,该文件作为一个类工作,并加载您为正在处理的特定飞机创建的所有仪表。例如,我的 avionics.lua 文件如下所示:
size = { 2048, 2048 }
components = {
flaps {};
};
其中,'size' 是用于绘制的东西的大小,components 是一个仪表数组,在本例中是襟翼仪表。
剩下的工作是创建仪表功能,这是在一个单独的文件中完成的,在我的例子中,称为“flaps.lua”。
在flaps.lua 中,我需要编写襟翼指示器功能来加载2 张图像:一张用于背景,第二张用于襟翼指示器。
第一张图片是固定图片。第二个将根据襟翼指示器 DataRef(下面的襟翼度属性)沿“y”轴移动。
当 X-Plane 运行时,下面的代码会在其第一阶段显示背景图像和襟翼指示器,如您在图像上看到的那样为 0。
size = {78,100}
local flapsDegree = globalPropertyf("sim/cockpit2/controls/flap_ratio")
local background = loadImage("gfx/Flaps.png")
local indicator = loadImage("gfx/Flaps_Indicator.png")
local flaps = get(flapsPosition)
components = {
texture { position = {945, 1011, 60, 100}, image = background},
texture { position = {959, 1097, 30, 9}, image = indicator},
}
现在,当我需要实现将“指标”图像通过“y”轴移动的逻辑时,问题就来了。
我试过这段代码没有成功:
if flaps == 0.333 then
indicator.position = {959, 1075, 30, 9}
end
那我该怎么做呢?
【问题讨论】:
-
我只能假设您在谈论这个库github.com/der-On/sasl,因为本机 Lua 不提供任何这些功能。请添加更多信息。我不应该用谷歌搜索你在说什么代码......
-
是的,这是正确的。告诉我您需要哪些信息,以便我提供给您。
-
告诉我们更多关于你的项目,你使用了哪些库,也许是一些你想要什么以及你得到什么的屏幕截图等等......到目前为止,我的印象是你甚至没有阅读该库的文档,因为它描述了如何在特定坐标处绘制东西。我敢肯定,您还有超过 8 行代码可以与我们分享。
-
来自 github 的文档非常过时,当前的 SASL 在这里:www.1-sim.com。至于阅读文档,我已经阅读过,问题是文档只有对每个功能的描述,没有使用示例,这对我来说很复杂。至于代码,flaps.lua 文件中的所有代码都已经在帖子中了。如果您希望我们可以在此处打开聊天或Skype,我认为这会更好。
-
我不知道那个库。 99.999% 的用户也会在这里。所以如果你想帮助你更好地编辑你的问题,假设你问的人不知道你在说什么。只是对编程语言有很好的理解以及阅读文档和使用其他库的经验。其他所有重要的事情,比如你有什么文件,它们如何协同工作都应该来自你。