#flutter #flame
Вопрос:
У меня есть несколько вопросов. Я работаю над приложением, которое использует движок пламени в расширенном виджете как часть большего приложения. Таким образом, Flame используется только в качестве графического представления кнопок и для взаимодействия.
Теперь, теоретически:
- Можно ли отправить значение переменной из flame в обычный текстовый виджет в моем приложении? (Я знаю, что могу прочитать начальное значение, равное 0, но тогда ничего не происходит, даже если консоль показывает увеличивающееся значение) Должен ли я написать какой-то поток для Flame и будущего в главном приложении или есть какой-либо другой вариант?
- Как я могу управлять представлениями в flame? Я имею в виду, что в настоящее время у меня есть два разных фона и разные анимации для каждого. В нижней части экрана в главном приложении в flutter у меня есть кнопки, которые я хотел бы использовать для изменения фона пламени и анимации по мере необходимости (простая реакция пламени на мои кнопки).
Что касается кода, мой счетчик в приложении выглядит так:
...
Column(
children: [
Text('show 1'),
Text(_firstCounter.toString())
],
),
...
void CountersAndOthers() async {
if(_gameInProgress == true){ return; }
_gameInProgress = true;
_testGame = new TestGame();
_firstCounter = _testGame.counterNumeroUno;
}
А в Flame это простая функция onTap (), которая увеличивает счетчик int:
@override
void onTap() async {
counter ;
print(counter);
jump();
_timer.start();
}
Ответ №1:
- Без использования какой-либо библиотеки управления состояниями вы можете передать функцию обратного вызова для вашего виджета в свой расширенный игровой класс Flame и обновить состояние виджета с помощью этого при
onTap
вызове Flame. - Здесь все наоборот, передайте свой игровой класс кнопкам навигации и вызовите функцию, которую вы создаете в своей игре flame, которая будет реагировать на ваши нажатия кнопок.
Существует еще несколько способов сделать это в зависимости от структуры вашего приложения.
Комментарии:
1. Звучит здорово. Насчет второго пункта — это именно то, о чем я думал. Это не должно быть большой проблемой, если я передам что — то от родителя к ребенку, однако, насколько я читал-есть проблема с подключением в противоположном направлении. Можете ли вы дать мне несколько советов или вставить какой-нибудь хороший учебник? Прямо сейчас я совершенно упускаю смысл всей этой идеи обратного вызова. И я прочитал около 4 или 5 статей, и все они не были действительно полезными, скорее вводили в заблуждение. Или это только я, идк. Заранее спасибо.
2. Итак, вы хотите создать игру в этом ребенке, а затем передать ее родителю, это то, что вы хотите сказать?
3. Точно. Я улучшил свой код и со свежей головой реализовал обратный вызов — он работает как заклинание. Спасибо вам за совет.