Merge branch 'develop' of https://github.com/cocos2d/cocos2d-x into developTest

This commit is contained in:
samuele3hu 2013-09-18 14:50:01 +08:00
commit 841975706e
37 changed files with 2134 additions and 804 deletions

View File

@ -1 +1 @@
29c3c2dfd8b683a800709d085839444c3a304a0d 8b8a994b2fdf6fd8ef65f714619ce35ff1ca09cf

View File

@ -49,6 +49,7 @@ THE SOFTWARE.
#include "actions/CCActionManager.h" #include "actions/CCActionManager.h"
#include "sprite_nodes/CCAnimationCache.h" #include "sprite_nodes/CCAnimationCache.h"
#include "event_dispatcher/CCTouch.h" #include "event_dispatcher/CCTouch.h"
#include "event_dispatcher/CCEventDispatcher.h"
#include "support/user_default/CCUserDefault.h" #include "support/user_default/CCUserDefault.h"
#include "shaders/ccGLStateCache.h" #include "shaders/ccGLStateCache.h"
#include "shaders/CCShaderCache.h" #include "shaders/CCShaderCache.h"
@ -696,6 +697,7 @@ void Director::purgeDirector()
// cocos2d-x specific data structures // cocos2d-x specific data structures
UserDefault::destroyInstance(); UserDefault::destroyInstance();
NotificationCenter::destroyInstance(); NotificationCenter::destroyInstance();
EventDispatcher::destroyInstance();
GL::invalidateStateCache(); GL::invalidateStateCache();

View File

@ -126,6 +126,8 @@ Node::Node(void)
, _isTransitionFinished(false) , _isTransitionFinished(false)
, _updateScriptHandler(0) , _updateScriptHandler(0)
, _componentContainer(NULL) , _componentContainer(NULL)
, _eventPriority(0)
, _oldEventPriority(0)
{ {
// set default scheduler and actionManager // set default scheduler and actionManager
Director *director = Director::getInstance(); Director *director = Director::getInstance();
@ -1307,9 +1309,11 @@ void Node::dissociateEventListener(EventListener* listener)
void Node::removeAllEventListeners() void Node::removeAllEventListeners()
{ {
auto dispatcher = EventDispatcher::getInstance();
for (auto& listener : _eventlisteners) for (auto& listener : _eventlisteners)
{ {
EventDispatcher::getInstance()->removeEventListener(listener); dispatcher->removeEventListener(listener);
} }
} }

View File

@ -1464,8 +1464,9 @@ protected:
ComponentContainer *_componentContainer; ///< Dictionary of components ComponentContainer *_componentContainer; ///< Dictionary of components
int _eventPriority; int _eventPriority; ///< The scene graph based priority of event listener.
static int _globalEventPriorityIndex; int _oldEventPriority; ///< The old scene graph based priority of event listener.
static int _globalEventPriorityIndex; ///< The index of global event priority.
}; };
//#pragma mark - NodeRGBA //#pragma mark - NodeRGBA

View File

@ -389,7 +389,12 @@ void Dictionary::acceptVisitor(DataVisitor &visitor)
Dictionary* Dictionary::createWithContentsOfFile(const char *pFileName) Dictionary* Dictionary::createWithContentsOfFile(const char *pFileName)
{ {
return createWithContentsOfFileThreadSafe(pFileName); auto ret = createWithContentsOfFileThreadSafe(pFileName);
if (ret != nullptr)
{
ret->autorelease();
}
return ret;
} }
bool Dictionary::writeToFile(const char *fullPath) bool Dictionary::writeToFile(const char *fullPath)

View File

@ -58,6 +58,8 @@ private:
NS_CC_BEGIN NS_CC_BEGIN
static EventDispatcher* g_instance = nullptr;
EventDispatcher::EventListenerItem::~EventListenerItem() EventDispatcher::EventListenerItem::~EventListenerItem()
{ {
CC_SAFE_RELEASE(this->node); CC_SAFE_RELEASE(this->node);
@ -73,12 +75,22 @@ EventDispatcher::EventDispatcher()
EventDispatcher::~EventDispatcher() EventDispatcher::~EventDispatcher()
{ {
removeAllListeners();
} }
EventDispatcher* EventDispatcher::getInstance() EventDispatcher* EventDispatcher::getInstance()
{ {
static EventDispatcher _instance; if (g_instance == nullptr)
return &_instance; {
g_instance = new EventDispatcher();
}
return g_instance;
}
void EventDispatcher::destroyInstance()
{
CC_SAFE_DELETE(g_instance);
} }
void EventDispatcher::addEventListenerWithItem(EventListenerItem* item) void EventDispatcher::addEventListenerWithItem(EventListenerItem* item)
@ -249,13 +261,15 @@ void EventDispatcher::setPriorityWithFixedValue(EventListener* listener, int fix
} }
} }
void EventDispatcher::dispatchEvent(Event* event, bool toSortListeners) void EventDispatcher::dispatchEvent(Event* event, bool forceSortListeners)
{ {
if (_listeners == nullptr || !_isEnabled) if (_listeners == nullptr || !_isEnabled)
return; return;
if (toSortListeners) if (forceSortListeners)
{
sortAllEventListenerItemsForType(event->_type); sortAllEventListenerItemsForType(event->_type);
}
DispatchGuard guard(_inDispatch); DispatchGuard guard(_inDispatch);

View File

@ -55,6 +55,9 @@ public:
/** Gets the singleton of EventDispatcher */ /** Gets the singleton of EventDispatcher */
static EventDispatcher* getInstance(); static EventDispatcher* getInstance();
/** Destroys the singleton of EventDispatcher */
static void destroyInstance();
/** Adds a event listener for a specified event with the priority of scene graph. /** Adds a event listener for a specified event with the priority of scene graph.
* @param listener The listener of a specified event. * @param listener The listener of a specified event.
* @param node The priority of the listener is based on the draw order of this node. * @param node The priority of the listener is based on the draw order of this node.
@ -98,7 +101,7 @@ public:
* Also removes all EventListeners marked for deletion from the * Also removes all EventListeners marked for deletion from the
* event dispatcher list. * event dispatcher list.
*/ */
void dispatchEvent(Event* event, bool toSortListeners = true); void dispatchEvent(Event* event, bool forceSortListeners = true);
public: public:
/** Destructor of EventDispatcher */ /** Destructor of EventDispatcher */
@ -141,8 +144,8 @@ private:
std::map<std::string, std::vector<EventListenerItem*>*>* _listeners; std::map<std::string, std::vector<EventListenerItem*>*>* _listeners;
std::vector<EventListenerItem*> _toAddedListeners; std::vector<EventListenerItem*> _toAddedListeners;
int _inDispatch; int _inDispatch; ///< Whether it's in dispatching event
bool _isEnabled; bool _isEnabled; ///< Whether to enable dispatching event
}; };

View File

@ -55,10 +55,6 @@ CocoStudio/Components/CCComAudio.cpp \
CocoStudio/Components/CCComController.cpp \ CocoStudio/Components/CCComController.cpp \
CocoStudio/Components/CCComRender.cpp \ CocoStudio/Components/CCComRender.cpp \
CocoStudio/Components/CCInputDelegate.cpp \ CocoStudio/Components/CCInputDelegate.cpp \
CocoStudio/GUI/Action/UIAction.cpp \
CocoStudio/GUI/Action/UIActionFrame.cpp \
CocoStudio/GUI/Action/UIActionManager.cpp \
CocoStudio/GUI/Action/UIActionNode.cpp \
CocoStudio/GUI/BaseClasses/UIRootWidget.cpp \ CocoStudio/GUI/BaseClasses/UIRootWidget.cpp \
CocoStudio/GUI/BaseClasses/UIWidget.cpp \ CocoStudio/GUI/BaseClasses/UIWidget.cpp \
CocoStudio/GUI/Layouts/Layout.cpp \ CocoStudio/GUI/Layouts/Layout.cpp \
@ -89,6 +85,11 @@ CocoStudio/Json/lib_json/json_value.cpp \
CocoStudio/Json/lib_json/json_writer.cpp \ CocoStudio/Json/lib_json/json_writer.cpp \
CocoStudio/Reader/CCSGUIReader.cpp \ CocoStudio/Reader/CCSGUIReader.cpp \
CocoStudio/Reader/CCSSceneReader.cpp \ CocoStudio/Reader/CCSSceneReader.cpp \
CocoStudio/Action/CCActionFrame.cpp \
CocoStudio/Action/CCActionFrameEasing.cpp \
CocoStudio/Action/CCActionManagerEx.cpp \
CocoStudio/Action/CCActionNode.cpp \
CocoStudio/Action/CCActionObject.cpp \
GUI/CCControlExtension/CCControl.cpp \ GUI/CCControlExtension/CCControl.cpp \
GUI/CCControlExtension/CCControlButton.cpp \ GUI/CCControlExtension/CCControlButton.cpp \
GUI/CCControlExtension/CCControlColourPicker.cpp \ GUI/CCControlExtension/CCControlColourPicker.cpp \

View File

@ -0,0 +1,225 @@
/****************************************************************************
Copyright (c) 2013 cocos2d-x.org
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.
****************************************************************************/
#include "CCActionFrame.h"
NS_CC_EXT_BEGIN
ActionFrame::ActionFrame()
: _frameType(0)
, _easingType(0)
, _frameIndex(0)
, _fTime(0.0f)
{
}
ActionFrame::~ActionFrame()
{
}
void ActionFrame::setFrameIndex(int index)
{
_frameIndex = index;
}
int ActionFrame::getFrameIndex()
{
return _frameIndex;
}
void ActionFrame::setFrameTime(float fTime)
{
_fTime = fTime;
}
float ActionFrame::getFrameTime()
{
return _fTime;
}
void ActionFrame::setFrameType(int frameType)
{
_frameType = frameType;
}
int ActionFrame::getFrameType()
{
return _frameType;
}
void ActionFrame::setEasingType(int easingType)
{
_easingType = easingType;
}
int ActionFrame::getEasingType()
{
return _easingType;
}
Action* ActionFrame::getAction(float fDuration)
{
log("Need a definition of <getAction> for ActionFrame");
return NULL;
}
//////////////////////////////////////////////////////////////////////////
ActionMoveFrame::ActionMoveFrame()
: _position(Point(0.0f,0.0f))
{
_frameType = (int)kKeyframeMove;
}
ActionMoveFrame::~ActionMoveFrame()
{
}
void ActionMoveFrame::setPosition(Point pos)
{
_position = pos;
}
Point ActionMoveFrame::getPosition()
{
return _position;
}
Action* ActionMoveFrame::getAction(float fDuration)
{
return MoveTo::create(fDuration,_position);
}
//////////////////////////////////////////////////////////////////////////
ActionScaleFrame::ActionScaleFrame()
: _scaleX(1.0f)
, _scaleY(1.0f)
{
_frameType = (int)kKeyframeScale;
}
ActionScaleFrame::~ActionScaleFrame()
{
}
void ActionScaleFrame::setScaleX(float scaleX)
{
_scaleX = scaleX;
}
float ActionScaleFrame::getScaleX()
{
return _scaleX;
}
void ActionScaleFrame::setScaleY(float scaleY)
{
_scaleY = scaleY;
}
float ActionScaleFrame::getScaleY()
{
return _scaleY;
}
Action* ActionScaleFrame::getAction(float fDuration)
{
return ScaleTo::create(fDuration,_scaleX,_scaleY);
}
ActionRotationFrame::ActionRotationFrame()
: _rotation(0.0f)
{
_frameType = (int)kKeyframeRotate;
}
ActionRotationFrame::~ActionRotationFrame()
{
}
void ActionRotationFrame::setRotation(float rotation)
{
_rotation = rotation;
}
float ActionRotationFrame::getRotation()
{
return _rotation;
}
Action* ActionRotationFrame::getAction(float fDuration)
{
return RotateTo::create(fDuration,_rotation);
}
ActionFadeFrame::ActionFadeFrame()
: _opacity(255)
{
_frameType = (int)kKeyframeFade;
}
ActionFadeFrame::~ActionFadeFrame()
{
}
void ActionFadeFrame::setOpacity(int opacity)
{
_opacity = opacity;
}
int ActionFadeFrame::getOpacity()
{
return _opacity;
}
Action* ActionFadeFrame::getAction(float fDuration)
{
return FadeTo::create(fDuration,_opacity);
}
ActionTintFrame::ActionTintFrame()
: _color(Color3B(255,255,255))
{
_frameType = (int)kKeyframeTint;
}
ActionTintFrame::~ActionTintFrame()
{
}
void ActionTintFrame::setColor(Color3B ccolor)
{
_color = ccolor;
}
Color3B ActionTintFrame::getColor()
{
return _color;
}
Action* ActionTintFrame::getAction(float fDuration)
{
return TintTo::create(fDuration,_color.r,_color.g,_color.b);
}
NS_CC_EXT_END

