我有一张带五张卡的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
脚本)中执行这些脚本但是我收到了错误。错误说“无法找到处理程序”。
我该怎么做?
答案 0 :(得分:0)
您可以将代码从openCard处理程序移动到另一个处理程序,例如initializeCard
并从openCard和openStack处理程序中调用该处理程序。但是,如果卡执行脚本并引用该卡上的对象,则可能会获得object not found
处理程序。因此,您需要使用of me
或of 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