Живой код не распознает значение переменной - PullRequest
0 голосов
/ 10 января 2019

Я создал приложение в Livecode, в котором на карте девять кнопок. Восемь кнопок воспроизводят короткие музыкальные сэмплы и имеют переменную, в которой хранится количество нажатий кнопки. Удерживая кнопку мыши, кнопки можно перетаскивать и вокруг карты. Девятая кнопка запускает скрипт, который просматривает переменные, связанные с восемью кнопками сэмплов, и гарантирует, что все сэмплы были прослушаны хотя бы один раз. Сценарий помещает восемь переменных в одну переменную и затем проверяет, не являются ли они пустыми. Если это так, скрипт возвращает сообщение об ошибке, предлагающее убедиться, что они прослушали все образцы. У меня проблема в том, что это работает для всех, кроме одной кнопки - кнопки, связанной с переменной gVar08. Если эта кнопка не была нажата, gVar08 остается пустым и не вызывает сообщение об ошибке. Я не могу понять, почему. Сценарии, связанные с кнопкой примера и кнопкой оценки, представлены ниже.

#Code for music sample button
global gVar08
on mouseDown
   wait 30
   if the mouseClick then
   play audioClip "samples/C1/C1-8ConcertoForViolinStringsAndHarpsichordInGR202IAllegroMolto.wav"
   set the filename of image "icn08" to "icons/if_abstract_symbol-03_1571964a.png"
   add 1 to gVar08
   else
      grab me
      end if
end mouseDown


#Code assigned to 9th button: Check to see if all samples played at least 1x
global gVar01, gVar02, gVar03, gVar04, gVar05, gVar06, gVar07, gVar08, gErr01
local sClct
on mouseUp
   put gVar01, gVar02, gVar03, gVar04, gVar05, gVar06, gVar07, gVar08 into sClct
   repeat for each item local in sClct
      if local = "" then
         answer "Have you listened to all of the samples?  Be sure to play them all."
         add 1 to gErr01
         break
      end if
   end repeat 
end mouseDown

Ответы [ 3 ]

0 голосов
/ 12 января 2019

Я не смог заставить работать ваш код кнопки Music Sample, возможно, из-за того, что функция mouseClick в обработчике mouseDown не сработала, поэтому я предложил эту опцию:

global gVar08
local sMove

on mouseUp
   if sMove then
      put empty into sMove
      exit to top --Avoids playing the audio and adding 1 to gVar08 on move
   end if
   play audioClip "samples/C1/C1-8ConcertoForViolinStringsAndHarpsichordInGR202IAllegroMolto.wav"
   set the filename of image "icn08" to "icons/if_abstract_symbol-03_1571964a.png"
   add 1 to gVar08
end mouseUp

on mouseStillDown
   if the mouse is down then
      put "true" into sMove
      grab me
   end if
end mouseStillDown

Надеюсь, это поможет.

Пол

0 голосов
/ 20 января 2019

Вам нужна запятая и «» после gVar08 в списке. Когда он пуст, список заканчивается на 7. Добавление a всегда должно включать последнее значение, даже если оно пустое.

0 голосов
/ 12 января 2019

Поскольку local является зарезервированным словом, вы пытались использовать другую переменную?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...