Q3CanvasSprite Class

The Q3CanvasSprite class provides an animated canvas item on a Q3Canvas . 更多...

頭: #include <Q3CanvasSprite>
繼承: Q3CanvasItem

公共類型

enum FrameAnimationType { Cycle, Oscillate }

公共函數

Q3CanvasSprite (Q3CanvasPixmapArray * a , Q3Canvas * canvas )
virtual ~Q3CanvasSprite ()
int bottomEdge () const
int bottomEdge (int ny ) const
int frame () const
int frameCount () const
int height () const
Q3CanvasPixmap * image () const
Q3CanvasPixmap * image (int f ) const
virtual Q3CanvasPixmap * imageAdvanced () const
int leftEdge () const
int leftEdge (int nx ) const
void move (double x , double y )
virtual void move (double nx , double ny , int nf )
int rightEdge () const
int rightEdge (int nx ) const
void setFrame (int f )
virtual void setFrameAnimation (FrameAnimationType type = Cycle, int step = 1, int state = 0)
void setSequence (Q3CanvasPixmapArray * a )
int topEdge () const
int topEdge (int ny ) const
int width () const

重實現公共函數

virtual void advance (int phase )
virtual QRect boundingRect () const
virtual bool collidesWith (const Q3CanvasItem * i ) const
virtual void draw (QPainter & painter )
virtual int rtti () const

額外繼承成員

詳細描述

The Q3CanvasSprite class provides an animated canvas item on a Q3Canvas .

A canvas sprite is an object which can contain any number of images (referred to as frames), only one of which is current, i.e. displayed, at any one time. The images can be passed in the constructor or set or changed later with setSequence (). If you subclass Q3CanvasSprite you can change the frame that is displayed periodically, e.g. whenever Q3CanvasItem::advance (1) is called to create the effect of animation.

The current frame can be set with setFrame () 或采用 move (). The number of frames available is given by frameCount (). The bounding rectangle of the current frame is returned by boundingRect ().

The current frame's image can be retrieved with image ();使用 imageAdvanced () to retrieve the image for the frame that will be shown after advance(1) is called. Use the image () overload passing it an integer index to retrieve a particular image from the list of frames.

使用 width () 和 height () to retrieve the dimensions of the current frame.

使用 leftEdge () 和 rightEdge () to retrieve the current frame's left-hand and right-hand x-coordinates respectively. Use bottomEdge () 和 topEdge () to retrieve the current frame's bottom and top y-coordinates respectively. These functions have an overload which will accept an integer frame number to retrieve the coordinates of a particular frame.

Q3CanvasSprite draws very quickly, at the expense of memory.

The current frame's image can be drawn on a painter with draw ().

Like any other canvas item, canvas sprites can be moved with move () which sets the x and y coordinates and the frame number, as well as with Q3CanvasItem::move () 和 Q3CanvasItem::moveBy (), or by setting coordinates with Q3CanvasItem::setX (), Q3CanvasItem::setY () 和 Q3CanvasItem::setZ ().

另請參閱 QtCanvas and Porting to Graphics View .

成員類型文檔編製

enum Q3CanvasSprite:: FrameAnimationType

This enum is used to identify the different types of frame animation offered by Q3CanvasSprite .

常量 描述
Q3CanvasSprite::Cycle 0 at each advance the frame number will be incremented by 1 (modulo the frame count).
Q3CanvasSprite::Oscillate 1 at each advance the frame number will be incremented by 1 up to the frame count then decremented to by 1 to 0, repeating this sequence forever.

成員函數文檔編製

Q3CanvasSprite:: Q3CanvasSprite ( Q3CanvasPixmapArray * a , Q3Canvas * canvas )

構造 Q3CanvasSprite which uses images from the Q3CanvasPixmapArray a .

The sprite in initially positioned at (0, 0) on canvas , using frame 0.

[虛擬] Q3CanvasSprite:: ~Q3CanvasSprite ()

Destroys the sprite and removes it from the canvas. Does not delete the images.

[虛擬] void Q3CanvasSprite:: advance ( int phase )

重實現自 Q3CanvasItem::advance ().

Extends the default Q3CanvasItem implementation to provide the functionality of setFrameAnimation ().

The phase is 0 or 1: see Q3CanvasItem::advance () 瞭解細節。

另請參閱 Q3CanvasItem::advance () 和 setVelocity ().

int Q3CanvasSprite:: bottomEdge () const

Returns the y-coordinate of the current bottom edge of the sprite. (This may change as the sprite animates since different frames may have different bottom edges.)

另請參閱 leftEdge (), rightEdge (),和 topEdge ().

int Q3CanvasSprite:: bottomEdge ( int ny ) const

這是重載函數。

Returns what the y-coordinate of the top edge of the sprite would be if the sprite (actually its hotspot) were moved to y-position ny .

另請參閱 leftEdge (), rightEdge (),和 topEdge ().

[虛擬] QRect Q3CanvasSprite:: boundingRect () const

重實現自 Q3CanvasItem::boundingRect ().

Returns the bounding rectangle for the image in the sprite's current frame. This assumes that the images are tightly cropped (i.e. do not have transparent pixels all along a side).

[虛擬] bool Q3CanvasSprite:: collidesWith (const Q3CanvasItem * i ) const

重實現自 Q3CanvasItem::collidesWith ().

[虛擬] void Q3CanvasSprite:: draw ( QPainter & painter )

重實現自 Q3CanvasItem::draw ().

Draws the current frame's image at the sprite's current position on painter painter .

int Q3CanvasSprite:: frame () const

Returns the index of the current animation frame in the Q3CanvasSprite 's Q3CanvasPixmapArray .

另請參閱 setFrame () 和 move ().

int Q3CanvasSprite:: frameCount () const

Returns the number of frames in the Q3CanvasSprite 's Q3CanvasPixmapArray .

int Q3CanvasSprite:: height () const

The height of the sprite for the current frame's image.

另請參閱 frame ().

Q3CanvasPixmap * Q3CanvasSprite:: image () const

Returns the current frame's image.

另請參閱 frame () 和 setFrame ().

Q3CanvasPixmap * Q3CanvasSprite:: image ( int f ) const

這是重載函數。

Returns the image for frame f . Does not do any bounds checking on f .

[虛擬] Q3CanvasPixmap * Q3CanvasSprite:: imageAdvanced () const

Returns the image the sprite will have after advance(1) is called. By default this is the same as image ().

int Q3CanvasSprite:: leftEdge () const

Returns the x-coordinate of the current left edge of the sprite. (This may change as the sprite animates since different frames may have different left edges.)

另請參閱 rightEdge (), bottomEdge (),和 topEdge ().

int Q3CanvasSprite:: leftEdge ( int nx ) const

這是重載函數。

Returns what the x-coordinate of the left edge of the sprite would be if the sprite (actually its hotspot) were moved to x-position nx .

另請參閱 rightEdge (), bottomEdge (),和 topEdge ().

void Q3CanvasSprite:: move ( double x , double y )

Moves the sprite to ( x , y ).

[虛擬] void Q3CanvasSprite:: move ( double nx , double ny , int nf )

Moves the sprite to ( nx , ny ) and sets the current frame to nf . nf will be ignored if it is larger than frameCount () or smaller than 0.

int Q3CanvasSprite:: rightEdge () const

Returns the x-coordinate of the current right edge of the sprite. (This may change as the sprite animates since different frames may have different right edges.)

另請參閱 leftEdge (), bottomEdge (),和 topEdge ().

int Q3CanvasSprite:: rightEdge ( int nx ) const

這是重載函數。

Returns what the x-coordinate of the right edge of the sprite would be if the sprite (actually its hotspot) were moved to x-position nx .

另請參閱 leftEdge (), bottomEdge (),和 topEdge ().

[虛擬] int Q3CanvasSprite:: rtti () const

重實現自 Q3CanvasItem::rtti ().

Returns 1 ( Q3CanvasItem::Rtti_Sprite ).

另請參閱 Q3CanvasItem::rtti ().

void Q3CanvasSprite:: setFrame ( int f )

Sets the animation frame used for displaying the sprite to f , an index into the Q3CanvasSprite 's Q3CanvasPixmapArray . The call will be ignored if f > frameCount () or smaller than 0.

另請參閱 frame () 和 move ().

[虛擬] void Q3CanvasSprite:: setFrameAnimation ( FrameAnimationType type = Cycle, int step = 1, int state = 0)

Sets the animation characteristics for the sprite.

For type == Cycle , the frames will increase by step at each advance, modulo the frameCount ().

For type == Oscillate , the frames will increase by step at each advance, up to the frameCount (), then decrease by step back to 0, repeating forever.

The state parameter is for internal use.

void Q3CanvasSprite:: setSequence ( Q3CanvasPixmapArray * a )

Set the array of images used for displaying the sprite to the Q3CanvasPixmapArray a .

If the current frame () is larger than the number of images in a , the current frame will be reset to 0.

int Q3CanvasSprite:: topEdge () const

Returns the y-coordinate of the top edge of the sprite. (This may change as the sprite animates since different frames may have different top edges.)

另請參閱 leftEdge (), rightEdge (),和 bottomEdge ().

int Q3CanvasSprite:: topEdge ( int ny ) const

這是重載函數。

Returns what the y-coordinate of the top edge of the sprite would be if the sprite (actually its hotspot) were moved to y-position ny .

另請參閱 leftEdge (), rightEdge (),和 bottomEdge ().

int Q3CanvasSprite:: width () const

The width of the sprite for the current frame's image.

另請參閱 frame ().