App Inventor выбирает цвет фона из списка в TinyDB

Я пытаюсь создать приложение с помощью App Inventor.

Приложение имеет больше функций, но я остановился на, я бы сказал, «базовом». Что я хочу сделать, так это изменить цвет фона (или цвет любого элемента), вызвав цвет из списка, хранящегося в TinyDB.

У меня есть два экрана Screen1 и экран меню. Я пытаюсь вызвать TinyDB, пока Screen1 инициализируется и устанавливает цвет фона приложения первым в списке. Далее я хочу, чтобы пользователь мог выбрать цвет из списка на другом экране «Меню». После выбора цвета измените цвет на обоих экранах.

Я попытался сделать это по инструкции https://sites.google.com/site/blocks123/playing-with-colors , но меня это немного сбивает с толку.

На принтскрине у меня есть блоки TinyDB на Screen1. Возможно ли на Screen1 просто вызвать/инициализировать TinyDB, но есть блоки TinyDB на другом экране «Меню»?

А когда у меня TinyDB и списки цветов как изменить цвет на выбранный?

введите здесь описание изображения

Спасибо Тайфун. Ваш учебник был полезен для меня, хотя он немного сбивает с толку переменные, которые там не описаны. Во всяком случае, я пытался сделать это немного по-своему, и я думаю, что иду в правильном направлении. Как показано на втором изображении, я сделал это на экране «Меню» и попытался сохранить свой выбор в [TinyDB]. Он работает почти нормально, но за исключением ошибки при инициализации экрана «Меню». Я не понимаю, почему я получаю это сообщение, когда значение находится в списке? И наоборот, как передать переменную BCurrentColor в "Screen1"? Если я использую set.Screen1.BackgroundColor, это не работает

введите здесь описание изображения

Что ж, теперь я знаю, что я близко, я почти могу уронить его в воздух. Это правильно меняет цвет фона на экране «Меню», но почему-то не сохраняет выбор в [TinyDB], как я описал в комментариях. Где я ошибся? Я надеюсь, что когда я сохраню «код» цвета в базе данных, я смогу вызвать его на другом экране.

введите здесь описание изображения


person Jorge    schedule 22.01.2017    source источник
comment
выполните руководство по цветным точкам...   -  person Taifun    schedule 22.01.2017
comment
Спасибо Тайфун. Этот туториал был полезен для меня, несмотря на то, что он немного сбивает с толку переменные, которые там не описаны. Во всяком случае, я пытался сделать это немного по-своему, и я думаю, что иду в правильном направлении. Как показано на другом изображении, я сделал i на экране меню и попытался сохранить свой выбор в [TinyDB]. Он работает почти нормально, но за исключением ошибки при инициализации экрана меню. Я не понимаю, почему я получаю это сообщение, когда значение находится в списке? И наоборот, как передать переменную BCurrentColor на Screen1? Если я использую set.Screen1.BackgroundColor, это не работает   -  person Jorge    schedule 27.01.2017
comment
есть некоторые проблемы в ваших блоках. во-первых, они очень громоздкие... переменные BCurrentColor и BCurrentColorName должны быть значениями, а не списками, это помогает научиться работать со списками, см. также Как работать со списками, Садж и Как работать со списками и списками списков (pdf) от appinventor.org. Если у вас все еще есть проблемы, позвольте мне пригласить вас опубликовать сообщение на форуме App Inventor.   -  person Taifun    schedule 28.01.2017
comment
Очень хороший способ изучить App Inventor — прочитать бесплатное Руководство изобретателя здесь, в бесплатной электронной книге AI2 appinventor.org/ book2 ... ссылки находятся внизу веб-страницы. Книга «учит» пользователей программировать блоки AI2. Здесь есть бесплатный курс программирования appinventor.org/content/CourseInABox/Intro и aia для проектов в книге находятся здесь: appinventor.org/bookFiles Как сделать много основные возможности App Inventor описаны здесь: appinventor.org/content/howDoYou/eventHandling .   -  person Taifun    schedule 28.01.2017
comment
Спасибо буду изучать материал по ссылкам. Я бы сделал проще, но я так понимаю последовательность шагов. Не могли бы вы объяснить мне, что вы имеете в виду, что переменные BCurrentColor и BCurrentColorName должны быть значениями, а не списками?   -  person Jorge    schedule 08.02.2017
comment
Stackoverflow — это сайт вопросов и ответов, а не форум, поэтому расширенные обсуждения в комментариях здесь нежелательны. Как уже было рекомендовано, задайте вопрос на форуме App Inventor. И: вы должны были сделать упомянутые уроки, прежде чем спрашивать там. Спасибо.   -  person Taifun    schedule 08.02.2017


Ответы (1)


Как упомянул Тайфун, проблема была с переменными BCurrentColor и BCurrentColorName. После того, как я изменил их на значения, а триггер после выбора цвета из списка устанавливает его на нужный цвет.

Тогда я могу позвонить из TinyDB. Это работает нормально.

person Jorge    schedule 08.02.2017