Я не стал заморачиваться с математикой. Сделал массив строковым. Вместо 0 написал "Зеро", вместо 32 - "32 красное" и т.д. Ещё кое-где изменил Int на String. Добавил в конце ещё одно "Зеро" и делитель в index заменил на число 37f. Всё отлично работает. Спасибо учителю за уроки!
В коде урока на официальном сайте используется toInt() вместо roundToInt(), но значения в итоге выдает более точные. Получить нужный цвет можно так: в массиве элементы с четными индексами черные, с нечетными красные, а ноль зеленый var indexState by remember { mutableStateOf(0) } indexState = index.toInt() ... color = when { indexState == 0 -> Green indexState % 2 == 0 -> Black indexState % 2 != 0 -> Red else -> throw Exception ("WTF?") }
Спасибо за урок. Хотелось бы прояснить 2 момента: 1) 24:52 например, выпало значение "3". Отнимаем 360 - 3 = 357. Затем 357 делим на вторую скобку (там приблизительно 9,729). Получаем ~ 36,69. В следующей строке округляем до 37 и пытаемся получить число по этому индексу, что не получится сделать, так как максимальный индекс 36? 2) Картинка перед повторным кручением ставится в исходное положение с нулем сверху (даже, если для зрителя кажется, что движение продолжается с точки остановки)?
1 - Это потому что я это не учел, у нас 360 градусов это значит что у нас "0" будет и с 1 до 9.72 градуса и с 351 до 360 опять будет "0" но в массиве нет два "0" по этому можно просчитать математически чтоб в конце не учитывать "0" или самое простое добавить еще "0" в массив это и будет позиция 37 на которой "0" вот и все. 2 - не понимаю о чем ты так как на видео видно что крутиться с того места где остановилось а не всегда с "0" как ты говоришь. Или я может не понял о чем ты
@@NecoRuChannel 2) Не совсем понимаю, как текстовое значение поля всегда совпадает с тем, что на картинке. Ведь картинка меняется динамично, но значения текстового поля зафиксированы относительно первого порядка чисел на 15:14. 26:21 например, крутим на 50 градусов - выпадает число 28. Это индекс 32 ((360 - 50)/9,72). Крутим повторно на 50 градусов - теперь на картинке стрелка будет указывать на число 9, но в текстовом поле вроде как должно быть все так же 28, ведь индекс 32.. 😅
@@sandrinskiy8417 ну это потому что у нас постоянно слаживаться. Крутим на 50 будет определенное число, крутим еще на 50 это уже будет 100 так как остановилось на 50 и мы прокрутили еще на 50. Как только общая сумма превысит 360 то опять начнет с 0 по этому правильно показывает.
@@NecoRuChannel да, как раз прокрутил в голове цепочку - все верно: если 2 раза выпадает по 50 градусов - это (360 - 100)/9,72 = индекс 27 - число 9. Отлично, спасибо за ответ!
значение angle всегда растёт. если добавить кругов прокрутки, то оно будет расти ещё быстрее и когда-нибудь достигнет лимита. попробовал заменить его на var чтобы сбрасывать его как бы на первый круг (%360), но класс анимации работает только с val... Как можно избежать потенциальной утечки памяти?
Ленивая инициализация, Хранение свойств в мапах, Для реалзации методов интерфейсов, для предоставления доступа к свойствам ViewModel из активности или фрагмента.
@@NecoRuChannel я понял что нельзя переносить фигурные скобки на новую строчку. Я всегда любил переносить фигурные скобки на новую строчку, с c++ привычка
Когда у меня выпадал 0 на рулетке, игра вылетала. Помогло следующее: замена number = list[index.roundToInt()] на number = if (index.roundToInt() < 0) { list[list.size - 1] } else if (index.roundToInt() >= list.size) { list[0] } else { list[index.roundToInt()] }
Спасибо большое за видео, очень полезное ❤
Я не стал заморачиваться с математикой. Сделал массив строковым. Вместо 0 написал "Зеро", вместо 32 - "32 красное" и т.д. Ещё кое-где изменил Int на String. Добавил в конце ещё одно "Зеро" и делитель в index заменил на число 37f. Всё отлично работает. Спасибо учителю за уроки!
не болей
Какой же он крутой. Спасибо за урок
Отличный урок! Огромное спасибо по урокам с применением Compose в реальных приложениях на практике. Очень полезно. Ждем продолжения) Хорошего дня.
Огромное спасибо за урок, я многое учу по вашим видеоурокам:)
О продолжение, класс!!!
Спасибище, пошел смотреть )
Благодарю!
Благодарю за урок
Спасибо большое
Сергей большое спасибо, не грусти!
спасибо большое за видеоуроки, я новичок в этом, изучаю самостоятельно, ваши уроки очень полезны😭😭
В коде урока на официальном сайте используется toInt() вместо roundToInt(), но значения в итоге выдает более точные.
Получить нужный цвет можно так: в массиве элементы с четными индексами черные, с нечетными красные, а ноль зеленый
var indexState by remember { mutableStateOf(0) }
indexState = index.toInt()
...
color = when {
indexState == 0 -> Green
indexState % 2 == 0 -> Black
indexState % 2 != 0 -> Red
else -> throw Exception ("WTF?")
}
Спасибо,но вопрос, а , что с уроком по bluetooth???????
Спасибо за урок. Хотелось бы прояснить 2 момента:
1) 24:52 например, выпало значение "3". Отнимаем 360 - 3 = 357. Затем 357 делим на вторую скобку (там приблизительно 9,729). Получаем ~ 36,69. В следующей строке округляем до 37 и пытаемся получить число по этому индексу, что не получится сделать, так как максимальный индекс 36?
2) Картинка перед повторным кручением ставится в исходное положение с нулем сверху (даже, если для зрителя кажется, что движение продолжается с точки остановки)?
1 - Это потому что я это не учел, у нас 360 градусов это значит что у нас "0" будет и с 1 до 9.72 градуса и с 351 до 360 опять будет "0" но в массиве нет два "0" по этому можно просчитать математически чтоб в конце не учитывать "0" или самое простое добавить еще "0" в массив это и будет позиция 37 на которой "0" вот и все.
2 - не понимаю о чем ты так как на видео видно что крутиться с того места где остановилось а не всегда с "0" как ты говоришь. Или я может не понял о чем ты
@@NecoRuChannel 2) Не совсем понимаю, как текстовое значение поля всегда совпадает с тем, что на картинке. Ведь картинка меняется динамично, но значения текстового поля зафиксированы относительно первого порядка чисел на 15:14.
26:21 например, крутим на 50 градусов - выпадает число 28. Это индекс 32 ((360 - 50)/9,72).
Крутим повторно на 50 градусов - теперь на картинке стрелка будет указывать на число 9, но в текстовом поле вроде как должно быть все так же 28, ведь индекс 32.. 😅
@@sandrinskiy8417 ну это потому что у нас постоянно слаживаться. Крутим на 50 будет определенное число, крутим еще на 50 это уже будет 100 так как остановилось на 50 и мы прокрутили еще на 50. Как только общая сумма превысит 360 то опять начнет с 0 по этому правильно показывает.
@@NecoRuChannel да, как раз прокрутил в голове цепочку - все верно: если 2 раза выпадает по 50 градусов - это (360 - 100)/9,72 = индекс 27 - число 9. Отлично, спасибо за ответ!
значение angle всегда растёт. если добавить кругов прокрутки, то оно будет расти ещё быстрее и когда-нибудь достигнет лимита. попробовал заменить его на var чтобы сбрасывать его как бы на первый круг (%360), но класс анимации работает только с val... Как можно избежать потенциальной утечки памяти?
расскажи детальней o "by", где как можно применять 🙂
Ленивая инициализация, Хранение свойств в мапах, Для реалзации методов интерфейсов, для предоставления доступа к свойствам ViewModel из активности или фрагмента.
а че так лайков мало?
remember не работает пишет горит красным и всё даже если написал мвтабле Стейт всё по инструкции всё равно remember не работает
Покажи как написал где?
@@NecoRuChannel я понял что нельзя переносить фигурные скобки на новую строчку. Я всегда любил переносить фигурные скобки на новую строчку, с c++ привычка
Когда у меня выпадал 0 на рулетке, игра вылетала. Помогло следующее: замена number = list[index.roundToInt()] на
number = if (index.roundToInt() < 0) {
list[list.size - 1]
} else if (index.roundToInt() >= list.size) {
list[0]
} else {
list[index.roundToInt()]
}
Просто в массив с цифрами добавь еще один 0 в конец массива и никакой код писать не нужно