crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

freydev
  опции профиля:
сообщение 19.3.2010, 14:38
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 19.3.2010
Пользователь №: 1549

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброго дня, подскажите как отрисовать на сцене множество объектов(около 100), каждый из которых анимирован...
анимация построена на замене картинки по таймеру...есть класс, он загружает картинку и по интервалу меняет её на другую,
при добавлении в сцену объектов этого класса в количестве 3 или больше, анимация идет только если водить мышкой по сцене, с графикой никогда не работал, может чтото не правельно сделал, заранее спасибо, вот исходник...

Раскрывающийся текст
#include <QtGui>
#include <QObject>

class QSprite : public QObject, public QGraphicsPixmapItem
{
Q_OBJECT
public:
    QSprite(QObject *parent = 0)
    {
        tTimer = new QTimeLine(1000, this);
        connect(tTimer, SIGNAL(frameChanged( int )), this, SLOT(nextFrame( int )));
        tTimer->setFrameRange(0, 3);
        tTimer->setLoopCount(0);
        tTimer->start();
    }

    ~QSprite()
    {
    }

    QBitmap bMask;
    QPixmap pImage;

    void loadImage(QString filename)
    {
        pImage = QPixmap(filename);
        bMask = pImage.createMaskFromColor(QColor(132,116,116));
        pImage.setMask(bMask);
        setPixmap(pImage);
        update(QRectF(pImage.rect()));
    }

public slots:
    void nextFrame(int i)
    {
        if (i == 0) loadImage("f:\\frame1.bmp");
        if (i == 1) loadImage("f:\\frame2.bmp");
        if (i == 2) loadImage("f:\\frame3.bmp");
        if (i == 3) loadImage("f:\\frame4.bmp");
    }

private:
    QTimeLine *tTimer;
};


не нашел кнопки редактирования... вот так это добавляется в сцену...

Раскрывающийся текст
    QSprite *lab[50];
    for (int i = 0; i < 49; i++)
    {
       lab[i] = new QSprite();
       lab[i]->setPos(rand() % 900 + 1, rand() % 700 + 1);
       scene.addItem(lab[i]);
    }


Цитата(freydev @ 19.3.2010, 16:34) *
Доброго дня, подскажите как отрисовать на сцене множество объектов(около 100), каждый из которых анимирован...
анимация построена на замене картинки по таймеру...есть класс, он загружает картинку и по интервалу меняет её на другую,
при добавлении в сцену объектов этого класса в количестве 3 или больше, анимация идет только если водить мышкой по сцене, с графикой никогда не работал, может чтото не правельно сделал, заранее спасибо, вот исходник...

Раскрывающийся текст
#include <QtGui>
#include <QObject>

class QSprite : public QObject, public QGraphicsPixmapItem
{
Q_OBJECT
public:
    QSprite(QObject *parent = 0)
    {
        tTimer = new QTimeLine(1000, this);
        connect(tTimer, SIGNAL(frameChanged( int )), this, SLOT(nextFrame( int )));
        tTimer->setFrameRange(0, 3);
        tTimer->setLoopCount(0);
        tTimer->start();
    }

    ~QSprite()
    {
    }

    QBitmap bMask;
    QPixmap pImage;

    void loadImage(QString filename)
    {
        pImage = QPixmap(filename);
        bMask = pImage.createMaskFromColor(QColor(132,116,116));
        pImage.setMask(bMask);
        setPixmap(pImage);
        update(QRectF(pImage.rect()));
    }

public slots:
    void nextFrame(int i)
    {
        if (i == 0) loadImage("f:\\frame1.bmp");
        if (i == 1) loadImage("f:\\frame2.bmp");
        if (i == 2) loadImage("f:\\frame3.bmp");
        if (i == 3) loadImage("f:\\frame4.bmp");
    }

private:
    QTimeLine *tTimer;
};


не нашел кнопки редактирования... вот так это добавляется в сцену...

Раскрывающийся текст
    QSprite *lab[50];
    for (int i = 0; i < 49; i++)
    {
       lab[i] = new QSprite();
       lab[i]->setPos(rand() % 900 + 1, rand() % 700 + 1);
       scene.addItem(lab[i]);
    }


gif не предлагать)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- freydev   как оптимизировать множественную анимацию   19.3.2010, 14:38
- - BRE   По-моему, каждый раз загружать картинку и создават...   19.3.2010, 15:24
|- - freydev   Цитата(BRE @ 19.3.2010, 17:24) По-моему, ...   19.3.2010, 20:57
|- - BRE   Цитата(freydev @ 19.3.2010, 20:57) грубо ...   19.3.2010, 21:14
|- - freydev   Цитата(BRE @ 19.3.2010, 23:14) Цитата(fre...   19.3.2010, 22:57
|- - BRE   Цитата(freydev @ 19.3.2010, 22:57) Цитата...   19.3.2010, 23:33
|- - freydev   Цитата(BRE @ 20.3.2010, 1:33) Цитата(frey...   19.3.2010, 23:36
- - Litkevich Yuriy   freydev, не цитируй целыми сообщениями. Тяжело чит...   19.3.2010, 23:45
|- - freydev   запустил на linux'e, тоже норм работает, хм, а...   20.3.2010, 20:02
- - IMPOMEZIA   freydev С вашим кодом всё в порядке, попробуйте Qt...   21.3.2010, 9:55
- - Litkevich Yuriy   Цитата(IMPOMEZIA @ 21.3.2010, 12:55) P.S....   21.3.2010, 11:03
|- - IMPOMEZIA   Цитата(Litkevich Yuriy @ 21.3.2010, 11:03...   21.3.2010, 11:18
- - Litkevich Yuriy   IMPOMEZIA, чтобы о проблеме рапортовать, лучше нап...   21.3.2010, 11:34
|- - IMPOMEZIA   Цитата(Litkevich Yuriy @ 21.3.2010, 11:34...   21.3.2010, 12:02
- - freydev   Цитата(IMPOMEZIA @ 21.3.2010, 13:18) Да, ...   21.3.2010, 16:17
- - IMPOMEZIA   Цитата(freydev @ 21.3.2010, 16:17) Может ...   21.3.2010, 19:42
|- - freydev   А он прав, поставил 4.6.0, все работает как часы, ...   22.3.2010, 1:08
- - Litkevich Yuriy   Цитата(freydev @ 22.3.2010, 4:08) А он пр...   22.3.2010, 1:19
- - freydev   IMPOMEZIA Теперь маска по цвету не хочет создавать...   22.3.2010, 1:51
- - freydev   а тут все ясно, windows 7 не поддерживается   22.3.2010, 19:46


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 20.6.2025, 4:43