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:
|