Armature position change after init

cocos2dx 3.3, Animation is exported by cocostudio 1.5

Armature* a = Armature::create("BXTX");
addChild(a);
a->setPosition(Vec2(Director::getInstance()->getWinSize().width * 0.5f, Director::sharedDirector()->getWinSize().height * 0.5f));
a->getAnimation()->playWithIndex(0);

the animation show up at some other position then move to the specified position. The “some other position” will change if I set ‘a’ to different positions. After it move to specified position, it works with no problem, even I change its position again (runtime).

I aslo set setMovementEventCallFunc:

void f(Armature *armature, MovementEventType movementType, const std::string& movementID)
{
	std::cout<<armature->getPositionX()<<armature->getPositionY()<<std::endl;
}
a->getAnimation()->setMovementEventCallFunc(std::bind(f, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));

When f gets called, the armature position is the specified position. But I still see the movement of the animation, after it gets specified position, f gets called. It seems the movement is a part of init. Is this a bug?

But no all animation exported by cocostudio has this problem, I compare their ExportJson file, it seems OK.
Those problematic animation is OK with cocos2dx 3.1

Did anyone had this problem?