2022-02-24 18:51:36 +08:00
|
|
|
/****************************************************************************
|
2019-11-24 23:15:56 +08:00
|
|
|
Copyright (c) 2013-2017 Chukong Technologies Inc.
|
2019-11-23 20:27:39 +08:00
|
|
|
|
2022-07-10 09:47:41 +08:00
|
|
|
https://axis-project.github.io/
|
2019-11-23 20:27:39 +08:00
|
|
|
|
|
|
|
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__
|
|
|
|
|
2021-10-23 23:27:14 +08:00
|
|
|
#include "math/CCMath.h"
|
2019-11-23 20:27:39 +08:00
|
|
|
#include "2d/CCActionInterval.h"
|
2020-10-21 10:12:00 +08:00
|
|
|
#include "CocosStudioExport.h"
|
2019-11-23 20:27:39 +08:00
|
|
|
|
2021-12-25 10:04:45 +08:00
|
|
|
namespace cocostudio
|
|
|
|
{
|
|
|
|
|
2019-11-23 20:27:39 +08:00
|
|
|
enum FrameType
|
|
|
|
{
|
|
|
|
kKeyframeMove = 0,
|
|
|
|
kKeyframeScale,
|
|
|
|
kKeyframeRotate,
|
|
|
|
kKeyframeTint,
|
|
|
|
kKeyframeFade,
|
|
|
|
kKeyframeMax
|
|
|
|
};
|
|
|
|
|
|
|
|
enum class FrameEaseType
|
|
|
|
{
|
|
|
|
Custom = -1,
|
|
|
|
|
|
|
|
LINERAR = 0,
|
|
|
|
|
|
|
|
SINE_EASEIN,
|
|
|
|
SINE_EASEOUT,
|
|
|
|
SINE_EASEINOUT,
|
|
|
|
|
|
|
|
QUAD_EASEIN,
|
|
|
|
QUAD_EASEOUT,
|
|
|
|
QUAD_EASEINOUT,
|
|
|
|
|
|
|
|
CUBIC_EASEIN,
|
|
|
|
CUBIC_EASEOUT,
|
|
|
|
CUBIC_EASEINOUT,
|
|
|
|
|
|
|
|
QUART_EASEIN,
|
|
|
|
QUART_EASEOUT,
|
|
|
|
QUART_EASEINOUT,
|
|
|
|
|
|
|
|
QUINT_EASEIN,
|
|
|
|
QUINT_EASEOUT,
|
|
|
|
QUINT_EASEINOUT,
|
|
|
|
|
|
|
|
EXPO_EASEIN,
|
|
|
|
EXPO_EASEOUT,
|
|
|
|
EXPO_EASEINOUT,
|
|
|
|
|
|
|
|
CIRC_EASEIN,
|
|
|
|
CIRC_EASEOUT,
|
|
|
|
CIRC_EASEINOUT,
|
|
|
|
|
|
|
|
ELASTIC_EASEIN,
|
|
|
|
ELASTIC_EASEOUT,
|
|
|
|
ELASTIC_EASEINOUT,
|
|
|
|
|
|
|
|
BACK_EASEIN,
|
|
|
|
BACK_EASEOUT,
|
|
|
|
BACK_EASEINOUT,
|
|
|
|
|
|
|
|
BOUNCE_EASEIN,
|
|
|
|
BOUNCE_EASEOUT,
|
|
|
|
BOUNCE_EASEINOUT,
|
|
|
|
|
|
|
|
TWEEN_EASING_MAX = 10000
|
|
|
|
};
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* @js NA
|
|
|
|
* @lua NA
|
|
|
|
*/
|
2022-07-11 17:50:21 +08:00
|
|
|
class CCS_DLL ActionFrame : public axis::Ref
|
2019-11-23 20:27:39 +08:00
|
|
|
{
|
|
|
|
|
|
|
|
public:
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Default constructor
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
ActionFrame();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Default destructor
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
virtual ~ActionFrame();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Changes the index of action frame
|
|
|
|
*
|
|
|
|
* @param index the index of action frame
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
void setFrameIndex(int index);
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the index of action frame
|
|
|
|
*
|
|
|
|
* @return the index of action frame
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
int getFrameIndex();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Changes the time of action frame
|
|
|
|
*
|
|
|
|
* @param fTime the time of action frame
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
void setFrameTime(float fTime);
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the time of action frame
|
|
|
|
*
|
|
|
|
* @return fTime the time of action frame
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
float getFrameTime();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Changes the type of action frame
|
|
|
|
*
|
|
|
|
* @param frameType the type of action frame
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
void setFrameType(int frameType);
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the type of action frame
|
|
|
|
*
|
|
|
|
* @return the type of action frame
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
int getFrameType();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Changes the easing type.
|
|
|
|
*
|
|
|
|
* @param easingType the easing type.
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
void setEasingType(int easingType);
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the easing type.
|
|
|
|
*
|
|
|
|
* @return the easing type.
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
int getEasingType();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the ActionInterval of ActionFrame.
|
|
|
|
*
|
|
|
|
* @param duration the duration time of ActionFrame
|
|
|
|
*
|
|
|
|
* @return ActionInterval
|
|
|
|
*/
|
2022-07-11 17:50:21 +08:00
|
|
|
virtual axis::ActionInterval* getAction(float duration);
|
2019-11-23 20:27:39 +08:00
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the ActionInterval of ActionFrame.
|
|
|
|
*
|
|
|
|
* @param duration the duration time of ActionFrame
|
|
|
|
*
|
|
|
|
* @param duration the source ActionFrame
|
|
|
|
*
|
|
|
|
* @return ActionInterval
|
|
|
|
*/
|
2022-07-11 17:50:21 +08:00
|
|
|
virtual axis::ActionInterval* getAction(float duration, ActionFrame* srcFrame);
|
2021-12-25 10:04:45 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
*Set the ActionInterval easing parameter.
|
|
|
|
*
|
|
|
|
*@param parameter the parameter for frame ease
|
|
|
|
*
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
virtual void setEasingParameter(std::vector<float>& parameter);
|
2021-12-25 10:04:45 +08:00
|
|
|
|
2019-11-23 20:27:39 +08:00
|
|
|
protected:
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the Easing Action of ActionFrame.
|
|
|
|
*
|
|
|
|
* @param action the duration time of ActionFrame
|
|
|
|
*
|
|
|
|
* @return ActionInterval
|
|
|
|
*/
|
2022-07-11 17:50:21 +08:00
|
|
|
virtual axis::ActionInterval* getEasingAction(axis::ActionInterval* action);
|
2021-12-25 10:04:45 +08:00
|
|
|
|
2019-11-23 20:27:39 +08:00
|
|
|
protected:
|
2021-12-25 10:04:45 +08:00
|
|
|
int _frameType;
|
2019-11-23 20:27:39 +08:00
|
|
|
int _frameIndex;
|
|
|
|
float _fTime;
|
|
|
|
FrameEaseType _easingType;
|
|
|
|
std::vector<float> _Parameter;
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* @js NA
|
|
|
|
* @lua NA
|
|
|
|
*/
|
|
|
|
class CCS_DLL ActionMoveFrame : public ActionFrame
|
2019-11-23 20:27:39 +08:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Default constructor
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
ActionMoveFrame();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Default destructor
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
virtual ~ActionMoveFrame();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Changes the move action position.
|
|
|
|
*
|
|
|
|
* @param the move action position.
|
|
|
|
*/
|
2022-07-11 17:50:21 +08:00
|
|
|
void setPosition(axis::Vec2 pos);
|
2019-11-23 20:27:39 +08:00
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the move action position.
|
|
|
|
*
|
|
|
|
* @return the move action position.
|
|
|
|
*/
|
2022-07-11 17:50:21 +08:00
|
|
|
axis::Vec2 getPosition();
|
2019-11-23 20:27:39 +08:00
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the ActionInterval of ActionFrame.
|
|
|
|
*
|
|
|
|
* @param duration the duration time of ActionFrame
|
|
|
|
*
|
|
|
|
* @return ActionInterval
|
|
|
|
*/
|
2022-07-11 17:50:21 +08:00
|
|
|
virtual axis::ActionInterval* getAction(float duration);
|
2021-12-25 10:04:45 +08:00
|
|
|
|
2019-11-23 20:27:39 +08:00
|
|
|
protected:
|
2022-07-11 17:50:21 +08:00
|
|
|
axis::Vec2 _position;
|
2019-11-23 20:27:39 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* @js NA
|
|
|
|
* @lua NA
|
|
|
|
*/
|
|
|
|
class CCS_DLL ActionScaleFrame : public ActionFrame
|
2019-11-23 20:27:39 +08:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Default constructor
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
ActionScaleFrame();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Default destructor
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
virtual ~ActionScaleFrame();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Changes the scale action scaleX.
|
|
|
|
*
|
|
|
|
* @param the scale action scaleX.
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
void setScaleX(float scaleX);
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the scale action scaleX.
|
|
|
|
*
|
|
|
|
* @return the scale action scaleX.
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
float getScaleX();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Changes the scale action scaleY.
|
|
|
|
*
|
|
|
|
* @param rotation the scale action scaleY.
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
void setScaleY(float scaleY);
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the scale action scaleY.
|
|
|
|
*
|
|
|
|
* @return the scale action scaleY.
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
float getScaleY();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the ActionInterval of ActionFrame.
|
|
|
|
*
|
|
|
|
* @param duration the duration time of ActionFrame
|
|
|
|
*
|
|
|
|
* @return ActionInterval
|
|
|
|
*/
|
2022-07-11 17:50:21 +08:00
|
|
|
virtual axis::ActionInterval* getAction(float duration);
|
2021-12-25 10:04:45 +08:00
|
|
|
|
2019-11-23 20:27:39 +08:00
|
|
|
protected:
|
|
|
|
float _scaleX;
|
|
|
|
float _scaleY;
|
|
|
|
};
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* @js NA
|
|
|
|
* @lua NA
|
|
|
|
*/
|
|
|
|
class CCS_DLL ActionRotationFrame : public ActionFrame
|
2019-11-23 20:27:39 +08:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Default constructor
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
ActionRotationFrame();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Default destructor
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
virtual ~ActionRotationFrame();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Changes rotate action rotation.
|
|
|
|
*
|
|
|
|
* @param rotation rotate action rotation.
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
void setRotation(float rotation);
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the rotate action rotation.
|
|
|
|
*
|
|
|
|
* @return the rotate action rotation.
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
float getRotation();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the ActionInterval of ActionFrame.
|
|
|
|
*
|
|
|
|
* @param duration the duration time of ActionFrame
|
|
|
|
*
|
|
|
|
* @return ActionInterval
|
|
|
|
*/
|
2022-07-11 17:50:21 +08:00
|
|
|
virtual axis::ActionInterval* getAction(float duration);
|
2019-11-23 20:27:39 +08:00
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the ActionInterval of ActionFrame.
|
|
|
|
*
|
|
|
|
* @param duration the duration time of ActionFrame
|
|
|
|
*
|
|
|
|
* @param duration the source ActionFrame
|
|
|
|
*
|
|
|
|
* @return ActionInterval
|
|
|
|
*/
|
2022-07-11 17:50:21 +08:00
|
|
|
virtual axis::ActionInterval* getAction(float duration, ActionFrame* srcFrame);
|
2021-12-25 10:04:45 +08:00
|
|
|
|
2019-11-23 20:27:39 +08:00
|
|
|
public:
|
|
|
|
float _rotation;
|
|
|
|
};
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* @js NA
|
|
|
|
* @lua NA
|
|
|
|
*/
|
|
|
|
class CCS_DLL ActionFadeFrame : public ActionFrame
|
2019-11-23 20:27:39 +08:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Default constructor
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
ActionFadeFrame();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Default destructor
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
virtual ~ActionFadeFrame();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Changes the fade action opacity.
|
|
|
|
*
|
|
|
|
* @param opacity the fade action opacity
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
void setOpacity(int opacity);
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the fade action opacity.
|
|
|
|
*
|
|
|
|
* @return the fade action opacity.
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
int getOpacity();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the ActionInterval of ActionFrame.
|
|
|
|
*
|
|
|
|
* @param duration the duration time of ActionFrame
|
|
|
|
*
|
|
|
|
* @return ActionInterval
|
|
|
|
*/
|
2022-07-11 17:50:21 +08:00
|
|
|
virtual axis::ActionInterval* getAction(float duration);
|
2021-12-25 10:04:45 +08:00
|
|
|
|
2019-11-23 20:27:39 +08:00
|
|
|
protected:
|
|
|
|
float _opacity;
|
|
|
|
};
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* @js NA
|
|
|
|
* @lua NA
|
|
|
|
*/
|
|
|
|
class CCS_DLL ActionTintFrame : public ActionFrame
|
2019-11-23 20:27:39 +08:00
|
|
|
{
|
|
|
|
|
|
|
|
public:
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Default constructor
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
ActionTintFrame();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Default destructor
|
|
|
|
*/
|
2019-11-23 20:27:39 +08:00
|
|
|
virtual ~ActionTintFrame();
|
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Changes the tint action color.
|
|
|
|
*
|
|
|
|
* @param ccolor the tint action color
|
|
|
|
*/
|
2022-07-11 17:50:21 +08:00
|
|
|
void setColor(axis::Color3B ccolor);
|
2019-11-23 20:27:39 +08:00
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the tint action color.
|
|
|
|
*
|
|
|
|
* @return the tint action color.
|
|
|
|
*/
|
2022-07-11 17:50:21 +08:00
|
|
|
axis::Color3B getColor();
|
2019-11-23 20:27:39 +08:00
|
|
|
|
|
|
|
/**
|
2021-12-25 10:04:45 +08:00
|
|
|
* Gets the ActionInterval of ActionFrame.
|
|
|
|
*
|
|
|
|
* @param duration the duration time of ActionFrame
|
|
|
|
*
|
|
|
|
* @return ActionInterval
|
|
|
|
*/
|
2022-07-11 17:50:21 +08:00
|
|
|
virtual axis::ActionInterval* getAction(float duration);
|
2021-12-25 10:04:45 +08:00
|
|
|
|
2019-11-23 20:27:39 +08:00
|
|
|
protected:
|
2022-07-11 17:50:21 +08:00
|
|
|
axis::Color3B _color;
|
2019-11-23 20:27:39 +08:00
|
|
|
};
|
|
|
|
|
2021-12-25 10:04:45 +08:00
|
|
|
} // namespace cocostudio
|
2019-11-23 20:27:39 +08:00
|
|
|
|
|
|
|
#endif
|