123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- /****************************************************************************
- Copyright (c) 2008-2010 Ricardo Quesada
- Copyright (c) 2010-2012 cocos2d-x.org
- Copyright (c) 2011 Zynga Inc.
- Copyright (c) 2013-2016 Chukong Technologies Inc.
- Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
- http://www.cocos2d-x.org
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
- ****************************************************************************/
- #ifndef __CC_ANIMATION_CACHE_H__
- #define __CC_ANIMATION_CACHE_H__
- #include "base/CCRef.h"
- #include "base/CCMap.h"
- #include "base/CCValue.h"
- #include "2d/CCAnimation.h"
- #include <string>
- NS_CC_BEGIN
- class Animation;
- /**
- * @addtogroup _2d
- * @{
- */
- /** Singleton that manages the Animations.
- It saves in a cache the animations. You should use this class if you want to save your animations in a cache.
- Before v0.99.5, the recommend way was to save them on the Sprite. Since v0.99.5, you should use this class instead.
- @since v0.99.5
- @js cc.animationCache
- */
- class CC_DLL AnimationCache : public Ref
- {
- public:
- /**
- * @js ctor
- */
- AnimationCache();
- /**
- * @js NA
- * @lua NA
- */
- ~AnimationCache();
- /** Returns the shared instance of the Animation cache
- @js NA
- */
- static AnimationCache* getInstance();
- /** Purges the cache. It releases all the Animation objects and the shared instance.
- @js NA
- */
- static void destroyInstance();
- /** @deprecated Use getInstance() instead. */
- CC_DEPRECATED_ATTRIBUTE static AnimationCache* sharedAnimationCache() { return AnimationCache::getInstance(); }
- /** @deprecated Use destroyInstance() instead. */
- CC_DEPRECATED_ATTRIBUTE static void purgeSharedAnimationCache() { return AnimationCache::destroyInstance(); }
- bool init(void);
- /** Adds a Animation with a name.
- *
- * @param animation An animation.
- * @param name The name of animation.
- */
- void addAnimation(Animation *animation, const std::string& name);
- /** Deletes a Animation from the cache.
- *
- * @param name The name of animation.
- */
- void removeAnimation(const std::string& name);
- /** @deprecated. Use removeAnimation() instead
- * @js NA
- * @lua NA
- */
- CC_DEPRECATED_ATTRIBUTE void removeAnimationByName(const std::string& name){ removeAnimation(name);}
- /** Returns a Animation that was previously added.
- * If the name is not found it will return nil.
- * You should retain the returned copy if you are going to use it.
- *
- * @return A Animation that was previously added. If the name is not found it will return nil.
- */
- Animation* getAnimation(const std::string& name);
- /**
- * @deprecated. Use getAnimation() instead
- * @js NA
- * @lua NA
- */
- CC_DEPRECATED_ATTRIBUTE Animation* animationByName(const std::string& name){ return getAnimation(name); }
- /** Adds an animation from an NSDictionary.
- * Make sure that the frames were previously loaded in the SpriteFrameCache.
- * @param dictionary An NSDictionary.
- * @param plist The path of the relative file,it use to find the plist path for load SpriteFrames.
- * @since v1.1
- @js NA
- */
- void addAnimationsWithDictionary(const ValueMap& dictionary,const std::string& plist);
- /** Adds an animation from a plist file.
- * Make sure that the frames were previously loaded in the SpriteFrameCache.
- * @since v1.1
- * @js addAnimations
- * @lua addAnimations
- * @param plist An animation from a plist file.
- */
- void addAnimationsWithFile(const std::string& plist);
- private:
- void parseVersion1(const ValueMap& animations);
- void parseVersion2(const ValueMap& animations);
- private:
- Map<std::string, Animation*> _animations;
- static AnimationCache* s_sharedAnimationCache;
- };
- // end of sprite_nodes group
- /// @}
- NS_CC_END
- #endif // __CC_ANIMATION_CACHE_H__
|