View File

@ -0,0 +1,347 @@
/****************************************************************************
Copyright (c) 2013 cocos2d-x.org
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 __ActionFRAME_H__
#define __ActionFRAME_H__
#include "cocos2d.h"
#include "ExtensionMacros.h"
NS_CC_EXT_BEGIN
enum FrameType
{
kKeyframeMove = 0,
kKeyframeScale,
kKeyframeRotate,
kKeyframeTint,
kKeyframeFade,
kKeyframeMax
};
class ActionFrame:public Object
{
public:
/**
* Default constructor
*/
ActionFrame();
/**
* Default destructor
*/
virtual ~ActionFrame();
/**
* Changes the index of action frame
*
* @param index the index of action frame
*/
void setFrameIndex(int index);
/**
* Gets the index of action frame
*
* @return the index of action frame
*/
int getFrameIndex();
/**
* Changes the time of action frame
*
* @param fTime the time of action frame
*/
void setFrameTime(float fTime);
/**
* Gets the time of action frame
*
* @return fTime the time of action frame
*/
float getFrameTime();
/**
* Changes the type of action frame
*
* @param frameType the type of action frame
*/
void setFrameType(int frameType);
/**
* Gets the type of action frame
*
* @return the type of action frame
*/
int getFrameType();
/**
* Changes the easing type.
*
* @param easingType the easing type.
*/
void setEasingType(int easingType);
/**
* Gets the easing type.
*
* @return the easing type.
*/
int getEasingType();
/**
* Gets the CCAction of ActionFrame.
*
* @parame fDuration the duration time of ActionFrame
*
* @return CCAction
*/
virtual Action* getAction(float fDuration);
protected:
int _frameType;
int _easingType;
int _frameIndex;
float _fTime;
};
class ActionMoveFrame:public ActionFrame
{
public:
/**
* Default constructor
*/
ActionMoveFrame();
/**
* Default destructor
*/
virtual ~ActionMoveFrame();
/**
* Changes the move action position.
*
* @param the move action position.
*/
void setPosition(Point pos);
/**
* Gets the move action position.
*
* @return the move action position.
*/
Point getPosition();
/**
* Gets the CCAction of ActionFrame.
*
* @parame fDuration the duration time of ActionFrame
*
* @return CCAction
*/
virtual Action* getAction(float fDuration);
protected:
Point _position;
};
class ActionScaleFrame:public ActionFrame
{
public:
/**
* Default constructor
*/
ActionScaleFrame();
/**
* Default destructor
*/
virtual ~ActionScaleFrame();
/**
* Changes the scale action scaleX.
*
* @param the scale action scaleX.
*/
void setScaleX(float scaleX);
/**
* Gets the scale action scaleX.
*
* @return the scale action scaleX.
*/
float getScaleX();
/**
* Changes the scale action scaleY.
*
* @param rotation the scale action scaleY.
*/
void setScaleY(float scaleY);
/**
* Gets the scale action scaleY.
*
* @return the the scale action scaleY.
*/
float getScaleY();
/**
* Gets the CCAction of ActionFrame.
*
* @parame fDuration the duration time of ActionFrame
*
* @return CCAction
*/
virtual Action* getAction(float fDuration);
protected:
float _scaleX;
float _scaleY;
};
class ActionRotationFrame:public ActionFrame
{
public:
/**
* Default constructor
*/
ActionRotationFrame();
/**
* Default destructor
*/
virtual ~ActionRotationFrame();
/**
* Changes rotate action rotation.
*
* @param rotation rotate action rotation.
*/
void setRotation(float rotation);
/**
* Gets the rotate action rotation.
*
* @return the rotate action rotation.
*/
float getRotation();
/**
* Gets the CCAction of ActionFrame.
*
* @parame fDuration the duration time of ActionFrame
*
* @return CCAction
*/
virtual Action* getAction(float fDuration);
protected:
float _rotation;
};
class ActionFadeFrame:public ActionFrame
{
public:
/**
* Default constructor
*/
ActionFadeFrame();
/**
* Default destructor
*/
virtual ~ActionFadeFrame();
/**
* Changes the fade action opacity.
*
* @param opacity the fade action opacity
*/
void setOpacity(int opacity);
/**
* Gets the fade action opacity.
*
* @return the fade action opacity.
*/
int getOpacity();
/**
* Gets the CCAction of ActionFrame.
*
* @parame fDuration the duration time of ActionFrame
*
* @return CCAction
*/
virtual Action* getAction(float fDuration);
protected:
float _opacity;
};
class ActionTintFrame:public ActionFrame
{
public:
/**
* Default constructor
*/
ActionTintFrame();
/**
* Default destructor
*/
virtual ~ActionTintFrame();
/**
* Changes the tint action color.
*
* @param ccolor the tint action color
*/
void setColor(Color3B ccolor);
/**
* Gets the tint action color.
*
* @return the tint action color.
*/
Color3B getColor();
/**
* Gets the CCAction of ActionFrame.
*
* @parame fDuration the duration time of ActionFrame
*
* @return CCAction
*/
virtual Action* getAction(float fDuration);
protected:
Color3B _color;
};
NS_CC_EXT_END
#endif

View File

@ -0,0 +1,189 @@
/****************************************************************************
Copyright (c) 2013 cocos2d-x.org
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.
****************************************************************************/
#include <math.h>
#include "CCActionFrameEasing.h"
#include "../Json/DictionaryHelper.h"
NS_CC_EXT_BEGIN
#ifndef M_PI_X_2
#define M_PI_X_2 (float)M_PI * 2.0f
#endif
ActionFrameEasing::ActionFrameEasing()
{
}
ActionFrameEasing::~ActionFrameEasing()
{
}
float ActionFrameEasing::bounceTime(float t)
{
if (t < 1 / 2.75) {
return 7.5625f * t * t;
}
else if (t < 2 / 2.75) {
t -= 1.5f / 2.75f;
return 7.5625f * t * t + 0.75f;
}
else if (t < 2.5 / 2.75) {
t -= 2.25f / 2.75f;
return 7.5625f * t * t + 0.9375f;
}
t -= 2.625f / 2.75f;
return 7.5625f * t * t + 0.984375f;
}
float ActionFrameEasing::easeValue(float t)
{
if (_type == FrameEasingType::kframeEasingInstant)
{
if (t < 1) return 0;
else return 1;
}
else if (_type == FrameEasingType::kframeEasingLinear)
{
return t;
}
else if (_type == FrameEasingType::kframeEasingCubicIn)
{
float rate = _fValue;
return powf(t,rate);
}
else if (_type == FrameEasingType::kframeEasingCubicOut)
{
float rate = _fValue;
return powf(t,1/rate);
}
else if (_type == FrameEasingType::kframeEasingCubicInOut)
{
float rate = _fValue;
t *= 2;
if (t < 1)
{
return 0.5f * powf (t, rate);
}
else
{
return 1.0f - 0.5f * powf(2-t, rate);
}
}
else if (_type == FrameEasingType::kframeEasingElasticIn)
{
float period = _fValue;
float newT = 0;
if (t == 0 || t == 1)
newT = t;
else {
float s = period / 4;
t = t - 1;
newT = -powf(2, 10 * t) * sinf( (t-s) * M_PI_X_2 / period);
}
return newT;
}
else if (_type == FrameEasingType::kframeEasingElasticOut)
{
float period = _fValue;
float newT = 0;
if (t == 0 || t == 1) {
newT = t;
} else {
float s = period / 4;
newT = powf(2, -10 * t) * sinf( (t-s) *M_PI_X_2 / period) + 1;
}
return newT;
}
else if (_type == FrameEasingType::kframeEasingElasticInOut)
{
float period = _fValue;
float newT = 0;
if( t == 0 || t == 1 )
newT = t;
else {
t = t * 2;
if(! period )
period = 0.3f * 1.5f;
float s = period / 4;
t = t -1;
if( t < 0 )
newT = -0.5f * powf(2, 10 * t) * sinf((t - s) * M_PI_X_2 / period);
else
newT = powf(2, -10 * t) * sinf((t - s) * M_PI_X_2 / period) * 0.5f + 1;
}
return newT;
}
else if (_type == FrameEasingType::kframeEasingBounceIn)
{
float newT = 1 - bounceTime(1-t);
return newT;
}
else if (_type == FrameEasingType::kframeEasingBounceOut)
{
float newT = bounceTime(t);
return newT;
}
else if (_type == FrameEasingType::kframeEasingBounceInOut)
{
float newT = 0;
if (t < 0.5) {
t = t * 2;
newT = (1 - bounceTime(1-t) ) * 0.5f;
} else
newT = bounceTime(t * 2 - 1) * 0.5f + 0.5f;
return newT;
}
else if (_type == FrameEasingType::kframeEasingBackIn)
{
float overshoot = 1.70158f;
return t * t * ((overshoot + 1) * t - overshoot);
}
else if (_type == FrameEasingType::kframeEasingBackOut)
{
float overshoot = 1.70158f;
t = t - 1;
return t * t * ((overshoot + 1) * t + overshoot) + 1;
}
else if (_type == FrameEasingType::kframeEasingBackInOut)
{
float overshoot = 1.70158f * 1.525f;
t = t * 2;
if (t < 1)
return (t * t * ((overshoot + 1) * t - overshoot)) / 2;
else {
t = t - 2;
return (t * t * ((overshoot + 1) * t + overshoot)) / 2 + 1;
}
}
return 0;
}
NS_CC_EXT_END

View File

@ -22,34 +22,50 @@
THE SOFTWARE. THE SOFTWARE.
****************************************************************************/ ****************************************************************************/
#ifndef __UIACTIONMANAGER_H__ #ifndef __ActionFrameEasing_H__
#define __UIACTIONMANAGER_H__ #define __ActionFrameEasing_H__
#include "cocos2d.h" #include "cocos2d.h"
#include "ExtensionMacros.h" #include "ExtensionMacros.h"
#include "UIAction.h" #include "../Json/CSContentJsonDictionary.h"
#include "../../Json/CSContentJsonDictionary.h"
NS_CC_EXT_BEGIN NS_CC_EXT_BEGIN
class UIActionManager:public Object enum FrameEasingType
{
kframeEasingInstant,
kframeEasingLinear,
kframeEasingCubicIn,
kframeEasingCubicOut,
kframeEasingCubicInOut,
kframeEasingElasticIn,
kframeEasingElasticOut,
kframeEasingElasticInOut,
kframeEasingBounceIn,
kframeEasingBounceOut,
kframeEasingBounceInOut,
kframeEasingBackIn,
kframeEasingBackOut,
kframeEasingBackInOut,
};
class ActionFrameEasing:public cocos2d::Object
{ {
protected: protected:
// CCArray* m_ActionList;/*guiaction*/ FrameEasingType _type;
Dictionary* m_pActionDic; float _fValue;
public: public:
UIActionManager(); ActionFrameEasing();
virtual ~UIActionManager(); virtual ~ActionFrameEasing();
static UIActionManager* shareManager();
static void purgeUIActionManager();
UIAction* GetActionByName(const char* jsonName,const char* actionName); float bounceTime(float t);
void PlayActionByName(const char* jsonName,const char* actionName); float easeValue(float t);
void initWithDictionary(const char* jsonName, cs::JsonDictionary* dic,UIWidget* root);
void releaseActions();
}; };
NS_CC_EXT_END NS_CC_EXT_END

View File

