Как запустить скрипт карты без переключения на эту карту в 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

Основа

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), но получил ошибку. Ошибка говорит "не удается найти обработчик".

Как я могу это сделать?


person Mai    schedule 31.12.2014    source источник


Ответы (1)


Вы можете переместить код из обработчика 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
person Mark    schedule 31.12.2014
comment
Блокировка экрана может быть эффективной при подготовке приложения, такого как экран загрузки. Спасибо за вашу помощь. - person Mai; 01.01.2015