我如何 运行 来自另一个堆栈命令的命令?
How can I run a command from inside another stack command?
我在查找遥测数据的堆栈中有一个回调处理程序。当它得到一些时,我解析它然后想保存它。但是,要保存它需要同一堆栈中的其他函数和命令。
我可以把它放在卡片上,但是放在哪里?我用的是openCard end openCard 卡里就这些了
堆栈具有我需要的所有函数和命令。没有按钮可以按下 运行 保存代码 - 我需要它自动 运行。
我怎样才能把代码块放在卡片上然后得到堆栈'call it'?
我知道如何从卡中调用命令,但不知道如何从堆栈中调用命令。
通常,您只需调用内联命令处理程序或函数处理程序即可:
on mouseUp -- a "main" handler
doSomething -- a command handler
dosomethingElse -- another command handler
put doYetAnotherThing(paramList) into field 1 -- a function handler
end mouseUp
on doSomething
well, do something
end doSomething
on doSomethingElse
you get the picture
...
尝试制作一个简单的主处理程序,为上面的三个 "subRoutine" 调用中的每一个调用做一些愚蠢的琐事。您将在几个小时内成为专家。
必须管理三者的位置。通常,它们驻留在主处理程序所在的脚本中。但他们可以在 LC 的任何地方。
如果您想从另一个脚本调用卡片(或任何其他控件)中的处理程序,您可以使用以下命令之一:
- dispatch "command" 到 control with param1, param2, …
- 发送“命令”到控制[在时间内]
- 将值(命令,控制)放入tResult
即使 命令 没有被 控制 处理,调度也会愉快地继续。你当然可以检查一下。
Send 的优点是您可以及时安排发送转发,但如果您还想发送一些参数会有点困难。
如果您调用函数并希望返回结果,值是很好的候选者。
请注意,“"openCard" 和 "preOpenCard" 消息可以被捕获并在堆栈脚本中工作,只要卡片脚本中没有这样的处理程序。即使有,你可以 "pass" 在卡片脚本处理程序完成处理后的每条消息";
尝试在堆栈上创建一个命令,当用户在该卡上时每调用 X 次。必须对其自身以及用于获取数据的其他操纵器调用此命令。这个机械手将负责保存数据。
# Code on the card
local sTelemetryData
on openCard
// If the card belongs to the pile where all the telemetry is or if this pile is a library.
getTelemetryData
// otherwise you will have to call the getTelemetryData command. You can use send, disparsh, or call.
// call "getTelemetryData" to stack "stack name"
end openCard
# Code on the stack
constant kTime = 100
local sPendingMessageID
on getTelemetryData
if the short name of this card is not "TelemetryData"
then exit getTelemetryData
if sPendingMessageID is a number
then cancel sPendingMessageID
// call the commands and functions that look up the telemetry data.
// The data must be stored in the sTelemetryData variable to save it and at once use this variable as a flag
if sTelemetryData is not empty then
// The data is sent to be saved
end if
put empty into sTelemetryData
send "getTelemetryData" to me in kTime milliseconds
put the result into sPendingMessageID
end getTelemetryData
我在查找遥测数据的堆栈中有一个回调处理程序。当它得到一些时,我解析它然后想保存它。但是,要保存它需要同一堆栈中的其他函数和命令。
我可以把它放在卡片上,但是放在哪里?我用的是openCard end openCard 卡里就这些了
堆栈具有我需要的所有函数和命令。没有按钮可以按下 运行 保存代码 - 我需要它自动 运行。
我怎样才能把代码块放在卡片上然后得到堆栈'call it'?
我知道如何从卡中调用命令,但不知道如何从堆栈中调用命令。
通常,您只需调用内联命令处理程序或函数处理程序即可:
on mouseUp -- a "main" handler
doSomething -- a command handler
dosomethingElse -- another command handler
put doYetAnotherThing(paramList) into field 1 -- a function handler
end mouseUp
on doSomething
well, do something
end doSomething
on doSomethingElse
you get the picture
...
尝试制作一个简单的主处理程序,为上面的三个 "subRoutine" 调用中的每一个调用做一些愚蠢的琐事。您将在几个小时内成为专家。 必须管理三者的位置。通常,它们驻留在主处理程序所在的脚本中。但他们可以在 LC 的任何地方。
如果您想从另一个脚本调用卡片(或任何其他控件)中的处理程序,您可以使用以下命令之一:
- dispatch "command" 到 control with param1, param2, …
- 发送“命令”到控制[在时间内]
- 将值(命令,控制)放入tResult
即使 命令 没有被 控制 处理,调度也会愉快地继续。你当然可以检查一下。 Send 的优点是您可以及时安排发送转发,但如果您还想发送一些参数会有点困难。 如果您调用函数并希望返回结果,值是很好的候选者。
请注意,“"openCard" 和 "preOpenCard" 消息可以被捕获并在堆栈脚本中工作,只要卡片脚本中没有这样的处理程序。即使有,你可以 "pass" 在卡片脚本处理程序完成处理后的每条消息";
尝试在堆栈上创建一个命令,当用户在该卡上时每调用 X 次。必须对其自身以及用于获取数据的其他操纵器调用此命令。这个机械手将负责保存数据。
# Code on the card
local sTelemetryData
on openCard
// If the card belongs to the pile where all the telemetry is or if this pile is a library.
getTelemetryData
// otherwise you will have to call the getTelemetryData command. You can use send, disparsh, or call.
// call "getTelemetryData" to stack "stack name"
end openCard
# Code on the stack
constant kTime = 100
local sPendingMessageID
on getTelemetryData
if the short name of this card is not "TelemetryData"
then exit getTelemetryData
if sPendingMessageID is a number
then cancel sPendingMessageID
// call the commands and functions that look up the telemetry data.
// The data must be stored in the sTelemetryData variable to save it and at once use this variable as a flag
if sTelemetryData is not empty then
// The data is sent to be saved
end if
put empty into sTelemetryData
send "getTelemetryData" to me in kTime milliseconds
put the result into sPendingMessageID
end getTelemetryData