@ -0,0 +1,111 @@
/****************************************************************************
Copyright (c) 2013 cocos2d-x.org
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.
****************************************************************************/
#include "CCActionManagerEx.h"
#include "../Json/DictionaryHelper.h"
NS_CC_EXT_BEGIN
static ActionManagerEx* sharedActionManager = NULL;
ActionManagerEx* ActionManagerEx::shareManager()
{
if (!sharedActionManager) {
sharedActionManager = new ActionManagerEx();
}
return sharedActionManager;
}
void ActionManagerEx::purgeActionManager()
{
CC_SAFE_DELETE(sharedActionManager);
}
ActionManagerEx::ActionManagerEx()
: _pActionDic(NULL)
{
_pActionDic = Dictionary::create();
_pActionDic->retain();
}
ActionManagerEx::~ActionManagerEx()
{
_pActionDic->removeAllObjects();
_pActionDic->release();
}
void ActionManagerEx::initWithDictionary(const char* jsonName,cs::JsonDictionary *dic,Object* root)
{
std::string path = jsonName;
int pos = path.find_last_of("/");
std::string fileName = path.substr(pos+1,path.length());
CCLOG("filename == %s",fileName.c_str());
Array* actionList = Array::create();
int actionCount = DICTOOL->getArrayCount_json(dic, "actionlist");
for (int i=0; i<actionCount; i++) {
ActionObject* action = new ActionObject();
action->autorelease();
cs::JsonDictionary* actionDic = DICTOOL->getDictionaryFromArray_json(dic, "actionlist", i);
action->initWithDictionary(actionDic,root);
actionList->addObject(action);
CC_SAFE_DELETE(actionDic);
}
_pActionDic->setObject(actionList, fileName);
}
ActionObject* ActionManagerEx::getActionByName(const char* jsonName,const char* actionName)
{
Array* actionList = (Array*)(_pActionDic->objectForKey(jsonName));
if (!actionList)
{
return NULL;
}
for (unsigned int i=0; i<actionList->count(); i++)
{
ActionObject* action = dynamic_cast<ActionObject*>(actionList->getObjectAtIndex(i));
if (strcmp(actionName, action->getName()) == 0)
{
return action;
}
}
return NULL;
}
void ActionManagerEx::playActionByName(const char* jsonName,const char* actionName)
{
ActionObject* action = getActionByName(jsonName,actionName);
if (action)
{
action->play();
}
}
void ActionManagerEx::releaseActions()
{
_pActionDic->removeAllObjects();
}
NS_CC_EXT_END

View File

@ -22,43 +22,71 @@
THE SOFTWARE. THE SOFTWARE.
****************************************************************************/ ****************************************************************************/
#ifndef __UIACTION_H__ #ifndef __ActionMANAGER_H__
#define __UIACTION_H__ #define __ActionMANAGER_H__
#include "cocos2d.h" #include "cocos2d.h"
#include "ExtensionMacros.h" #include "ExtensionMacros.h"
#include "UIActionNode.h" #include "CCActionObject.h"
#include "../../Json/CSContentJsonDictionary.h" #include "../Json/CSContentJsonDictionary.h"
NS_CC_EXT_BEGIN NS_CC_EXT_BEGIN
class UIAction : public Object class ActionManagerEx:public Object
{ {
protected:
cocos2d::Array* m_ActionNodeList;/*actionnode*/
std::string m_name;
public: public:
UIAction();
virtual ~UIAction();
void Play(); /**
void Pause(); * Default constructor
void Stop(); */
ActionManagerEx();
void UpdateToFrameByIndex(int index); /**
* Default destructor
*/
virtual ~ActionManagerEx();
/**
* Gets the static instance of ActionManager.
*/
static ActionManagerEx* shareManager();
// /**
// CC_SYNTHESIZE(std::string, m_name, Name); * Purges ActionManager point.
// */
CC_SYNTHESIZE(bool, m_loop, Loop); static void purgeActionManager();
//
CC_SYNTHESIZE(float, m_fUnitTime, UnitTime);
void initWithDictionary(cs::JsonDictionary* dic,UIWidget* root); /**
* Gets an ActionObject with a name.
*
* @param jsonName UI file name
*
* @param actionName action name in the UI file.
*
* @return ActionObject which named as the param name
*/
ActionObject* getActionByName(const char* jsonName,const char* actionName);
void setName(const char* name); /**
const char* getName() const; * Play an Action with a name.
*
* @param jsonName UI file name
*
* @param actionName action name in teh UIfile.
*/
void playActionByName(const char* jsonName,const char* actionName);
/*init properties with json dictionay*/
void initWithDictionary(const char* jsonName,cs::JsonDictionary* dic,Object* root);
/**
* Release all actions.
*
*/
void releaseActions();
protected:
Dictionary* _pActionDic;
}; };
NS_CC_EXT_END NS_CC_EXT_END

View File

@ -0,0 +1,468 @@
/****************************************************************************
Copyright (c) 2013 cocos2d-x.org
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.
****************************************************************************/
#include "CCActionNode.h"
#include "CCActionFrameEasing.h"
#include "../GUI/BaseClasses/UIWidget.h"
#include "../GUI/System/UIHelper.h"
#include "../Json/DictionaryHelper.h"
NS_CC_EXT_BEGIN
ActionNode::ActionNode()
: _currentFrameIndex(0)
, _destFrameIndex(0)
, _fUnitTime(0.1f)
, _actionTag(0)
, _actionSpawn(NULL)
, _action(NULL)
, _object(NULL)
, _frameArray(NULL)
, _frameArrayNum(0)
{
_frameArray = Array::create();
_frameArray->retain();
_frameArrayNum = (int)kKeyframeMax;
for(int i = 0; i < _frameArrayNum; i++)
{
Array* cArray = Array::create();
_frameArray->addObject(cArray);
}
}
ActionNode::~ActionNode()
{
if (_action == NULL)
{
CC_SAFE_RELEASE(_actionSpawn);
}
else
{
CC_SAFE_RELEASE(_action);
}
if (_frameArray != NULL)
{
_frameArray->removeAllObjects();
CC_SAFE_RELEASE(_frameArray);
}
}
void ActionNode::initWithDictionary(cs::JsonDictionary *dic,Object* root)
{
setActionTag(DICTOOL->getIntValue_json(dic, "ActionTag"));
int actionFrameCount = DICTOOL->getArrayCount_json(dic, "actionframelist");
for (int i=0; i<actionFrameCount; i++) {
cs::JsonDictionary* actionFrameDic = DICTOOL->getDictionaryFromArray_json(dic, "actionframelist", i);
int frameInex = DICTOOL->getIntValue_json(actionFrameDic,"frameid");
bool existPosition = DICTOOL->checkObjectExist_json(actionFrameDic,"positionx");
if (existPosition)
{
float positionX = DICTOOL->getFloatValue_json(actionFrameDic, "positionx");
float positionY = DICTOOL->getFloatValue_json(actionFrameDic, "positiony");
ActionMoveFrame* actionFrame = new ActionMoveFrame();
actionFrame->setFrameIndex(frameInex);
actionFrame->setPosition(Point(positionX, positionY));
Array* cActionArray = (Array*)_frameArray->getObjectAtIndex((int)kKeyframeMove);
cActionArray->addObject(actionFrame);
}
bool existScale = DICTOOL->checkObjectExist_json(actionFrameDic,"scalex");
if (existScale)
{
float scaleX = DICTOOL->getFloatValue_json(actionFrameDic, "scalex");
float scaleY = DICTOOL->getFloatValue_json(actionFrameDic, "scaley");
ActionScaleFrame* actionFrame = new ActionScaleFrame();
actionFrame->setFrameIndex(frameInex);
actionFrame->setScaleX(scaleX);
actionFrame->setScaleY(scaleY);
Array* cActionArray = (Array*)_frameArray->getObjectAtIndex((int)kKeyframeScale);
cActionArray->addObject(actionFrame);
}
bool existRotation = DICTOOL->checkObjectExist_json(actionFrameDic,"rotation");
if (existRotation)
{
float rotation = DICTOOL->getFloatValue_json(actionFrameDic, "rotation");
ActionRotationFrame* actionFrame = new ActionRotationFrame();
actionFrame->setFrameIndex(frameInex);
actionFrame->setRotation(rotation);
Array* cActionArray = (Array*)_frameArray->getObjectAtIndex((int)kKeyframeRotate);
cActionArray->addObject(actionFrame);
}
bool existOpacity = DICTOOL->checkObjectExist_json(actionFrameDic,"opacity");
if (existOpacity)
{
int opacity = DICTOOL->getIntValue_json(actionFrameDic, "opacity");
ActionFadeFrame* actionFrame = new ActionFadeFrame();
actionFrame->setFrameIndex(frameInex);
actionFrame->setOpacity(opacity);
Array* cActionArray = (Array*)_frameArray->getObjectAtIndex((int)kKeyframeFade);
cActionArray->addObject(actionFrame);
}
bool existColor = DICTOOL->checkObjectExist_json(actionFrameDic,"colorr");
if (existColor)
{
int colorR = DICTOOL->getIntValue_json(actionFrameDic, "colorr");
int colorG = DICTOOL->getIntValue_json(actionFrameDic, "colorg");
int colorB = DICTOOL->getIntValue_json(actionFrameDic, "colorb");
ActionTintFrame* actionFrame = new ActionTintFrame();
actionFrame->setFrameIndex(frameInex);
actionFrame->setColor(Color3B(colorR,colorG,colorB));
Array* cActionArray = (Array*)_frameArray->getObjectAtIndex((int)kKeyframeTint);
cActionArray->addObject(actionFrame);
}
CC_SAFE_DELETE(actionFrameDic);
}
initActionNodeFromRoot(root);
}
void ActionNode::initActionNodeFromRoot(Object* root)
{
Node* rootNode = dynamic_cast<Node*>(root);
if (rootNode != NULL)
{
log("Need a definition of <initActionNodeFromRoot> for gameObject");
}
else
{
UIWidget* rootWidget = dynamic_cast<UIWidget*>(root);
if (rootWidget != NULL)
{
UIWidget* widget = UIHelper::instance()->seekActionWidgetByActionTag(rootWidget, getActionTag());
if (widget != NULL)
{
setObject(widget);
}
}
}
}
void ActionNode::setUnitTime(float fTime)
{
_fUnitTime = fTime;
this->refreshActionProperty();
}
float ActionNode::getUnitTime()
{
return _fUnitTime;
}
void ActionNode::setActionTag(int tag)
{
_actionTag = tag;
}
int ActionNode::getActionTag()
{
return _actionTag;
}
void ActionNode::setObject(Object* node)
{
_object = node;
}
Object* ActionNode::getObject()
{
return _object;
}
Node* ActionNode::getActionNode()
{
Node* cNode = dynamic_cast<Node*>(_object);
if (cNode != NULL)
{
return cNode;
}
else
{
UIWidget* rootWidget = dynamic_cast<UIWidget*>(_object);
if (rootWidget != NULL)
{
return rootWidget->getRenderer();
}
}
return NULL;
}
void ActionNode::insertFrame(int index, ActionFrame* frame)
{
if (frame == NULL)
{
return;
}
int frameType = frame->getFrameType();
Array* cArray = (Array*)_frameArray->getObjectAtIndex(frameType);
if (cArray == NULL)
{
return;
}
cArray->insertObject(frame,index);
}
void ActionNode::addFrame(ActionFrame* frame)
{
if (frame == NULL)
{
return;
}
int frameType = frame->getFrameType();
Array* cArray = (Array*)_frameArray->getObjectAtIndex(frameType);
if (cArray == NULL)
{
return;
}
cArray->addObject(frame);
}
void ActionNode::deleteFrame(ActionFrame* frame)
{
if (frame == NULL)
{
return;
}
int frameType = frame->getFrameType();
Array* cArray = (Array*)_frameArray->getObjectAtIndex(frameType);
if (cArray == NULL)
{
return;
}
cArray->removeObject(frame);
}
void ActionNode::clearAllFrame()
{
for (int i = 0; i < _frameArrayNum; i++)
{
_frameArray[i].removeAllObjects();
}
}
Spawn * ActionNode::refreshActionProperty()
{
if ( _object == NULL )
{
return NULL;
}
Array* cSpawnArray = Array::create();
for (int n = 0; n < _frameArrayNum; n++)
{
Array* cArray = (Array*)(_frameArray->getObjectAtIndex(n));
if (cArray == NULL || cArray->count() <= 0)
{
continue;
}
Array* cSequenceArray = Array::create();
int frameCount = cArray->count();
for (int i = 0; i < frameCount; i++)
{
ActionFrame* frame = (ActionFrame*)(cArray->getObjectAtIndex(i));
if (i == 0)
{
}
else
{
ActionFrame* srcFrame = (ActionFrame*)(cArray->getObjectAtIndex(i-1));
float duration = (frame->getFrameIndex() - srcFrame->getFrameIndex()) * getUnitTime();
Action* cAction = frame->getAction(duration);
cSequenceArray->addObject(cAction);
}
}
Sequence* cSequence = Sequence::create(cSequenceArray);
cSpawnArray->addObject(cSequence);
}
if (_action == NULL)
{
CC_SAFE_RELEASE(_actionSpawn);
}
else
{
CC_SAFE_RELEASE(_action);
}
_actionSpawn = Spawn::create(cSpawnArray);
return _actionSpawn;
}
void ActionNode::playAction(bool bloop)
{
if ( _object == NULL || _actionSpawn == NULL)
{
return;
}
if (_action!=NULL)
{
_action->release();
}
if (bloop)
{
_action = RepeatForever::create(_actionSpawn);
}
else
{
_action = Sequence::create(_actionSpawn, NULL);
}
_action->retain();
this->runAction();
}
void ActionNode::runAction()
{
Node* cNode = this->getActionNode();
if (cNode != NULL && _action != NULL)
{
cNode->runAction(_action);
}
}
void ActionNode::stopAction()
{
Node* cNode = this->getActionNode();
if (cNode != NULL && _action != NULL)
{
cNode->stopAction(_action);
}
}
int ActionNode::getFirstFrameIndex()
{
int frameindex = 99999;
for (int n = 0; n < _frameArrayNum; n++)
{
Array* cArray = (Array*)(_frameArray->getObjectAtIndex(n));
if (cArray == NULL || cArray->count() <= 0)
{
continue;
}
ActionFrame* frame = (ActionFrame*)(cArray->getObjectAtIndex(0));
int iFrameIndex = frame->getFrameIndex();
if (frameindex > iFrameIndex)
{
frameindex = iFrameIndex;
}
}
return frameindex;
}
int ActionNode::getLastFrameIndex()
{
int frameindex = -1;
for (int n = 0; n < _frameArrayNum; n++)
{
Array* cArray = (Array*)(_frameArray->getObjectAtIndex(n));
if (cArray == NULL || cArray->count() <= 0)
{
continue;
}
int lastInex = cArray->count() - 1;
ActionFrame* frame = (ActionFrame*)(cArray->getObjectAtIndex(lastInex));
int iFrameIndex = frame->getFrameIndex();
if (frameindex < iFrameIndex)
{
frameindex = iFrameIndex;
}
}
return frameindex;
}
bool ActionNode::updateActionToTimeLine(float fTime)
{
bool bFindFrame = false;
ActionFrame* srcFrame = NULL;
ActionFrame* destFrame = NULL;
for (int n = 0; n < _frameArrayNum; n++)
{
Array* cArray = (Array*)(_frameArray->getObjectAtIndex(n));
if (cArray == NULL)
{
continue;
}
int frameCount = cArray->count();
for (int i = 0; i < frameCount; i++)
{
ActionFrame* frame = (ActionFrame*)(cArray->getObjectAtIndex(i));
if (frame->getFrameIndex()*getUnitTime() == fTime)
{
this->easingToFrame(1.0f,1.0f,frame);
bFindFrame = true;
break;
}
else if (frame->getFrameIndex()*getUnitTime() > fTime)
{
if (i == 0)
{
this->easingToFrame(1.0f,1.0f,frame);
bFindFrame = false;
}
else
{
srcFrame = (ActionFrame*)(cArray->getObjectAtIndex(i-1));
float duration = (frame->getFrameIndex() - srcFrame->getFrameIndex())*getUnitTime();
float delaytime = fTime - srcFrame->getFrameIndex()*getUnitTime();
this->easingToFrame(duration,1.0f,srcFrame);
//float easingTime = ActionFrameEasing::bounceTime(delaytime);
this->easingToFrame(duration,delaytime/duration,frame);
bFindFrame = true;
}
break;
}
}
}
return bFindFrame;
}
void ActionNode::easingToFrame(float duration,float delayTime,ActionFrame* destFrame)
{
Action* cAction = destFrame->getAction(duration);
Node* cNode = this->getActionNode();
if (cAction == NULL || cNode == NULL)
{
return;
}
cAction->startWithTarget(cNode);
cAction->update(delayTime);
}
NS_CC_EXT_END

