Как скрыть определенный спрайт в царапинах? - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь написать рабочий код, в котором при нажатии кнопки будет отображаться определенный спрайт, а при нажатии другой кнопки будет отображаться другой спрайт, первый должен исчезнуть.

Я хочу знатьосновная особенность царапины, которая должна использоваться здесь.

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Есть несколько разных способов сделать это.Есть способы сделать это с меньшим количеством сценариев или меньшим количеством спрайтов и используя различные методы.Вот два способа, показывающие два разных метода и бонус в конце.

Давайте начнем с самого простого пути.

4 спрайта, 8 скриптов, 16 блоков.Использует трансляции.

В этом мы будем использовать четыре спрайта:

Scratch | Gobo | ShowGoboButton | ShowScratchButton

У нас есть скретч-спрайт,Спрайт Gobo, спрайт ShowGoboButton и спрайт ShowScratchButton.

Каждый из этих спрайтов содержит сценарии.

Для двух спрайтов, которые отображаются и исчезают при нажатии кнопок - Gobo и Scratch- нам нужно, чтобы они показывались и исчезали, когда происходит событие - когда нажата кнопка.Что-то должно произойти, когда кнопка нажата.Как мы это делаем?С КОГДА ЭТОМ СПРИТ-ЩЕЛЧКОМ.Используя это вместе с другим блоком, блоками BROADCAST, мы можем заставить его что-то делать при нажатии.

Так вот, что спрайт ShowGoboButton имеет в своих скриптах:

WHEN THIS SPRITE CLICKED, BROADCAST

Когда кнопка нажата, она передает сообщение ... но в данный момент оно передает в пустоту.Никто не слушает радиопередачу.Спрайты Гобо (и Царапины) должны прослушивать трансляцию, а затем показывать или скрывать в зависимости от того, что он слышит.

Вот что Гобо скрывает в сценариях:

WHEN GREEN FLAG CLICKED, SHOW | WHEN I RECEIVE

Сценарий WHEN GREEN FLAG CLICKED показывает спрайт при запуске проекта.Два других, которые начинаются с блока шляпы WHEN I RECEIVE, - это то, как он прослушивает трансляцию.Он слушает оба сообщения, и если он правильный, он показывает.Если он неправильный, он скрывается.

От них экстраполируйте на два других спрайта - это точно такой же код, но в обратном порядке.

Это самый простой и эффективный способи способ, которым новичок будет лучше всего делать.Однако, если вы находитесь на немного более высоком уровне, тогда лучше использовать переменные.

4 спрайта, 4 скрипта, 26 блоков.Использует переменные.

Вместо широковещания, теперь мы установим переменную.Переменная может быть найдена в разделе «Данные» при поиске блоков.

Так что подождите - что такое переменная, точно?
Переменная похожа на блок, который временно содержит то, что выположить в это.Вы можете поместить любую переменную в переменную - числа, буквы, смесь ...

Таким образом, наша переменная будет называться "WhichSpriteShows", и мы собираемся использовать это поле для хранения данных длякакой спрайт должен показывать.

Попадая в код, оглянемся на трансляции.Вместо того, чтобы кнопка транслировалась, теперь мы установим переменную.

Так вот, что сейчас делает GoboButton:

WHEN THIS SPRITE CLICKED, SET

Кнопка больше не передает сообщение;теперь он просто меняет то, что находится в коробке.

И поэтому теперь, вместо того, чтобы Гобо слушал трансляцию, мы заставили Гобо обратить внимание на то, какая переменная установлена ​​- что находится в коробке.

Вот что у Гобо внутри:

WHEN GREEN FLAG CLICKED, SET

Вау, вау, вау.Что с FOREVER, спросите вы.Почему мы сначала устанавливаем для WhichSpriteShows значение 0?Почему бы просто не скрыть спрайт, если для переменной задано что-либо, кроме "Gobo", вставив простой блок HIDE в часть ELSE блока IF ..., ELSE вместо выполнения, казалось бы, избыточной проверки, чтобы увидеть, установлено ли для нее значение "Поцарапайте "?

FOREVER необходим, чтобы скрипт всегда прослушивал, чтобы видеть текущее состояние переменной.

Решение установить" WhichSpriteShows "в" 0 "вначало, а также дополнительная проверка, чтобы увидеть, установлено ли это для определенного ELSE, чтобы оба спрайта показывались в начале, когда щелкают по зеленому флагу.Если вы этого не хотите, вы можете изменить код соответствующим образом:)

Как и в случае трансляций, экстраполируйте на спрайты Scratch.


Бонус

Теперь ... если вы хотите получить действительно фантазия и использование меньшего количества спрайтов, это можно сделать всего двумя спрайтами.Магия клонов.Я не буду здесь объяснять слишком много, потому что все должно быть относительно самоочевидным, и если вы делаете самый сложный способ, о котором я вам рассказываю, то вы должны быть либо Scratcher, либо хотите что-то сломать.

2 спрайта, 3 скрипта, 61 блок.Использует клоны.

Чтобы понять, как это работает, вам нужно посмотреть, как настроена сцена:

Scratch cat on the left, Gobo on the right, button to show Scratch cat on top, button for Gobo on bottom

Сценарии для спрайта кнопки относительно просты:

enter image description here

И сценарии спрайта тоже не слишком сумасшедшие:

enter image description here

Если хотите, вы можете поиграть с проектом, который я использовал, чтобы сделать это над здесь .

0 голосов
/ 27 мая 2018

Я не совсем уверен, что вы подразумеваете под нажатием кнопки.

В случае, если вы хотите показать один спрайт при нажатии клавиши «а», скрыть другой спрайт и сделать наоборот в случае нажатия клавиши«b», то это довольно просто.

Здесь ниже вы видите скрипт для спрайта, который должен отображаться при нажатии клавиши «b».Сценарий для спрайта, который должен отображаться при нажатии клавиши «a», выглядит точно так же, за исключением того, что блоки «show» и «hide» должны переключаться везде.

enter image description here

...