From 685fe05def77b039221edf06c74af74915d536c5 Mon Sep 17 00:00:00 2001 From: Samu Laaksonen Date: Tue, 25 Sep 2012 20:00:41 +0300 Subject: Initial code commit Added some stuff for project base - tiled sources - few Qt based classes for gfx --- src/ParallaxScrollerItem.cpp | 47 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/ParallaxScrollerItem.cpp (limited to 'src/ParallaxScrollerItem.cpp') diff --git a/src/ParallaxScrollerItem.cpp b/src/ParallaxScrollerItem.cpp new file mode 100644 index 0000000..0480b29 --- /dev/null +++ b/src/ParallaxScrollerItem.cpp @@ -0,0 +1,47 @@ +#include "ParallaxScrollerItem.h" + +#include +#include +#include + +#include +#include + +ParallaxScrollerItem::ParallaxScrollerItem(QString layer, QPointF pos, + qreal depthFactor, qreal speed, + qreal factor, QGraphicsScene *scene, + QGraphicsItem *parent) + : QGraphicsPixmapItem(parent, scene), m_scrollSpeed(speed), m_factor(factor) +{ + m_scrollingSpeedSlowingFactor = 0; + m_layer.load(layer); + setPixmap(m_layer); + setPos(pos); + setZValue(depthFactor); +} + +ParallaxScrollerItem::~ParallaxScrollerItem() +{ + +} + +void ParallaxScrollerItem::advance(int phase) +{ + if(phase == 1) + { + m_scrollingSpeedSlowingFactor++; + if(m_scrollingSpeedSlowingFactor % m_factor == 0) + { + m_scrollingSpeedSlowingFactor = 0; + setPos(x()-m_scrollSpeed, y()); + + QGraphicsView* v = scene()->views().first(); + QPointF p = v->mapToScene(v->viewport()->x(), 0); + + if(x() <= p.x()-pixmap().width()) + { + setPos(p.x()+pixmap().width()-m_scrollSpeed, y()); + } + } + } +} -- cgit v1.2.3