View File

@ -0,0 +1,176 @@
/****************************************************************************
Copyright (c) 2013 cocos2d-x.org
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 __ActionNODE_H__
#define __ActionNODE_H__
#include "cocos2d.h"
#include "ExtensionMacros.h"
#include "CCActionFrame.h"
#include "../Json/CSContentJsonDictionary.h"
NS_CC_EXT_BEGIN
class ActionNode:public Object
{
public:
/**
* Default constructor
*/
ActionNode();
/**
* Default destructor
*/
virtual ~ActionNode();
/**
* Sets the time interval of frame.
*
* @param fTime the time interval of frame
*/
void setUnitTime(float fTime);
/**
* Gets the time interval of frame.
*
* @return fTime the time interval of frame
*/
float getUnitTime();
/**
* Sets tag for ActionNode
*
* @param tag tag of ActionNode
*/
void setActionTag(int tag);
/**
* Gets tag for ActionNode
*
* @return tag tag of ActionNode
*/
int getActionTag();
/**
* Sets node which will run a action.
*
* @param node which will run a action
*/
void setObject(Object* node);
/**
* Gets node which will run a action.
*
* @return node which will run a action
*/
Object* getObject();
/**
* Insets a ActionFrame to ActionNode.
*
* @param index the index of ActionFrame
*
* @param frame the ActionFrame which will be inserted
*/
void insertFrame(int index, ActionFrame* frame);
/**
* Pushs back a ActionFrame to ActionNode.
*
* @param frame the ActionFrame which will be added
*/
void addFrame(ActionFrame* frame);
/**
* Remove a ActionFrame from ActionNode.
*
* @param frame the ActionFrame which will be removed
*/
void deleteFrame(ActionFrame* frame );
/**
* Remove all ActionFrames from ActionNode.
*/
void clearAllFrame();
/**
* Gets index of first ActionFrame.
*
* @return index of first ActionFrame
*/
int getFirstFrameIndex();
/**
* Gets index of last ActionFrame.
*
* @return index of last ActionFrame
*/
int getLastFrameIndex();
/**
* Updates action states to some time.
*
* @param fTime the time when need to update
*/
virtual bool updateActionToTimeLine(float fTime);
/**
* Play the action.
*
* @param bloop true the
*/
virtual void playAction(bool bloop);
/**
* Stop the action.
*/
virtual void stopAction();
/*init properties with a json dictionary*/
virtual void initWithDictionary(cs::JsonDictionary* dic,Object* root);
protected:
int _currentFrameIndex;
int _destFrameIndex;
float _fUnitTime;
int _actionTag;
Spawn * _actionSpawn;
Action* _action;
Object* _object;
Array* _frameArray;
int _frameArrayNum;
protected:
virtual Node* getActionNode();
virtual Spawn * refreshActionProperty();
virtual void runAction();
virtual void initActionNodeFromRoot(Object* root);
virtual void easingToFrame(float duration,float delayTime,ActionFrame* destFrame);
};
NS_CC_EXT_END
#endif

View File

@ -0,0 +1,174 @@
/****************************************************************************
Copyright (c) 2013 cocos2d-x.org
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.
****************************************************************************/
#include "CCActionObject.h"
#include "../Json/DictionaryHelper.h"
NS_CC_EXT_BEGIN
ActionObject::ActionObject()
: _actionNodeList(NULL)
, _name("")
, _loop(false)
, _bPause(false)
, _bPlaying(false)
, _fUnitTime(0.1f)
, _currentTime(0.0f)
{
_actionNodeList = Array::create();
_actionNodeList->retain();
}
ActionObject::~ActionObject()
{
_actionNodeList->removeAllObjects();
_actionNodeList->release();
}
void ActionObject::setName(const char* name)
{
_name.assign(name);
}
const char* ActionObject::getName()
{
return _name.c_str();
}
void ActionObject::setLoop(bool bLoop)
{
_loop = bLoop;
}
bool ActionObject::getLoop()
{
return _loop;
}
void ActionObject::setUnitTime(float fTime)
{
_fUnitTime = fTime;
int nodeNum = _actionNodeList->count();
for ( int i = 0; i < nodeNum; i++ )
{
ActionNode* actionNode = (ActionNode*)_actionNodeList->getObjectAtIndex(i);
actionNode->setUnitTime(_fUnitTime);
}
}
float ActionObject::getUnitTime()
{
return _fUnitTime;
}
float ActionObject::getCurrentTime()
{
return _currentTime;
}
void ActionObject::setCurrentTime(float fTime)
{
_currentTime = fTime;
}
bool ActionObject::isPlaying()
{
return _bPlaying;
}
void ActionObject::initWithDictionary(cs::JsonDictionary *dic,Object* root)
{
setName(DICTOOL->getStringValue_json(dic, "name"));
setLoop(DICTOOL->getBooleanValue_json(dic, "loop"));
setUnitTime(DICTOOL->getFloatValue_json(dic, "unittime"));
int actionNodeCount = DICTOOL->getArrayCount_json(dic, "actionnodelist");
for (int i=0; i<actionNodeCount; i++) {
ActionNode* actionNode = new ActionNode();
actionNode->autorelease();
cs::JsonDictionary* actionNodeDic = DICTOOL->getDictionaryFromArray_json(dic, "actionnodelist", i);
actionNode->initWithDictionary(actionNodeDic,root);
actionNode->setUnitTime(getUnitTime());
_actionNodeList->addObject(actionNode);
CC_SAFE_DELETE(actionNodeDic);
}
}
void ActionObject::addActionNode(ActionNode* node)
{
if (node == NULL)
{
return;
}
_actionNodeList->addObject(node);
}
void ActionObject::removeActionNode(ActionNode* node)
{
if (node == NULL)
{
return;
}
_actionNodeList->removeObject(node);
}
void ActionObject::play()
{
stop();
int frameNum = _actionNodeList->count();
for ( int i = 0; i < frameNum; i++ )
{
ActionNode* actionNode = (ActionNode*)_actionNodeList->getObjectAtIndex(i);
actionNode->playAction( getLoop());
}
}
void ActionObject::pause()
{
_bPause = true;
}
void ActionObject::stop()
{
int frameNum = _actionNodeList->count();
for ( int i = 0; i < frameNum; i++ )
{
ActionNode* actionNode = (ActionNode*)_actionNodeList->getObjectAtIndex(i);
actionNode->stopAction();
}
_bPause = false;
}
void ActionObject::updateToFrameByTime(float fTime)
{
_currentTime = fTime;
int nodeNum = _actionNodeList->count();
for ( int i = 0; i < nodeNum; i++ )
{
ActionNode* actionNode = (ActionNode*)_actionNodeList->getObjectAtIndex(i);
actionNode->updateActionToTimeLine(fTime);
}
}
NS_CC_EXT_END

View File

@ -0,0 +1,159 @@
/****************************************************************************
Copyright (c) 2013 cocos2d-x.org
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 __ActionObject_H__
#define __ActionObject_H__
#include "cocos2d.h"
#include "ExtensionMacros.h"
#include "CCActionNode.h"
#include "../Json/CSContentJsonDictionary.h"
NS_CC_EXT_BEGIN
class ActionObject:public Object
{
public:
/**
* Default constructor
*/
ActionObject();
/**
* Default destructor
*/
virtual ~ActionObject();
/**
* Sets name for object
*
* @param name name of object
*/
void setName(const char* name);
/**
* Sets name for object
*
* @return name of object
*/
const char* getName();
/**
* Sets if the action will loop play.
*
* @param bLoop that if the action will loop play
*/
void setLoop(bool bLoop);
/**
* Gets if the action will loop play.
*
* @return that if the action will loop play
*/
bool getLoop();
/**
* Sets the time interval of frame.
*
* @param fTime the time interval of frame
*/
void setUnitTime(float fTime);
/**
* Gets the time interval of frame.
*
* @return fTime the time interval of frame
*/
float getUnitTime();
/**
* Sets the current time of frame.
*
* @param fTime the current time of frame
*/
void setCurrentTime(float fTime);
/**
* Gets the current time of frame.
*
* @return fTime the current time of frame
*/
float getCurrentTime();
/**
* Return if the action is playing.
*
* @return true if the action is playing, false the otherwise
*/
bool isPlaying();
/**
* Play the action.
*/
void play();
/**
* Pause the action.
*/
void pause();
/**
* Stop the action.
*/
void stop();
/**
* Adds a ActionNode to play the action.
*
* @node the ActionNode which will play the action
*/
void addActionNode(ActionNode* node);
/**
* Removes a ActionNode which play the action.
*
* @node the ActionNode which play the action
*/
void removeActionNode(ActionNode* node);
/*update frame method*/
void updateToFrameByTime(float fTime);
/*init properties with a json dictionary*/
void initWithDictionary(cs::JsonDictionary* dic,Object* root);
protected:
Array* _actionNodeList;/*actionnode*/
std::string _name;
bool _loop;
bool _bPause;
bool _bPlaying;
float _fUnitTime;
float _currentTime;
};
NS_CC_EXT_END
#endif

View File

@ -1,110 +0,0 @@
/****************************************************************************
Copyright (c) 2013 cocos2d-x.org
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.
****************************************************************************/
#include "UIAction.h"
#include "UIActionNode.h"
#include "../../Json/DictionaryHelper.h"
NS_CC_EXT_BEGIN
UIAction::UIAction()
{
m_ActionNodeList = CCArray::create();
m_ActionNodeList->retain();
}
UIAction::~UIAction()
{
m_ActionNodeList->removeAllObjects();
m_ActionNodeList->release();
}
void UIAction::initWithDictionary(cs::JsonDictionary *dic,UIWidget* root)
{
setName(DICTOOL->getStringValue_json(dic, "name"));
setLoop(DICTOOL->getBooleanValue_json(dic, "loop"));
setUnitTime(DICTOOL->getFloatValue_json(dic, "unittime"));
int actionNodeCount = DICTOOL->getArrayCount_json(dic, "actionnodelist");
for (int i=0; i<actionNodeCount; i++)
{
UIActionNode* actionNode = new UIActionNode();
actionNode->autorelease();
cs::JsonDictionary* actionNodeDic = DICTOOL->getDictionaryFromArray_json(dic, "actionnodelist", i);
actionNode->initWithDictionary(actionNodeDic,root);
m_ActionNodeList->addObject(actionNode);
CC_SAFE_DELETE(actionNodeDic);
}
}
void UIAction::Play()
{
Stop();
int frameNum = m_ActionNodeList->count();
for ( int i = 0; i < frameNum; i++ )
{
UIActionNode* actionNode = (UIActionNode*)m_ActionNodeList->getObjectAtIndex(i);
actionNode->RunAction( getUnitTime(),getLoop() );
}
}
void UIAction::Pause()
{
}
void UIAction::Stop()
{
int frameNum = m_ActionNodeList->count();
for ( int i = 0; i < frameNum; i++ )
{
UIActionNode* actionNode = (UIActionNode*)m_ActionNodeList->getObjectAtIndex(i);
actionNode->StopAction();
}
}
void UIAction::UpdateToFrameByIndex(int index)
{
int frameNum = m_ActionNodeList->count();
for ( int i = 0; i < frameNum; i++ )
{
UIActionNode* actionNode = (UIActionNode*)m_ActionNodeList->getObjectAtIndex(i);
actionNode->UpdateToFrameByIndex(index);
}
}
void UIAction::setName(const char* name)
{
m_name = name;
}
const char* UIAction::getName() const
{
return m_name.c_str();
}
NS_CC_EXT_END

View File

@ -1,51 +0,0 @@
/****************************************************************************
Copyright (c) 2013 cocos2d-x.org
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.
****************************************************************************/
#include "UIActionFrame.h"
#include "../../Json/DictionaryHelper.h"
NS_CC_EXT_BEGIN
UIActionFrame::UIActionFrame()
{
}
UIActionFrame::~UIActionFrame()
{
}
void UIActionFrame::initWithDictionary(cs::JsonDictionary *dic)
{
setFrameId(DICTOOL->getIntValue_json(dic, "frameid"));
setStartTime(DICTOOL->getFloatValue_json(dic, "starttime"));
setPosition(Point(DICTOOL->getFloatValue_json(dic, "positionx"), DICTOOL->getFloatValue_json(dic, "positiony")));
setScaleX(DICTOOL->getFloatValue_json(dic, "scalex"));
setScaleY(DICTOOL->getFloatValue_json(dic, "scaley"));
setRotation(DICTOOL->getFloatValue_json(dic, "rotation"));
setOpacity(DICTOOL->getIntValue_json(dic, "opacity"));
setColor(Color3B(DICTOOL->getIntValue_json(dic, "colorr"), DICTOOL->getIntValue_json(dic, "colorg"), DICTOOL->getIntValue_json(dic, "colorb")));
}
NS_CC_EXT_END

View File

@ -1,64 +0,0 @@
/****************************************************************************
Copyright (c) 2013 cocos2d-x.org
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 __UIACTIONFRAME_H__
#define __UIACTIONFRAME_H__
#include "cocos2d.h"
#include "ExtensionMacros.h"
#include "../../Json/CSContentJsonDictionary.h"
NS_CC_EXT_BEGIN
class UIActionFrame:public Object
{
protected:
public:
UIActionFrame();
virtual ~UIActionFrame();
//
CC_SYNTHESIZE(int, m_frameId, FrameId);
//
CC_SYNTHESIZE(float, m_startTime, StartTime);
//
CC_SYNTHESIZE(Point, m_position, Position);
//
CC_SYNTHESIZE(float, m_scaleX, ScaleX);
//
CC_SYNTHESIZE(float, m_scaleY, ScaleY);
//
CC_SYNTHESIZE(float, m_rotation, Rotation);
//
CC_SYNTHESIZE(float, m_opacity, Opacity);
//
CC_SYNTHESIZE(Color3B, m_color, Color);
void initWithDictionary(cs::JsonDictionary* dic);
};
NS_CC_EXT_END
#endif

View File

@ -1,112 +0,0 @@
/****************************************************************************
Copyright (c) 2013 cocos2d-x.org
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.
****************************************************************************/
#include "UIActionManager.h"
#include "../../Json/DictionaryHelper.h"
#include "UIAction.h"
NS_CC_EXT_BEGIN
static UIActionManager* sharedActionManager = NULL;
UIActionManager* UIActionManager::shareManager()
{
if (!sharedActionManager)
{
sharedActionManager = new UIActionManager();
}
return sharedActionManager;
}
void UIActionManager::purgeUIActionManager()
{
CC_SAFE_DELETE(sharedActionManager);
}
UIActionManager::UIActionManager()
{
m_pActionDic = CCDictionary::create();
m_pActionDic->retain();
}
UIActionManager::~UIActionManager()
{
m_pActionDic->removeAllObjects();
m_pActionDic->release();
}
void UIActionManager::initWithDictionary(const char* jsonName,cs::JsonDictionary *dic,UIWidget* root)
{
std::string path = jsonName;
int pos = path.find_last_of("/");
std::string fileName = path.substr(pos+1,path.length());
CCLOG("filename == %s",fileName.c_str());
Array* actionList = Array::create();
int actionCount = DICTOOL->getArrayCount_json(dic, "actionlist");
for (int i=0; i<actionCount; i++)
{
UIAction* action = new UIAction();
action->autorelease();
cs::JsonDictionary* actionDic = DICTOOL->getDictionaryFromArray_json(dic, "actionlist", i);
action->initWithDictionary(actionDic,root);
actionList->addObject(action);
CC_SAFE_DELETE(actionDic);
}
m_pActionDic->setObject(actionList, fileName);
}
UIAction* UIActionManager::GetActionByName(const char* jsonName,const char* actionName)
{
Array* actionList = (Array*)(m_pActionDic->objectForKey(jsonName));
if (!actionList)
{
return NULL;
}
for (unsigned int i=0; i<actionList->count(); i++)
{
UIAction* action = dynamic_cast<UIAction*>(actionList->getObjectAtIndex(i));
if (strcmp(actionName, action->getName()) == 0)
{
return action;
}
}
return NULL;
}
void UIActionManager::PlayActionByName(const char* jsonName,const char* actionName)
{
UIAction* action = GetActionByName(jsonName,actionName);
if (action)
{
action->Play();
}
}
/*temp */
void UIActionManager::releaseActions()
{
m_pActionDic->removeAllObjects();
}
NS_CC_EXT_END

View File

@ -1,228 +0,0 @@
/****************************************************************************
Copyright (c) 2013 cocos2d-x.org
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.
****************************************************************************/
#include "UIActionNode.h"
#include "UIActionFrame.h"
#include "../../Json/DictionaryHelper.h"
#include "../System/UIHelper.h"
NS_CC_EXT_BEGIN
UIActionNode::UIActionNode()
{
currentIndex = 0;
m_actionNode = NULL;
m_action = NULL;
m_ActionFrameList = Array::create();
m_ActionFrameList->retain();
}
UIActionNode::~UIActionNode()
{
if (m_action != NULL)
{
m_action->release();
}
if (m_actionNode)
{
m_actionNode->setBindingAction(NULL);
}
m_ActionFrameList->removeAllObjects();
m_ActionFrameList->release();
}
void UIActionNode::initWithDictionary(cs::JsonDictionary *dic,UIWidget* root)
{
setActionTag(DICTOOL->getIntValue_json(dic, "ActionTag"));
int actionFrameCount = DICTOOL->getArrayCount_json(dic, "actionframelist");
UIWidget* bindingWidget = CCUIHELPER->seekActionWidgetByActionTag(root, getActionTag());
if (bindingWidget)
{
SetActionNode(bindingWidget);
bindingWidget->setBindingAction(this);
}
for (int i=0; i<actionFrameCount; i++)
{
UIActionFrame* actionFrame = new UIActionFrame();
actionFrame->autorelease();
cs::JsonDictionary* actionFrameDic = DICTOOL->getDictionaryFromArray_json(dic, "actionframelist", i);
actionFrame->initWithDictionary(actionFrameDic);
m_ActionFrameList->addObject(actionFrame);
CC_SAFE_DELETE(actionFrameDic);
}
}
void UIActionNode::SetActionNode(UIWidget* widget)
{
m_actionNode = widget;
//UpdateToFrameByIndex(currentIndex);
}
void UIActionNode::releaseBindingWidget()
{
m_actionNode = NULL;
}
void UIActionNode::InsertFrame(int index, UIActionFrame* frame)
{
m_ActionFrameList->insertObject(frame,index);
}
void UIActionNode::AddFrame(UIActionFrame* frame)
{
m_ActionFrameList->addObject(frame);
}
void UIActionNode::DeleteFrame(UIActionFrame* frame)
{
m_ActionFrameList->removeObject(frame);
}
void UIActionNode::ClearAllFrame()
{
m_ActionFrameList->removeAllObjects();
}
void UIActionNode::UpdateToFrameByIndex(int index)
{
currentIndex = index;
int frameNum = m_ActionFrameList->count();
bool bFindFrame = false;
UIActionFrame* frame = NULL;
for (int i = 0; i < frameNum; i++)
{
frame = (UIActionFrame*)m_ActionFrameList->getObjectAtIndex(index);
if (frame->getFrameId() == index)
{
bFindFrame = true;
UpdateToFrame(frame);
break;
}
}
if (!bFindFrame)
{
m_actionNode->setVisible(false);
}
}
void UIActionNode::UpdateToFrame(UIActionFrame* frame)
{
if ( m_actionNode == NULL || frame == NULL )
{
return;
}
m_actionNode->setRotation(frame->getRotation());
m_actionNode->setScaleX(frame->getScaleX());
m_actionNode->setScaleY(frame->getScaleY());
m_actionNode->setPosition(frame->getPosition());
m_actionNode->setOpacity(frame->getOpacity());
m_actionNode->setColor(frame->getColor());
}
void UIActionNode::RunAction(float fUnitTime, bool bloop)
{
int frameNum = m_ActionFrameList->count();
if ( m_actionNode == NULL || frameNum <= 0 )
{
return;
}
Array* actionFrame = Array::create();
for ( int i = 0; i < frameNum; i++ )
{
float duration;
UIActionFrame* frame = (UIActionFrame*)m_ActionFrameList->getObjectAtIndex(i);
if ( i == 0 )
{
//duration = frame->getFrameId() * fUnitTime;
duration = 0.01f;
}
else
{
UIActionFrame* frame_pre = (UIActionFrame*)m_ActionFrameList->getObjectAtIndex(i-1);
duration = (frame->getFrameId() - frame_pre->getFrameId()) * fUnitTime;
}
MoveTo* action_1 = MoveTo::create(duration,frame->getPosition());
RotateTo* action_2 = RotateTo::create(duration,frame->getRotation());
ScaleTo* action_3 = ScaleTo::create(duration,frame->getScaleX(),frame->getScaleY());
FadeTo* action_4 = FadeTo::create(duration,frame->getOpacity());
TintTo* action_5 = TintTo::create(duration,frame->getColor().r,frame->getColor().g,frame->getColor().b);
Spawn * actionSpawn = Spawn::create(action_1,action_2,action_3,action_4,action_5, NULL);
actionFrame->addObject( actionSpawn );
}
if (bloop)
{
ActionInterval* actionInterval = dynamic_cast<ActionInterval*>(Sequence::create(actionFrame));
if (actionInterval)
{
if (m_actionNode) {
if (m_action!=NULL)
{
m_action->release();
}
m_action = RepeatForever::create(actionInterval);
m_action->retain();
m_actionNode->runAction(m_action);
}
}
}
else
{
if (m_actionNode) {
if (m_action!=NULL)
{
m_action->release();
}
m_action = Sequence::create(actionFrame);
m_action->retain();
m_actionNode->runAction(m_action);
}
}
}
void UIActionNode::StopAction()
{
if (m_actionNode) {
m_actionNode->stopAction(m_action);
}
}
NS_CC_EXT_END

