![]() |
|
|
![]()
|
|
| Sality123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
Всем привет, возникла такая вот задача, создать анимацию из 3 картинок (или более). нужно по принципу GIF анимации заставить чтоб объект быстро менял QPixmap - внешность, по очереди, чтоб казался эффект анимации...
В этом нам хорошо помогает QGraphicsAnimation, а точнее QPropertyAnimation. например этот код заставит объект передвигаться по сцене: QPropertyAnimation *animation1 = new QPropertyAnimation(QObject,"pos"); animation1->setDuration(200); animation1->setStartValue(QPointF(10,10)); animation1->setEndValue(QPointF(20,20)); animation1->setEasingCurve(QEasingCurve::Linear); animation1->start(); Второй параметр у класса QPropertyAnimation, в моем случае "pos" это параметр заданный вот такой строкой, которая указывает анимации использовать именно изменение позиции Q_PROPERTY(QPointF pos READ pos WRITE setPos); Тут как бы все понятно и все работает, но так как мне нужно не перемещение предмета а изменение его картинки, то есть внешнего вида, я решил создать еще один параметр Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap); и решил написать такую же анимацию, только уже с использованием моего второго параметра : QPropertyAnimation *animation1 = new QPropertyAnimation(QObject,"pixmap"); animation1->setDuration(200); animation1->setStartValue(QPixmap(":/ress/bb_3.png")); animation1->setEndValue(QPixmap(":/ress/bb_4.png")); animation1->start(); Вот тут и появилась проблема, анимация почему то не отрабатывается, и ожидаемой подмены к артинок не происходит... кто с подобным сталкивался помогите пожалуста. заранее спс. Это сообщение отредактировал(а) Sality123 - 10.3.2011, 23:05 |
|||
|
||||
| Sality123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
Не ужели не кто не делал анимации в Qt.... =(
|
|||
|
||||
| borisbn |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
а кто сказал, что с Pixmap'ом должно работать ?
Из документации по QVariantAnimation:
из исходников QVariantAnimation:
P.S. Вообще то требовать, чтобы тебе в час ночи (через два часа, после того, как ты задал вопрос) ответили IMHO неправильно.
Это сообщение отредактировал(а) borisbn - 11.3.2011, 11:48 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||||
|
|||||||||
| Sality123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
Извиняюсь) не подумал про время))
Интересно, так мало поддерживаемых метатипов... А каким образом можно создать анимацию? или подскажите хотя бы каким классом... В Qt так расхваливали мощность класса QGraphicsAnimation и QMachine... совсем не мощно получается... котя я может просто не умею ими правильно пользоваться... заранее спс. |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
А что за класс такой ? Я у себя (да и на сайте нокии) не нашёл. м.б. QStateMachine из The State Machine Framework ? Это сообщение отредактировал(а) borisbn - 11.3.2011, 14:17 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Sality123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
Да, опечатки, у меня просто с этими почти одинаковыми названиями уже все в кашу...
да, QStateMachine и QAbstractAnimation, от которых наследуется куча всяких *Animation-ов вот дерево http://trinity.pearsoncomputing.net/docs/q...n-overview.html Но проблема как бы остается... не могу создать анимацию.. элементарную анимацию как GIF картинка, просто подмена изображения... Я догадываюсь что при своей мощности в Qt есть способ и инструменты... только какие... неизвестно для меня.. буду благодарен за помощь |
|||
|
||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Первое решение, которое приходит в голову (вполне возможно, что не самое лучшее), это создать список (вектор) этих пиксмапов, запустить таймер и по таймеру отображать очередной элемент из списка.
Если уж очень хочется заюзать QVariantAnimation, можно создать анимацию для чисел типа int (от 0 до длины списка пиксмапов - 1), подцепиться к сигналу
и отображать в соответствующем слоте
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| Sality123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
Большое спс, ты Мегамозок! я бы не догадался заюзать анимайшин и в слоте ловить изменения и уже там подставлять картинку)))
А вот Qt- разрабам минус АдЫн! как можно было не добавить пиксмап в проперти, да и вообще сам класс называется анимация, так будте добры сделайте инструмент для создания анимации. |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Возможно из-за неоднозначности. Например непонятно какое смешивание цветов использовать, как изменять размер битмапа (если размеры отличаются). Много свойств выходит для одной примитивной анимации. |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Sality123, спс, конечно, но Мегамазком меня ещё не называли...
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |