| René Nyffenegger's collection of things on the web | |
|
René Nyffenegger on Oracle - Most wanted - Feedback
- Follow @renenyffenegger
|
MovieClip [Ming wrapper class] | ||
|
A MovieClip (Sprite) is in many respects very similar to a flash movie. Therefore, this class is inherited from
MovieClip_ which defines the common functionality.
However, a MovieClip has also the characteristics of a Character_, so it's also inherited from Character_.
The sourceMovieClip.h
#ifndef MOVIE_CLIP_H #define MOVIE_CLIP_H #include "MovieClip_.h" #include "Character_.h" class MovieClip : public MovieClip_, public Character_ { friend class Movie; public: MovieClip(); MovieClip& operator=(MovieClip const&); using MovieClip_::Add; virtual void Add(Action const&); virtual DisplayItem Add(Character_ &); virtual DisplayClip Add(MovieClip &); virtual void Stop (); virtual void NextFrame() const; virtual void Remove (DisplayItem item); virtual void Frames (int); virtual void Label (std::string const&); private: SWFMovieClip movieClip_; protected: /* A MovieClip_ might be interested to know if it had been added to another MovieClip_. See also Character_::AfterAdding Note, this method overrides Character_::AfterAdding that takes a DisplayItem& as parameter */ virtual void AfterAdding(DisplayClip&) {} // HACK? virtual SWFBlock_s* swf_block() const; }; #endif MovieClip.cpp
#include "MovieClip.h"
#include "Action.h"
#include "TextField.h"
MovieClip::MovieClip() {
movieClip_ = newSWFMovieClip();
}
void MovieClip::NextFrame() const {
SWFMovieClip_nextFrame(movieClip_);
}
void MovieClip::Stop() {
Add(Action("stop();"));
}
/* TODO: does it make sense to return a display item if character == Action here? */
DisplayItem MovieClip::Add(Character_ & c) {
c.BeforeAdding();
DisplayItem d(SWFMovieClip_add(movieClip_, c.swf_block()));
c.AfterAdding(d);
return d;
}
void MovieClip::Add(Action const& a) {
SWFMovieClip_add(movieClip_, a.swf_block());
}
DisplayClip MovieClip::Add(MovieClip & c) {
c.BeforeAdding();
DisplayClip d(SWFMovieClip_add(movieClip_, c.swf_block()));
c.AfterAdding(d);
return d;
}
void MovieClip::Label(const std::string& label) {
SWFMovieClip_labelFrame(movieClip_, label.c_str());
}
void MovieClip::Remove(DisplayItem item) {
SWFMovieClip_remove(movieClip_, item.item_);
}
void MovieClip::Frames(int nofFrames) {
SWFMovieClip_setNumberOfFrames(movieClip_, nofFrames);
}
SWFBlock_s* MovieClip::swf_block() const {
return reinterpret_cast<SWFBlock_s*>(movieClip_);
}
MovieClip& MovieClip::operator=(MovieClip const& o) {
movieClip_ = o.movieClip_;
return *this;
}
Examples
The following clsses demonstrate this class:
|