View File

@ -1,67 +0,0 @@
/****************************************************************************
Copyright (c) 2013 cocos2d-x.org
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 __UIACTIONNODE_H__
#define __UIACTIONNODE_H__
#include "cocos2d.h"
#include "ExtensionMacros.h"
#include "../BaseClasses/UIWidget.h"
#include "UIActionFrame.h"
#include "../../Json/CSContentJsonDictionary.h"
NS_CC_EXT_BEGIN
class UIActionNode:public Object
{
protected:
int currentIndex;
Action* m_action;
UIWidget* m_actionNode;
//data
Array* m_ActionFrameList;/*action frame*/
CC_SYNTHESIZE(int, m_nActionTag, ActionTag);
public:
UIActionNode();
virtual ~UIActionNode();
void SetActionNode(UIWidget* widget);
void InsertFrame(int index, UIActionFrame* frame);
void AddFrame(UIActionFrame* frame);
void DeleteFrame(UIActionFrame* frame);
void ClearAllFrame();
void UpdateToFrameByIndex(int index);
void UpdateToFrame(UIActionFrame* frame);
void RunAction(float fUnitTime, bool bloop);
void StopAction();
void initWithDictionary(cs::JsonDictionary* dic,UIWidget* root);
void releaseBindingWidget();
};
NS_CC_EXT_END
#endif

View File

@ -68,10 +68,7 @@ _sizeType(SIZE_ABSOLUTE),
_sizePercent(Point::ZERO), _sizePercent(Point::ZERO),
_positionType(POSITION_ABSOLUTE), _positionType(POSITION_ABSOLUTE),
_positionPercent(Point::ZERO), _positionPercent(Point::ZERO),
_isRunning(false), _isRunning(false)
/*temp action*/
_bindingAction(NULL)
{ {
} }
@ -1174,11 +1171,6 @@ int UIWidget::getActionTag()
return _actionTag; return _actionTag;
} }
void UIWidget::setBindingAction(UIActionNode *actionNode)
{
_bindingAction = actionNode;
}
GUIRenderer::GUIRenderer(): GUIRenderer::GUIRenderer():
_enabled(true) _enabled(true)
{ {

View File

@ -883,7 +883,6 @@ public:
/*temp action*/ /*temp action*/
void setActionTag(int tag); void setActionTag(int tag);
int getActionTag(); int getActionTag();
void setBindingAction(UIActionNode* actionNode);
protected: protected:
//call back function called when size changed. //call back function called when size changed.
virtual void onSizeChanged(); virtual void onSizeChanged();
@ -955,9 +954,6 @@ protected:
PositionType _positionType; PositionType _positionType;
Point _positionPercent; Point _positionPercent;
bool _isRunning; bool _isRunning;
/*temp action*/
UIActionNode* _bindingAction;
}; };
class GUIRenderer : public NodeRGBA class GUIRenderer : public NodeRGBA

View File

@ -46,8 +46,6 @@
#include "../../Reader/CCSGUIReader.h" #include "../../Reader/CCSGUIReader.h"
#include "UILayer.h" #include "UILayer.h"
#include "../Layouts/LayoutExecutant.h" #include "../Layouts/LayoutExecutant.h"
/*temp action*/
#include "../Action/UIActionManager.h"
NS_CC_EXT_BEGIN NS_CC_EXT_BEGIN
const char* CocosGUIVersion(); const char* CocosGUIVersion();

View File

@ -24,7 +24,7 @@
#include "../GUI/System/CocosGUI.h" #include "../GUI/System/CocosGUI.h"
#include "../Json/DictionaryHelper.h" #include "../Json/DictionaryHelper.h"
//#include "../Action/UIActionManager.h" #include "../Action/CCActionManagerEx.h"
#include <fstream> #include <fstream>
#include <iostream> #include <iostream>
@ -258,10 +258,10 @@ UIWidget* CCSGUIReader::widgetFromJsonFile(const char *fileName)
// widget->setFileDesignSize(CCSizeMake(fileDesignWidth, fileDesignHeight)); // widget->setFileDesignSize(CCSizeMake(fileDesignWidth, fileDesignHeight));
cs::JsonDictionary* actions = DICTOOL->getSubDictionary_json(jsonDict, "animation"); cs::JsonDictionary* actions = DICTOOL->getSubDictionary_json(jsonDict, "animation");
/* *********temp********* */ /* *********temp********* */
// UIActionManager::shareManager()->releaseActions(); // ActionManager::shareManager()->releaseActions();
/* ********************** */ /* ********************** */
CCLOG("file name == [%s]",fileName); CCLOG("file name == [%s]",fileName);
UIActionManager::shareManager()->initWithDictionary(fileName,actions,widget); ActionManagerEx::shareManager()->initWithDictionary(fileName,actions,widget);
CC_SAFE_DELETE(widgetTree); CC_SAFE_DELETE(widgetTree);
CC_SAFE_DELETE(actions); CC_SAFE_DELETE(actions);

View File

@ -77,7 +77,7 @@
#include "CocoStudio/Reader/CCSSceneReader.h" #include "CocoStudio/Reader/CCSSceneReader.h"
#include "CocoStudio/Reader/CCSGUIReader.h" #include "CocoStudio/Reader/CCSGUIReader.h"
#include "CocoStudio/Action/CCActionManagerEx.h"
#include "CCDeprecated-ext.h" #include "CCDeprecated-ext.h"

View File

@ -10,8 +10,8 @@ INCLUDES = -I$(COCOS_ROOT)/external \
-I../GUI/CCControlExtension \ -I../GUI/CCControlExtension \
-I../network \ -I../network \
-I../GUI/CCEditBox \ -I../GUI/CCEditBox \
-I../Components \ -I../CocoStudio/Components \
-I../CCArmature -I../CocoStudio/Armature
DEFINES += -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 DEFINES += -DCC_ENABLE_CHIPMUNK_INTEGRATION=1
DEFINES += -D__CC_PLATFORM_IMAGE_CPP__ DEFINES += -D__CC_PLATFORM_IMAGE_CPP__
@ -59,35 +59,65 @@ SOURCES = ../CCBReader/CCBFileLoader.cpp \
../GUI/CCEditBox/CCEditBoxImplNone.cpp \ ../GUI/CCEditBox/CCEditBoxImplNone.cpp \
../physics_nodes/CCPhysicsDebugNode.cpp \ ../physics_nodes/CCPhysicsDebugNode.cpp \
../physics_nodes/CCPhysicsSprite.cpp \ ../physics_nodes/CCPhysicsSprite.cpp \
../Components/CCComAttribute.cpp \ ../CocoStudio/Armature/CCArmature.cpp \
../Components/CCComAudio.cpp \ ../CocoStudio/Armature/CCBone.cpp \
../Components/CCComController.cpp \ ../CocoStudio/Armature/animation/CCArmatureAnimation.cpp \
../Components/CCInputDelegate.cpp \ ../CocoStudio/Armature/animation/CCProcessBase.cpp \
../CCArmature/CCArmature.cpp \ ../CocoStudio/Armature/animation/CCTween.cpp \
../CCArmature/CCBone.cpp \ ../CocoStudio/Armature/datas/CCDatas.cpp \
../CCArmature/animation/CCArmatureAnimation.cpp \ ../CocoStudio/Armature/display/CCBatchNode.cpp \
../CCArmature/animation/CCProcessBase.cpp \ ../CocoStudio/Armature/display/CCDecorativeDisplay.cpp \
../CCArmature/animation/CCTween.cpp \ ../CocoStudio/Armature/display/CCDisplayFactory.cpp \
../CCArmature/datas/CCDatas.cpp \ ../CocoStudio/Armature/display/CCDisplayManager.cpp \
../CCArmature/display/CCBatchNode.cpp \ ../CocoStudio/Armature/display/CCSkin.cpp \
../CCArmature/display/CCDecorativeDisplay.cpp \ ../CocoStudio/Armature/physics/CCColliderDetector.cpp \
../CCArmature/display/CCDisplayFactory.cpp \ ../CocoStudio/Armature/utils/CCArmatureDefine.cpp \
../CCArmature/display/CCDisplayManager.cpp \ ../CocoStudio/Armature/utils/CCArmatureDataManager.cpp \
../CCArmature/display/CCShaderNode.cpp \ ../CocoStudio/Armature/utils/CCDataReaderHelper.cpp \
../CCArmature/display/CCSkin.cpp \ ../CocoStudio/Armature/utils/CCSpriteFrameCacheHelper.cpp \
../CCArmature/external_tool/GLES-Render.cpp \ ../CocoStudio/Armature/utils/CCTransformHelp.cpp \
../CCArmature/external_tool/Json/CSContentJsonDictionary.cpp \ ../CocoStudio/Armature/utils/CCTweenFunction.cpp \
../CCArmature/external_tool/Json/lib_json/json_value.cpp \ ../CocoStudio/Armature/utils/CCUtilMath.cpp \
../CCArmature/external_tool/Json/lib_json/json_reader.cpp \ ../CocoStudio/Components/CCComAttribute.cpp \
../CCArmature/external_tool/Json/lib_json/json_writer.cpp \ ../CocoStudio/Components/CCComAudio.cpp \
../CCArmature/physics/CCColliderDetector.cpp \ ../CocoStudio/Components/CCComController.cpp \
../CCArmature/physics/CCPhysicsWorld.cpp \ ../CocoStudio/Components/CCComRender.cpp \
../CCArmature/utils/CCArmatureDataManager.cpp \ ../CocoStudio/Components/CCInputDelegate.cpp \
../CCArmature/utils/CCDataReaderHelper.cpp \ ../CocoStudio/GUI/BaseClasses/UIRootWidget.cpp \
../CCArmature/utils/CCSpriteFrameCacheHelper.cpp \ ../CocoStudio/GUI/BaseClasses/UIWidget.cpp \
../CCArmature/utils/CCTransformHelp.cpp \ ../CocoStudio/GUI/Layouts/Layout.cpp \
../CCArmature/utils/CCTweenFunction.cpp \ ../CocoStudio/GUI/Layouts/LayoutExecutant.cpp \
../CCArmature/utils/CCUtilMath.cpp \ ../CocoStudio/GUI/Layouts/LayoutParameter.cpp \
../CocoStudio/GUI/Layouts/UILayoutDefine.cpp \
../CocoStudio/GUI/System/CocosGUI.cpp \
../CocoStudio/GUI/System/UIHelper.cpp \
../CocoStudio/GUI/System/UIInputManager.cpp \
../CocoStudio/GUI/System/UILayer.cpp \
../CocoStudio/GUI/UIWidgets/UIButton.cpp \
../CocoStudio/GUI/UIWidgets/UICheckBox.cpp \
../CocoStudio/GUI/UIWidgets/UIImageView.cpp \
../CocoStudio/GUI/UIWidgets/UILabel.cpp \
../CocoStudio/GUI/UIWidgets/UILabelAtlas.cpp \
../CocoStudio/GUI/UIWidgets/UILabelBMFont.cpp \
../CocoStudio/GUI/UIWidgets/UILoadingBar.cpp \
../CocoStudio/GUI/UIWidgets/UISlider.cpp \
../CocoStudio/GUI/UIWidgets/UITextField.cpp \
../CocoStudio/GUI/UIWidgets/ScrollWidget/UIDragPanel.cpp \
../CocoStudio/GUI/UIWidgets/ScrollWidget/UIListView.cpp \
../CocoStudio/GUI/UIWidgets/ScrollWidget/UIPageView.cpp \
../CocoStudio/GUI/UIWidgets/ScrollWidget/UIScrollView.cpp \
../CocoStudio/Json/CSContentJsonDictionary.cpp \
../CocoStudio/Json/DictionaryHelper.cpp \
../CocoStudio/Json/lib_json/json_reader.cpp \
../CocoStudio/Json/lib_json/json_value.cpp \
../CocoStudio/Json/lib_json/json_writer.cpp \
../CocoStudio/Reader/CCSGUIReader.cpp \
../CocoStudio/Reader/CCSSceneReader.cpp \
../CocoStudio/Action/CCActionFrame.cpp \
../CocoStudio/Action/CCActionFrameEasing.cpp \
../CocoStudio/Action/CCActionManagerEx.cpp \
../CocoStudio/Action/CCActionNode.cpp \
../CocoStudio/Action/CCActionObject.cpp \
../CCDeprecated-ext.cpp ../CCDeprecated-ext.cpp
include $(COCOS_ROOT)/cocos2dx/proj.emscripten/cocos2dx.mk include $(COCOS_ROOT)/cocos2dx/proj.emscripten/cocos2dx.mk

