如何在不切换到Livecode中的卡的情况下运行卡片脚本?

时间:2014-12-31 15:09:13

标签: startup livecode

我有一张带五张卡的livecode项目。 第一张牌有一个标签“label1”, 第二张卡片有两个标签“Greeting”和“Word”, 第三张牌有一个按钮“button1”, 第四张卡片有一个文本框“text1”, 第五张牌有一个标签“HelloWord”。

我的目标是向上面提到的所有控件显示“Hello”。

我在每张卡片中都有此代码

卡1

on openCard
put "Hello" to field "label1"
end openCard

卡2

on openCard
put "Hello" to field "Greeting"
put "Hello" to field "Word"
end openCard

卡3

on openCard
put "Hello" to button "button1"
end openCard

卡4

on openCard
put "Hello" to field "text1"
end openCard

卡5

on openCard
put "Hello" to field "HelloWord"
end openCard

Mainstack

on openStack
go to card "card1"
go to card "card2"
go to card "card3"
go to card "card4"
go to card "card5"
end openStack

这些代码正在运作。

但我希望程序在启动时在每张卡中执行那些on openCard脚本,而无需转到另一张卡。

我尝试在on openStack(没有go to card脚本)中执行这些脚本但是我收到了错误。错误说“无法找到处理程序”。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以将代码从openCard处理程序移动到另一个处理程序,例如initializeCard并从openCard和openStack处理程序中调用该处理程序。但是,如果卡执行脚本并引用该卡上的对象,则可能会获得object not found处理程序。因此,您需要使用of meof card <card name>明确地引用卡片上的对象。

on openStack
  repeat with x = 1 to number of cards
    send "initializeCard`to card x
  end repeat
end openStack

// example for card 2
on initializeCard
  put "Hello" to field "Greeting" of me
  put "Hello" to field "Word" of me
end initializeCard

您的所有卡片的脚本也是一个很好的解决方案,但您可能想要锁定屏幕,使其看起来像您没有切换卡片:

on openStack
  lock screen
  go cd "card1"
  go cd "card2"
  go cd "card3"
  go cd "card4"
  go cd "card5"
  go cd "card1"
  unlock screen
end openStack