ICharacter *MovieClip::createCharacter(const ITag* tag, const PlaceObjectTag* place) { ICharacter *character = NULL; switch ( tag->code() ) { case TAG_DEFINE_SPRITE: character = new MovieClip(_owner, this, ((DefineSpriteTag*)tag)->getMovieFrames(), place); character->update(); _characters.push_back(character); break; case TAG_DEFINE_BUTTON2: character = new Button(*this, *(DefineButton2Tag*)tag); _characters.push_back(character); break; case TAG_DEFINE_EDIT_TEXT: character = new Text(*(DefineEditTextTag*)tag, place); _characters.push_back(character); break; case TAG_IMPORT_ASSETS2: character = ((ImportAssets2Tag*)tag)->getCharacter(); break; default: character = (DefineShapeTag*)tag; break; } return character; }