View File

@ -10,8 +10,8 @@ INCLUDES = -I$(COCOS_ROOT)/external \
-I../GUI/CCControlExtension \ -I../GUI/CCControlExtension \
-I../GUI/CCEditBox \ -I../GUI/CCEditBox \
-I../network \ -I../network \
-I../Components \ -I../CocoStudio/Components \
-I../CCArmature -I../CocoStudio/Armature
SOURCES = ../CCBReader/CCBFileLoader.cpp \ SOURCES = ../CCBReader/CCBFileLoader.cpp \
../CCBReader/CCMenuItemImageLoader.cpp \ ../CCBReader/CCMenuItemImageLoader.cpp \
@ -81,10 +81,6 @@ SOURCES = ../CCBReader/CCBFileLoader.cpp \
../CocoStudio/Components/CCComController.cpp \ ../CocoStudio/Components/CCComController.cpp \
../CocoStudio/Components/CCComRender.cpp \ ../CocoStudio/Components/CCComRender.cpp \
../CocoStudio/Components/CCInputDelegate.cpp \ ../CocoStudio/Components/CCInputDelegate.cpp \
../CocoStudio/GUI/Action/UIAction.cpp \
../CocoStudio/GUI/Action/UIActionFrame.cpp \
../CocoStudio/GUI/Action/UIActionManager.cpp \
../CocoStudio/GUI/Action/UIActionNode.cpp \
../CocoStudio/GUI/BaseClasses/UIRootWidget.cpp \ ../CocoStudio/GUI/BaseClasses/UIRootWidget.cpp \
../CocoStudio/GUI/BaseClasses/UIWidget.cpp \ ../CocoStudio/GUI/BaseClasses/UIWidget.cpp \
../CocoStudio/GUI/Layouts/Layout.cpp \ ../CocoStudio/GUI/Layouts/Layout.cpp \
@ -115,6 +111,11 @@ SOURCES = ../CCBReader/CCBFileLoader.cpp \
../CocoStudio/Json/lib_json/json_writer.cpp \ ../CocoStudio/Json/lib_json/json_writer.cpp \
../CocoStudio/Reader/CCSGUIReader.cpp \ ../CocoStudio/Reader/CCSGUIReader.cpp \
../CocoStudio/Reader/CCSSceneReader.cpp \ ../CocoStudio/Reader/CCSSceneReader.cpp \
../CocoStudio/Action/CCActionFrame.cpp \
../CocoStudio/Action/CCActionFrameEasing.cpp \
../CocoStudio/Action/CCActionManagerEx.cpp \
../CocoStudio/Action/CCActionNode.cpp \
../CocoStudio/Action/CCActionObject.cpp \
../spine/Animation.cpp \ ../spine/Animation.cpp \
../spine/AnimationState.cpp \ ../spine/AnimationState.cpp \
../spine/AnimationStateData.cpp \ ../spine/AnimationStateData.cpp \

View File

@ -68,12 +68,41 @@ EXTENSIONS_SOURCES = ../CCBReader/CCBFileLoader.cpp \
../CocoStudio/Components/CCComController.cpp \ ../CocoStudio/Components/CCComController.cpp \
../CocoStudio/Components/CCComRender.cpp \ ../CocoStudio/Components/CCComRender.cpp \
../CocoStudio/Components/CCInputDelegate.cpp \ ../CocoStudio/Components/CCInputDelegate.cpp \
../CocoStudio/GUI/BaseClasses/UIRootWidget.cpp \
../CocoStudio/GUI/BaseClasses/UIWidget.cpp \
../CocoStudio/GUI/Layouts/Layout.cpp \
../CocoStudio/GUI/Layouts/LayoutExecutant.cpp \
../CocoStudio/GUI/Layouts/LayoutParameter.cpp \
../CocoStudio/GUI/Layouts/UILayoutDefine.cpp \
../CocoStudio/GUI/System/CocosGUI.cpp \
../CocoStudio/GUI/System/UIHelper.cpp \
../CocoStudio/GUI/System/UIInputManager.cpp \
../CocoStudio/GUI/System/UILayer.cpp \
../CocoStudio/GUI/UIWidgets/UIButton.cpp \
../CocoStudio/GUI/UIWidgets/UICheckBox.cpp \
../CocoStudio/GUI/UIWidgets/UIImageView.cpp \
../CocoStudio/GUI/UIWidgets/UILabel.cpp \
../CocoStudio/GUI/UIWidgets/UILabelAtlas.cpp \
../CocoStudio/GUI/UIWidgets/UILabelBMFont.cpp \
../CocoStudio/GUI/UIWidgets/UILoadingBar.cpp \
../CocoStudio/GUI/UIWidgets/UISlider.cpp \
../CocoStudio/GUI/UIWidgets/UITextField.cpp \
../CocoStudio/GUI/UIWidgets/ScrollWidget/UIDragPanel.cpp \
../CocoStudio/GUI/UIWidgets/ScrollWidget/UIListView.cpp \
../CocoStudio/GUI/UIWidgets/ScrollWidget/UIPageView.cpp \
../CocoStudio/GUI/UIWidgets/ScrollWidget/UIScrollView.cpp \
../CocoStudio/Json/CSContentJsonDictionary.cpp \ ../CocoStudio/Json/CSContentJsonDictionary.cpp \
../CocoStudio/Json/DictionaryHelper.cpp \ ../CocoStudio/Json/DictionaryHelper.cpp \
../CocoStudio/Json/lib_json/json_value.cpp \ ../CocoStudio/Json/lib_json/json_value.cpp \
../CocoStudio/Json/lib_json/json_reader.cpp \ ../CocoStudio/Json/lib_json/json_reader.cpp \
../CocoStudio/Json/lib_json/json_writer.cpp \ ../CocoStudio/Json/lib_json/json_writer.cpp \
../CocoStudio/Reader/CCSSceneReader.cpp \ ../CocoStudio/Reader/CCSSceneReader.cpp \
../CocoStudio/Reader/CCSGUIReader.cpp \
../CocoStudio/Action/CCActionFrame.cpp \
../CocoStudio/Action/CCActionFrameEasing.cpp \
../CocoStudio/Action/CCActionManagerEx.cpp \
../CocoStudio/Action/CCActionNode.cpp \
../CocoStudio/Action/CCActionObject.cpp \
../spine/Animation.cpp \ ../spine/Animation.cpp \
../spine/AnimationState.cpp \ ../spine/AnimationState.cpp \
../spine/AnimationStateData.cpp \ ../spine/AnimationStateData.cpp \

View File

@ -117,6 +117,11 @@
<ClCompile Include="..\CCBReader\CCScrollViewLoader.cpp" /> <ClCompile Include="..\CCBReader\CCScrollViewLoader.cpp" />
<ClCompile Include="..\CCBReader\CCSpriteLoader.cpp" /> <ClCompile Include="..\CCBReader\CCSpriteLoader.cpp" />
<ClCompile Include="..\CCDeprecated-ext.cpp" /> <ClCompile Include="..\CCDeprecated-ext.cpp" />
<ClCompile Include="..\CocoStudio\Action\CCActionFrame.cpp" />
<ClCompile Include="..\CocoStudio\Action\CCActionFrameEasing.cpp" />
<ClCompile Include="..\CocoStudio\Action\CCActionManagerEx.cpp" />
<ClCompile Include="..\CocoStudio\Action\CCActionNode.cpp" />
<ClCompile Include="..\CocoStudio\Action\CCActionObject.cpp" />
<ClCompile Include="..\CocoStudio\Armature\animation\CCArmatureAnimation.cpp" /> <ClCompile Include="..\CocoStudio\Armature\animation\CCArmatureAnimation.cpp" />
<ClCompile Include="..\CocoStudio\Armature\animation\CCProcessBase.cpp" /> <ClCompile Include="..\CocoStudio\Armature\animation\CCProcessBase.cpp" />
<ClCompile Include="..\CocoStudio\Armature\animation\CCTween.cpp" /> <ClCompile Include="..\CocoStudio\Armature\animation\CCTween.cpp" />
@ -141,10 +146,6 @@
<ClCompile Include="..\CocoStudio\Components\CCComController.cpp" /> <ClCompile Include="..\CocoStudio\Components\CCComController.cpp" />
<ClCompile Include="..\CocoStudio\Components\CCComRender.cpp" /> <ClCompile Include="..\CocoStudio\Components\CCComRender.cpp" />
<ClCompile Include="..\CocoStudio\Components\CCInputDelegate.cpp" /> <ClCompile Include="..\CocoStudio\Components\CCInputDelegate.cpp" />
<ClCompile Include="..\CocoStudio\GUI\Action\UIAction.cpp" />
<ClCompile Include="..\CocoStudio\GUI\Action\UIActionFrame.cpp" />
<ClCompile Include="..\CocoStudio\GUI\Action\UIActionManager.cpp" />
<ClCompile Include="..\CocoStudio\GUI\Action\UIActionNode.cpp" />
<ClCompile Include="..\CocoStudio\GUI\BaseClasses\UIRootWidget.cpp" /> <ClCompile Include="..\CocoStudio\GUI\BaseClasses\UIRootWidget.cpp" />
<ClCompile Include="..\CocoStudio\GUI\BaseClasses\UIWidget.cpp" /> <ClCompile Include="..\CocoStudio\GUI\BaseClasses\UIWidget.cpp" />
<ClCompile Include="..\CocoStudio\GUI\Layouts\Layout.cpp" /> <ClCompile Include="..\CocoStudio\GUI\Layouts\Layout.cpp" />
@ -251,6 +252,11 @@
<ClInclude Include="..\CCBReader\CCScale9SpriteLoader.h" /> <ClInclude Include="..\CCBReader\CCScale9SpriteLoader.h" />
<ClInclude Include="..\CCBReader\CCScrollViewLoader.h" /> <ClInclude Include="..\CCBReader\CCScrollViewLoader.h" />
<ClInclude Include="..\CCBReader\CCSpriteLoader.h" /> <ClInclude Include="..\CCBReader\CCSpriteLoader.h" />
<ClInclude Include="..\CocoStudio\Action\CCActionFrame.h" />
<ClInclude Include="..\CocoStudio\Action\CCActionFrameEasing.h" />
<ClInclude Include="..\CocoStudio\Action\CCActionManagerEx.h" />
<ClInclude Include="..\CocoStudio\Action\CCActionNode.h" />
<ClInclude Include="..\CocoStudio\Action\CCActionObject.h" />
<ClInclude Include="..\CocoStudio\Armature\animation\CCArmatureAnimation.h" /> <ClInclude Include="..\CocoStudio\Armature\animation\CCArmatureAnimation.h" />
<ClInclude Include="..\CocoStudio\Armature\animation\CCProcessBase.h" /> <ClInclude Include="..\CocoStudio\Armature\animation\CCProcessBase.h" />
<ClInclude Include="..\CocoStudio\Armature\animation\CCTween.h" /> <ClInclude Include="..\CocoStudio\Armature\animation\CCTween.h" />
@ -275,10 +281,6 @@
<ClInclude Include="..\CocoStudio\Components\CCComController.h" /> <ClInclude Include="..\CocoStudio\Components\CCComController.h" />
<ClInclude Include="..\CocoStudio\Components\CCComRender.h" /> <ClInclude Include="..\CocoStudio\Components\CCComRender.h" />
<ClInclude Include="..\CocoStudio\Components\CCInputDelegate.h" /> <ClInclude Include="..\CocoStudio\Components\CCInputDelegate.h" />
<ClInclude Include="..\CocoStudio\GUI\Action\UIAction.h" />
<ClInclude Include="..\CocoStudio\GUI\Action\UIActionFrame.h" />
<ClInclude Include="..\CocoStudio\GUI\Action\UIActionManager.h" />
<ClInclude Include="..\CocoStudio\GUI\Action\UIActionNode.h" />
<ClInclude Include="..\CocoStudio\GUI\BaseClasses\UIRootWidget.h" /> <ClInclude Include="..\CocoStudio\GUI\BaseClasses\UIRootWidget.h" />
<ClInclude Include="..\CocoStudio\GUI\BaseClasses\UIWidget.h" /> <ClInclude Include="..\CocoStudio\GUI\BaseClasses\UIWidget.h" />
<ClInclude Include="..\CocoStudio\GUI\Layouts\Layout.h" /> <ClInclude Include="..\CocoStudio\GUI\Layouts\Layout.h" />

