3D sample里面的底层应该跟最新版本3.7的有些出入
其中里面用了这个函数
_moveAction->reverse()
```
声明如下
class Animate3DTest : public Sprite3DTestDemo
{
public:
CREATE_FUNC(Animate3DTest);
Animate3DTest();
~Animate3DTest();
virtual std::string title() const override;
virtual std::string subtitle() const override;
void onTouchesEnded(const std::vector& touches, Event* event);
virtual void update(float dt) override;
protected:
void addSprite3D();
enum class State
{
SWIMMING,
SWIMMING_TO_HURT,
HURT,
HURT_TO_SWIMMING,
};
void reachEndCallBack();
void renewCallBack();
cocos2d::Sprite3D* _sprite;
cocos2d::Action* _swim;
cocos2d::Animate3D* _hurt;
float _elapseTransTime;
State _state;
MoveTo* _moveAction;
};
void Animate3DTest::reachEndCallBack()
{
_sprite->stopActionByTag(100);
auto inverse = (MoveTo*)_moveAction->reverse(); //请看这里就是调用的地方如果您用了VS,请选中reverse() F12过去
inverse->retain();
_moveAction->release();
_moveAction = inverse;
auto rot = RotateBy::create(1.f, Vec3(0.f, 180.f, 0.f));
auto seq = Sequence::create(rot, _moveAction, CallFunc::create(CC_CALLBACK_0(Animate3DTest::reachEndCallBack, this)), nullptr);
seq->setTag(100);
_sprite->runAction(seq);
}
//F12之后转到这里
MoveBy* MoveBy::reverse() const
{
return MoveBy::create(_duration, -_positionDelta);
}
```
再请看一下3.7中MoveTo的定义
class CC_DLL MoveTo : public MoveBy
{
public:
/**
* Creates the action.
* @param duration Duration time, in seconds.
* @param position The destination position in 2d.
* @return An autoreleased MoveTo object.
*/
static MoveTo* create(float duration, const Vec2& position);
/**
* Creates the action.
* @param duration Duration time, in seconds.
* @param position The destination position in 3d.
* @return An autoreleased MoveTo object.
*/
static MoveTo* create(float duration, const Vec3& position);
//
// Overrides
//
virtual MoveTo* clone() const override;
virtual MoveTo* reverse() const override;
virtual void startWithTarget(Node *target) override;
CC_CONSTRUCTOR_ACCESS:
MoveTo() {}
virtual ~MoveTo() {}
}
MoveTo* MoveTo::reverse() const
{
CCASSERT(false, "reverse() not supported in MoveTo");
return nullptr;
}
```
最新版的更新文件我没有详细查阅,但是请使用最新版的同学能够注意到这个坑,尽量节省开发时间...