mirror of https://github.com/axmolengine/axmol.git
Rest CCFrame.
This commit is contained in:
parent
80ad7bbee8
commit
e86071e77e
|
@ -38,17 +38,14 @@ NS_TIMELINE_BEGIN
|
|||
Frame::Frame()
|
||||
: _frameIndex(0)
|
||||
, _tween(true)
|
||||
, _tweenType(TweenType::Linear)
|
||||
, _enterWhenPassed(false)
|
||||
, _timeline(nullptr)
|
||||
, _node(nullptr)
|
||||
{
|
||||
_easingParam.clear();
|
||||
}
|
||||
|
||||
Frame::~Frame()
|
||||
{
|
||||
_easingParam.clear();
|
||||
}
|
||||
|
||||
void Frame::emitEvent()
|
||||
|
@ -63,37 +60,6 @@ void Frame::cloneProperty(Frame* frame)
|
|||
{
|
||||
_frameIndex = frame->getFrameIndex();
|
||||
_tween = frame->isTween();
|
||||
|
||||
_tweenType = frame->getTweenType();
|
||||
setEasingParams(frame->getEasingParams());
|
||||
}
|
||||
|
||||
void Frame::apply(float percent)
|
||||
{
|
||||
if (!_tween)
|
||||
return;
|
||||
|
||||
float tweenpercent = percent;
|
||||
if ( _tweenType != tweenfunc::TWEEN_EASING_MAX && _tweenType != tweenfunc::Linear)
|
||||
{
|
||||
tweenpercent = tweenPercent(tweenpercent);
|
||||
}
|
||||
onApply(tweenpercent);
|
||||
}
|
||||
|
||||
float Frame::tweenPercent(float percent)
|
||||
{
|
||||
return tweenfunc::tweenTo(percent, _tweenType, _easingParam.data());
|
||||
}
|
||||
|
||||
void Frame::setEasingParams(const std::vector<float>& easingParams)
|
||||
{
|
||||
_easingParam.assign(easingParams.begin(), easingParams.end());
|
||||
}
|
||||
|
||||
const std::vector<float>& Frame::getEasingParams() const
|
||||
{
|
||||
return _easingParam;
|
||||
}
|
||||
|
||||
|
||||
|
@ -117,7 +83,10 @@ VisibleFrame::VisibleFrame()
|
|||
|
||||
void VisibleFrame::onEnter(Frame *nextFrame, int currentFrameIndex)
|
||||
{
|
||||
_node->setVisible(_visible);
|
||||
if (_node)
|
||||
{
|
||||
_node->setVisible(_visible);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -204,6 +173,11 @@ RotationFrame::RotationFrame()
|
|||
|
||||
void RotationFrame::onEnter(Frame *nextFrame, int currentFrameIndex)
|
||||
{
|
||||
if (_node == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_node->setRotation(_rotation);
|
||||
|
||||
if(_tween)
|
||||
|
@ -212,9 +186,9 @@ void RotationFrame::onEnter(Frame *nextFrame, int currentFrameIndex)
|
|||
}
|
||||
}
|
||||
|
||||
void RotationFrame::onApply(float percent)
|
||||
void RotationFrame::apply(float percent)
|
||||
{
|
||||
if (_betwennRotation != 0)
|
||||
if (_node && _tween && _betwennRotation != 0)
|
||||
{
|
||||
float rotation = _rotation + percent * _betwennRotation;
|
||||
_node->setRotation(rotation);
|
||||
|
@ -254,6 +228,11 @@ SkewFrame::SkewFrame()
|
|||
|
||||
void SkewFrame::onEnter(Frame *nextFrame, int currentFrameIndex)
|
||||
{
|
||||
if (_node == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_node->setSkewX(_skewX);
|
||||
_node->setSkewY(_skewY);
|
||||
|
||||
|
@ -264,9 +243,9 @@ void SkewFrame::onEnter(Frame *nextFrame, int currentFrameIndex)
|
|||
}
|
||||
}
|
||||
|
||||
void SkewFrame::onApply(float percent)
|
||||
void SkewFrame::apply(float percent)
|
||||
{
|
||||
if (_betweenSkewX != 0 || _betweenSkewY != 0)
|
||||
if (_node && _tween && (_betweenSkewX != 0 || _betweenSkewY != 0))
|
||||
{
|
||||
float skewx = _skewX + percent * _betweenSkewX;
|
||||
float skewy = _skewY + percent * _betweenSkewY;
|
||||
|
@ -309,6 +288,11 @@ RotationSkewFrame::RotationSkewFrame()
|
|||
|
||||
void RotationSkewFrame::onEnter(Frame *nextFrame, int currentFrameIndex)
|
||||
{
|
||||
if (_node == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_node->setRotationSkewX(_skewX);
|
||||
_node->setRotationSkewY(_skewY);
|
||||
|
||||
|
@ -319,9 +303,9 @@ void RotationSkewFrame::onEnter(Frame *nextFrame, int currentFrameIndex)
|
|||
}
|
||||
}
|
||||
|
||||
void RotationSkewFrame::onApply(float percent)
|
||||
void RotationSkewFrame::apply(float percent)
|
||||
{
|
||||
if (_betweenSkewX != 0 || _betweenSkewY != 0)
|
||||
if (_node && _tween && (_betweenSkewX != 0 || _betweenSkewY != 0))
|
||||
{
|
||||
float skewx = _skewX + percent * _betweenSkewX;
|
||||
float skewy = _skewY + percent * _betweenSkewY;
|
||||
|
@ -363,6 +347,11 @@ PositionFrame::PositionFrame()
|
|||
|
||||
void PositionFrame::onEnter(Frame *nextFrame, int currentFrameIndex)
|
||||
{
|
||||
if (_node == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_node->setPosition(_position);
|
||||
|
||||
if(_tween)
|
||||
|
@ -372,9 +361,9 @@ void PositionFrame::onEnter(Frame *nextFrame, int currentFrameIndex)
|
|||
}
|
||||
}
|
||||
|
||||
void PositionFrame::onApply(float percent)
|
||||
void PositionFrame::apply(float percent)
|
||||
{
|
||||
if (_betweenX != 0 || _betweenY != 0)
|
||||
if (_node && _tween && (_betweenX != 0 || _betweenY != 0))
|
||||
{
|
||||
Point p;
|
||||
p.x = _position.x + _betweenX * percent;
|
||||
|
@ -416,6 +405,11 @@ ScaleFrame::ScaleFrame()
|
|||
|
||||
void ScaleFrame::onEnter(Frame *nextFrame, int currentFrameIndex)
|
||||
{
|
||||
if (_node == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_node->setScaleX(_scaleX);
|
||||
_node->setScaleY(_scaleY);
|
||||
|
||||
|
@ -426,9 +420,9 @@ void ScaleFrame::onEnter(Frame *nextFrame, int currentFrameIndex)
|
|||
}
|
||||
}
|
||||
|
||||
void ScaleFrame::onApply(float percent)
|
||||
void ScaleFrame::apply(float percent)
|
||||
{
|
||||
if (_betweenScaleX != 0 || _betweenScaleY != 0)
|
||||
if (_node && _tween && (_betweenScaleX != 0 || _betweenScaleY != 0))
|
||||
{
|
||||
float scaleX = _scaleX + _betweenScaleX * percent;
|
||||
float scaleY = _scaleY + _betweenScaleY * percent;
|
||||
|
@ -470,6 +464,11 @@ AnchorPointFrame::AnchorPointFrame()
|
|||
|
||||
void AnchorPointFrame::onEnter(Frame *nextFrame, int currentFrameIndex)
|
||||
{
|
||||
if (_node == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_node->setAnchorPoint(_anchorPoint);
|
||||
}
|
||||
|
||||
|
@ -506,14 +505,19 @@ InnerActionFrame::InnerActionFrame()
|
|||
, _startFrameIndex(0)
|
||||
, _endFrameIndex(0)
|
||||
, _singleFrameIndex(0)
|
||||
, _enterWithName(false)
|
||||
, _animationName("")
|
||||
, _enterWithName(false)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void InnerActionFrame::onEnter(Frame *nextFrame, int currentFrameIndex)
|
||||
{
|
||||
if (_node == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
auto innerActiontimeline = static_cast<ActionTimeline*>(_node->getActionByTag(_node->getTag()));
|
||||
if( nullptr == innerActiontimeline)
|
||||
return;
|
||||
|
@ -629,20 +633,20 @@ ColorFrame* ColorFrame::create()
|
|||
}
|
||||
|
||||
ColorFrame::ColorFrame()
|
||||
: _alpha(255)
|
||||
, _color(Color3B(255, 255, 255))
|
||||
: _color(Color3B(255, 255, 255))
|
||||
{
|
||||
}
|
||||
|
||||
void ColorFrame::onEnter(Frame *nextFrame, int currentFrameIndex)
|
||||
{
|
||||
_node->setOpacity(_alpha);
|
||||
if (_node == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_node->setColor(_color);
|
||||
|
||||
if(_tween)
|
||||
{
|
||||
_betweenAlpha = static_cast<ColorFrame*>(nextFrame)->_alpha - _alpha;
|
||||
|
||||
const Color3B& color = static_cast<ColorFrame*>(nextFrame)->_color;
|
||||
_betweenRed = color.r - _color.r;
|
||||
_betweenGreen = color.g - _color.g;
|
||||
|
@ -650,18 +654,15 @@ void ColorFrame::onEnter(Frame *nextFrame, int currentFrameIndex)
|
|||
}
|
||||
}
|
||||
|
||||
void ColorFrame::onApply(float percent)
|
||||
void ColorFrame::apply(float percent)
|
||||
{
|
||||
if (_betweenAlpha !=0 || _betweenRed != 0 || _betweenGreen != 0 || _betweenBlue != 0)
|
||||
if (_node && _tween && (_betweenRed != 0 || _betweenGreen != 0 || _betweenBlue != 0))
|
||||
{
|
||||
GLubyte alpha = _alpha + _betweenAlpha * percent;
|
||||
|
||||
Color3B color;
|
||||
color.r = _color.r+ _betweenRed * percent;
|
||||
color.g = _color.g+ _betweenGreen * percent;
|
||||
color.b = _color.b+ _betweenBlue * percent;
|
||||
|
||||
_node->setOpacity(alpha);
|
||||
_node->setColor(color);
|
||||
}
|
||||
}
|
||||
|
@ -669,7 +670,6 @@ void ColorFrame::onApply(float percent)
|
|||
Frame* ColorFrame::clone()
|
||||
{
|
||||
ColorFrame* frame = ColorFrame::create();
|
||||
frame->setAlpha(_alpha);
|
||||
frame->setColor(_color);
|
||||
|
||||
frame->cloneProperty(this);
|
||||
|
@ -697,6 +697,11 @@ AlphaFrame::AlphaFrame()
|
|||
|
||||
void AlphaFrame::onEnter(Frame *nextFrame, int currentFrameIndex)
|
||||
{
|
||||
if (_node == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_node->setOpacity(_alpha);
|
||||
|
||||
if (_tween)
|
||||
|
@ -705,10 +710,13 @@ void AlphaFrame::onEnter(Frame *nextFrame, int currentFrameIndex)
|
|||
}
|
||||
}
|
||||
|
||||
void AlphaFrame::onApply(float percent)
|
||||
void AlphaFrame::apply(float percent)
|
||||
{
|
||||
GLubyte alpha = _alpha + _betweenAlpha * percent;
|
||||
_node->setOpacity(alpha);
|
||||
if (_node && _tween)
|
||||
{
|
||||
GLubyte alpha = _alpha + _betweenAlpha * percent;
|
||||
_node->setOpacity(alpha);
|
||||
}
|
||||
}
|
||||
|
||||
Frame* AlphaFrame::clone()
|
||||
|
|
|
@ -30,11 +30,9 @@ THE SOFTWARE.
|
|||
#include "base/CCVector.h"
|
||||
#include "2d/CCNode.h"
|
||||
#include "2d/CCSprite.h"
|
||||
#include "2d/CCTweenFunction.h"
|
||||
#include "CCTimelineMacro.h"
|
||||
#include "cocostudio/CocosStudioExport.h"
|
||||
|
||||
using namespace cocos2d::tweenfunc;
|
||||
|
||||
NS_TIMELINE_BEGIN
|
||||
|
||||
|
@ -57,26 +55,15 @@ public:
|
|||
virtual void setTween(bool tween) { _tween = tween; }
|
||||
virtual bool isTween() const { return _tween; }
|
||||
|
||||
virtual void setTweenType(const TweenType& tweenType) { _tweenType = tweenType; }
|
||||
virtual TweenType getTweenType() const { return _tweenType; }
|
||||
|
||||
// !to make easing with params, need setTweenType(TweenType::CUSTOM_EASING)
|
||||
virtual void setEasingParams(const std::vector<float>& easingParams);
|
||||
virtual const std::vector<float>& getEasingParams() const;
|
||||
|
||||
virtual bool isEnterWhenPassed() { return _enterWhenPassed; }
|
||||
|
||||
virtual void onEnter(Frame* nextFrame, int currentFrameIndex) = 0;
|
||||
virtual void apply(float percent);
|
||||
virtual void apply(float percent) {}
|
||||
|
||||
virtual Frame* clone() = 0;
|
||||
protected:
|
||||
Frame();
|
||||
virtual ~Frame();
|
||||
virtual void onApply(float percent){}
|
||||
|
||||
//update percent depends _tweenType, and return the Calculated percent
|
||||
virtual float tweenPercent(float percent);
|
||||
|
||||
virtual void emitEvent();
|
||||
virtual void cloneProperty(Frame* frame);
|
||||
|
@ -84,15 +71,13 @@ protected:
|
|||
|
||||
unsigned int _frameIndex;
|
||||
bool _tween;
|
||||
TweenType _tweenType;
|
||||
std::vector<float> _easingParam;
|
||||
bool _enterWhenPassed;
|
||||
|
||||
Timeline* _timeline;
|
||||
cocos2d::Node* _node;
|
||||
|
||||
};
|
||||
|
||||
|
||||
class CC_STUDIO_DLL VisibleFrame : public Frame
|
||||
{
|
||||
public:
|
||||
|
@ -118,7 +103,7 @@ public:
|
|||
|
||||
TextureFrame();
|
||||
|
||||
virtual void setNode(cocos2d::Node* node);
|
||||
virtual void setNode(cocos2d::Node* node) override;
|
||||
|
||||
virtual void onEnter(Frame *nextFrame, int currentFrameIndex) override;
|
||||
virtual Frame* clone() override;
|
||||
|
@ -139,14 +124,13 @@ public:
|
|||
RotationFrame();
|
||||
|
||||
virtual void onEnter(Frame *nextFrame, int currentFrameIndex) override;
|
||||
virtual void apply(float percent) override;
|
||||
virtual Frame* clone() override;
|
||||
|
||||
inline void setRotation(float rotation) { _rotation = rotation; }
|
||||
inline float getRotation() const { return _rotation; }
|
||||
|
||||
protected:
|
||||
virtual void onApply(float percent) override;
|
||||
|
||||
float _rotation;
|
||||
float _betwennRotation;
|
||||
};
|
||||
|
@ -159,6 +143,7 @@ public:
|
|||
SkewFrame();
|
||||
|
||||
virtual void onEnter(Frame *nextFrame, int currentFrameIndex) override;
|
||||
virtual void apply(float percent) override;
|
||||
virtual Frame* clone() override;
|
||||
|
||||
inline void setSkewX(float skewx) { _skewX = skewx; }
|
||||
|
@ -168,8 +153,6 @@ public:
|
|||
inline float getSkewY() const { return _skewY; }
|
||||
|
||||
protected:
|
||||
virtual void onApply(float percent) override;
|
||||
|
||||
float _skewX;
|
||||
float _skewY;
|
||||
float _betweenSkewX;
|
||||
|
@ -185,10 +168,8 @@ public:
|
|||
RotationSkewFrame();
|
||||
|
||||
virtual void onEnter(Frame *nextFrame, int currentFrameIndex) override;
|
||||
virtual void apply(float percent) override;
|
||||
virtual Frame* clone() override;
|
||||
|
||||
protected:
|
||||
virtual void onApply(float percent) override;
|
||||
};
|
||||
|
||||
|
||||
|
@ -200,6 +181,7 @@ public:
|
|||
PositionFrame();
|
||||
|
||||
virtual void onEnter(Frame *nextFrame, int currentFrameIndex) override;
|
||||
virtual void apply(float percent) override;
|
||||
virtual Frame* clone() override;
|
||||
|
||||
inline void setPosition(const cocos2d::Point& position) { _position = position; }
|
||||
|
@ -211,8 +193,6 @@ public:
|
|||
inline float getX() const { return _position.x; }
|
||||
inline float getY() const { return _position.y; }
|
||||
protected:
|
||||
virtual void onApply(float percent) override;
|
||||
|
||||
cocos2d::Point _position;
|
||||
float _betweenX;
|
||||
float _betweenY;
|
||||
|
@ -227,6 +207,7 @@ public:
|
|||
ScaleFrame();
|
||||
|
||||
virtual void onEnter(Frame *nextFrame, int currentFrameIndex) override;
|
||||
virtual void apply(float percent) override;
|
||||
virtual Frame* clone() override;
|
||||
|
||||
inline void setScale(float scale) { _scaleX = scale; _scaleY = scale; }
|
||||
|
@ -238,8 +219,6 @@ public:
|
|||
inline float getScaleY() const { return _scaleY; }
|
||||
|
||||
protected:
|
||||
virtual void onApply(float percent) override;
|
||||
|
||||
float _scaleX;
|
||||
float _scaleY;
|
||||
float _betweenScaleX;
|
||||
|
@ -317,21 +296,20 @@ public:
|
|||
ColorFrame();
|
||||
|
||||
virtual void onEnter(Frame *nextFrame, int currentFrameIndex) override;
|
||||
virtual void apply(float percent) override;
|
||||
virtual Frame* clone() override;
|
||||
|
||||
inline void setAlpha(GLubyte alpha) { _alpha = alpha; }
|
||||
inline GLubyte getAlpha() const { return _alpha; }
|
||||
/** @deprecated Use method setAlpha() and getAlpha() of AlphaFrame instead */
|
||||
CC_DEPRECATED_ATTRIBUTE inline void setAlpha(GLubyte alpha) { _alpha = alpha; }
|
||||
CC_DEPRECATED_ATTRIBUTE inline GLubyte getAlpha() const { return _alpha; }
|
||||
|
||||
inline void setColor(const cocos2d::Color3B& color) { _color = color; }
|
||||
inline cocos2d::Color3B getColor() const { return _color; }
|
||||
|
||||
protected:
|
||||
virtual void onApply(float percent) override;
|
||||
|
||||
GLubyte _alpha;
|
||||
cocos2d::Color3B _color;
|
||||
|
||||
int _betweenAlpha;
|
||||
int _betweenRed;
|
||||
int _betweenGreen;
|
||||
int _betweenBlue;
|
||||
|
@ -344,14 +322,13 @@ public:
|
|||
AlphaFrame();
|
||||
|
||||
virtual void onEnter(Frame *nextFrame, int currentFrameIndex) override;
|
||||
virtual void apply(float percent) override;
|
||||
virtual Frame* clone() override;
|
||||
|
||||
inline void setAlpha(GLubyte alpha) { _alpha = alpha; }
|
||||
inline GLubyte getAlpha() const { return _alpha; }
|
||||
|
||||
protected:
|
||||
virtual void onApply(float percent) override;
|
||||
|
||||
GLubyte _alpha;
|
||||
int _betweenAlpha;
|
||||
};
|
||||
|
@ -364,7 +341,7 @@ public:
|
|||
|
||||
EventFrame();
|
||||
|
||||
virtual void setNode(cocos2d::Node* node);
|
||||
virtual void setNode(cocos2d::Node* node) override;
|
||||
|
||||
virtual void onEnter(Frame *nextFrame, int currentFrameIndex) override;
|
||||
virtual Frame* clone() override;
|
||||
|
|
Loading…
Reference in New Issue