View File

@ -67,9 +67,6 @@
<Filter Include="CocoStudio\GUI"> <Filter Include="CocoStudio\GUI">
<UniqueIdentifier>{9af947f9-84cd-4051-953e-67291da6528c}</UniqueIdentifier> <UniqueIdentifier>{9af947f9-84cd-4051-953e-67291da6528c}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="CocoStudio\GUI\Action">
<UniqueIdentifier>{6ad66a63-e7d6-4285-b30a-7ab70a299f7e}</UniqueIdentifier>
</Filter>
<Filter Include="CocoStudio\GUI\BaseClasses"> <Filter Include="CocoStudio\GUI\BaseClasses">
<UniqueIdentifier>{9713ac75-d9ba-494a-8dcf-03e30f8ee2b2}</UniqueIdentifier> <UniqueIdentifier>{9713ac75-d9ba-494a-8dcf-03e30f8ee2b2}</UniqueIdentifier>
</Filter> </Filter>
@ -85,6 +82,9 @@
<Filter Include="CocoStudio\GUI\UIWidgets\ScrollWidget"> <Filter Include="CocoStudio\GUI\UIWidgets\ScrollWidget">
<UniqueIdentifier>{1c44450b-d06e-4638-9f0c-1ff62e67ec84}</UniqueIdentifier> <UniqueIdentifier>{1c44450b-d06e-4638-9f0c-1ff62e67ec84}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="CocoStudio\Action">
<UniqueIdentifier>{bec3cdd7-e05b-42d3-97b1-86e26a528a2d}</UniqueIdentifier>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\GUI\CCScrollView\CCScrollView.cpp"> <ClCompile Include="..\GUI\CCScrollView\CCScrollView.cpp">
@ -427,18 +427,6 @@
<ClCompile Include="..\CocoStudio\GUI\UIWidgets\UICheckBox.cpp"> <ClCompile Include="..\CocoStudio\GUI\UIWidgets\UICheckBox.cpp">
<Filter>CocoStudio\GUI\UIWidgets</Filter> <Filter>CocoStudio\GUI\UIWidgets</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\CocoStudio\GUI\Action\UIAction.cpp">
<Filter>CocoStudio\GUI\Action</Filter>
</ClCompile>
<ClCompile Include="..\CocoStudio\GUI\Action\UIActionFrame.cpp">
<Filter>CocoStudio\GUI\Action</Filter>
</ClCompile>
<ClCompile Include="..\CocoStudio\GUI\Action\UIActionManager.cpp">
<Filter>CocoStudio\GUI\Action</Filter>
</ClCompile>
<ClCompile Include="..\CocoStudio\GUI\Action\UIActionNode.cpp">
<Filter>CocoStudio\GUI\Action</Filter>
</ClCompile>
<ClCompile Include="..\CocoStudio\GUI\BaseClasses\UIRootWidget.cpp"> <ClCompile Include="..\CocoStudio\GUI\BaseClasses\UIRootWidget.cpp">
<Filter>CocoStudio\GUI\BaseClasses</Filter> <Filter>CocoStudio\GUI\BaseClasses</Filter>
</ClCompile> </ClCompile>
@ -511,18 +499,6 @@
<ClCompile Include="..\CocoStudio\GUI\UIWidgets\UICheckBox.cpp"> <ClCompile Include="..\CocoStudio\GUI\UIWidgets\UICheckBox.cpp">
<Filter>CocoStudio\GUI\UIWidgets</Filter> <Filter>CocoStudio\GUI\UIWidgets</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\CocoStudio\GUI\Action\UIAction.cpp">
<Filter>CocoStudio\GUI\Action</Filter>
</ClCompile>
<ClCompile Include="..\CocoStudio\GUI\Action\UIActionFrame.cpp">
<Filter>CocoStudio\GUI\Action</Filter>
</ClCompile>
<ClCompile Include="..\CocoStudio\GUI\Action\UIActionManager.cpp">
<Filter>CocoStudio\GUI\Action</Filter>
</ClCompile>
<ClCompile Include="..\CocoStudio\GUI\Action\UIActionNode.cpp">
<Filter>CocoStudio\GUI\Action</Filter>
</ClCompile>
<ClCompile Include="..\CocoStudio\GUI\BaseClasses\UIRootWidget.cpp"> <ClCompile Include="..\CocoStudio\GUI\BaseClasses\UIRootWidget.cpp">
<Filter>CocoStudio\GUI\BaseClasses</Filter> <Filter>CocoStudio\GUI\BaseClasses</Filter>
</ClCompile> </ClCompile>
@ -556,6 +532,21 @@
<ClCompile Include="..\CocoStudio\Reader\CCSGUIReader.cpp"> <ClCompile Include="..\CocoStudio\Reader\CCSGUIReader.cpp">
<Filter>CocoStudio\Reader</Filter> <Filter>CocoStudio\Reader</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\CocoStudio\Action\CCActionFrame.cpp">
<Filter>CocoStudio\Action</Filter>
</ClCompile>
<ClCompile Include="..\CocoStudio\Action\CCActionManagerEx.cpp">
<Filter>CocoStudio\Action</Filter>
</ClCompile>
<ClCompile Include="..\CocoStudio\Action\CCActionNode.cpp">
<Filter>CocoStudio\Action</Filter>
</ClCompile>
<ClCompile Include="..\CocoStudio\Action\CCActionObject.cpp">
<Filter>CocoStudio\Action</Filter>
</ClCompile>
<ClCompile Include="..\CocoStudio\Action\CCActionFrameEasing.cpp">
<Filter>CocoStudio\Action</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\GUI\CCScrollView\CCScrollView.h"> <ClInclude Include="..\GUI\CCScrollView\CCScrollView.h">
@ -866,9 +857,6 @@
<ClInclude Include="..\CocoStudio\Armature\CCBone.h"> <ClInclude Include="..\CocoStudio\Armature\CCBone.h">
<Filter>CocoStudio\Armature</Filter> <Filter>CocoStudio\Armature</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\CocoStudio\Armature\external_tool\GLES-Render.h">
<Filter>CocoStudio\Armature\external_tool</Filter>
</ClInclude>
<ClInclude Include="..\CocoStudio\Json\CSContentJsonDictionary.h"> <ClInclude Include="..\CocoStudio\Json\CSContentJsonDictionary.h">
<Filter>CocoStudio\Json</Filter> <Filter>CocoStudio\Json</Filter>
</ClInclude> </ClInclude>
@ -953,18 +941,6 @@
<ClInclude Include="..\CocoStudio\GUI\UIWidgets\UIButton.h"> <ClInclude Include="..\CocoStudio\GUI\UIWidgets\UIButton.h">
<Filter>CocoStudio\GUI\UIWidgets</Filter> <Filter>CocoStudio\GUI\UIWidgets</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\CocoStudio\GUI\Action\UIAction.h">
<Filter>CocoStudio\GUI\Action</Filter>
</ClInclude>
<ClInclude Include="..\CocoStudio\GUI\Action\UIActionFrame.h">
<Filter>CocoStudio\GUI\Action</Filter>
</ClInclude>
<ClInclude Include="..\CocoStudio\GUI\Action\UIActionManager.h">
<Filter>CocoStudio\GUI\Action</Filter>
</ClInclude>
<ClInclude Include="..\CocoStudio\GUI\Action\UIActionNode.h">
<Filter>CocoStudio\GUI\Action</Filter>
</ClInclude>
<ClInclude Include="..\CocoStudio\GUI\BaseClasses\UIRootWidget.h"> <ClInclude Include="..\CocoStudio\GUI\BaseClasses\UIRootWidget.h">
<Filter>CocoStudio\GUI\BaseClasses</Filter> <Filter>CocoStudio\GUI\BaseClasses</Filter>
</ClInclude> </ClInclude>
@ -998,6 +974,21 @@
<ClInclude Include="..\CocoStudio\Reader\CCSGUIReader.h"> <ClInclude Include="..\CocoStudio\Reader\CCSGUIReader.h">
<Filter>CocoStudio\Reader</Filter> <Filter>CocoStudio\Reader</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\CocoStudio\Action\CCActionFrame.h">
<Filter>CocoStudio\Action</Filter>
</ClInclude>
<ClInclude Include="..\CocoStudio\Action\CCActionFrameEasing.h">
<Filter>CocoStudio\Action</Filter>
</ClInclude>
<ClInclude Include="..\CocoStudio\Action\CCActionManagerEx.h">
<Filter>CocoStudio\Action</Filter>
</ClInclude>
<ClInclude Include="..\CocoStudio\Action\CCActionNode.h">
<Filter>CocoStudio\Action</Filter>
</ClInclude>
<ClInclude Include="..\CocoStudio\Action\CCActionObject.h">
<Filter>CocoStudio\Action</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\CocoStudio\Json\lib_json\json_internalarray.inl"> <None Include="..\CocoStudio\Json\lib_json\json_internalarray.inl">

View File

@ -18,7 +18,7 @@ CocosGUITestScene::CocosGUITestScene(bool bPortrait)
CocosGUITestScene::~CocosGUITestScene() CocosGUITestScene::~CocosGUITestScene()
{ {
cocos2d::extension::SceneReader::getInstance()->purgeSceneReader(); cocos2d::extension::SceneReader::getInstance()->purgeSceneReader();
cocos2d::extension::UIActionManager::purgeUIActionManager(); cocos2d::extension::ActionManagerEx::purgeActionManager();
cocos2d::extension::UIHelper::purgeUIHelper(); cocos2d::extension::UIHelper::purgeUIHelper();
} }

View File

@ -8,9 +8,9 @@ using namespace cocos2d::extension;
SceneEditorTestLayer::~SceneEditorTestLayer() SceneEditorTestLayer::~SceneEditorTestLayer()
{ {
armature::ArmatureDataManager::purge(); armature::ArmatureDataManager::getInstance()->purge();
SceneReader::getInstance()->purgeSceneReader(); SceneReader::getInstance()->purgeSceneReader();
cocos2d::extension::UIActionManager::shareManager()->purgeUIActionManager(); cocos2d::extension::ActionManagerEx::shareManager()->purgeActionManager();
cocos2d::extension::UIHelper::instance()->purgeUIHelper(); cocos2d::extension::UIHelper::instance()->purgeUIHelper();
} }
@ -77,7 +77,7 @@ cocos2d::Node* SceneEditorTestLayer::createGameScene()
pNode->addChild(menuBack); pNode->addChild(menuBack);
//ui action //ui action
cocos2d::extension::UIActionManager::shareManager()->PlayActionByName("startMenu_1.json","Animation1"); cocos2d::extension::ActionManagerEx::shareManager()->playActionByName("startMenu_1.json","Animation1");
return pNode; return pNode;
} }

@ -1 +1 @@
Subproject commit 022292761c6a9d056e25cc6e844430650208513f Subproject commit 6d8e58221b9753981e2ee65738d8b93671835b28