runAction not work, a child of CCSpriteBatchNode that inheritance from CCSprite

Hello, I am a beginner for using cocos2d-x and want to make a game by using cocos2d-x in android.
I meet a problem that “runAction” not work in the below code.
“PhysicsSprite” is inheritance from CCSprite.
And i add “PhysicsSprite” to the “CCSpriteBatchNode* Cat”
When i use something like “((PhysicsSprite**)XXX)>runAction;" , its not work and no action.
However , when i use "XXX)
>runAction;", it work. But it is strange result.
How can i use “XXX)~~>runAction;”, when PhysicsSprite* add to the CCSpriteBatchNode**.
Thank you for your attention
“”
cocos2d::CCSpriteBatchNode** Cat = CCSpriteBatchNode::batchNodeWithFile;
addChild;
SpawnCat);
>lastObject))>SetDirtyNgDirty;
CCActionInterval **actionTo = CCScaleBy::actionWithDuration;
>lastObject))>stopAllActions ;
>lastObject))>runAction, NULL));
“”

The Detail code here
@
// PhysicsSprite.h
class PhysicsSprite : public cocos2d::CCSprite
{
public:
PhysicsSprite();
virtual ~PhysicsSprite();

    void setPhysicsBody(b2Body \* body); //Definition

    b2Body\* GetBox2DBody();
    CCPoint GetPosition\_Cocos2dx();

    void FreeBox2DBody();

    virtual bool isDirty(void); // a default method of CCSprite, if don't set it will not run "nodeToParentTransform"
    void SetDirtyNgDirty(bool DirtyNgDirty);

    virtual cocos2d::CCAffineTransform nodeToParentTransform(void); //a default method of CCNode
private:
    b2Body\* m\_pBody;    // strong ref
    bool DirtyNgDirty;

};@

@
// PhysicsSprite.cpp
#include “PhysicsSprite.h”
#define PTM_RATIO 32
PhysicsSprite::PhysicsSprite{
m_pBody = NULL;
DirtyNgDirty = true;
}
PhysicsSprite::~PhysicsSprite
{
}
void PhysicsSprite::setPhysicsBody{
m_pBody = body;
}
b2Body** PhysicsSprite::GetBox2DBody{
return m_pBody;
}
CCPoint PhysicsSprite::GetPosition_Cocos2dx{
return ccp.x * PTM_RATIO , m_pBody~~>GetPosition.y** PTM_RATIO );
}
void PhysicsSprite::FreeBox2DBody(){
CCLog(”Free the Box2DBody");
m_pBody~~>GetWorld~~>DestroyBody;
CCLog;
m_pBody = NULL;
}
// this method will only get called if the sprite is batched.
// return YES if the physics values changed
// If you return NO, then nodeToParentTransform won’t be called.
bool PhysicsSprite::isDirty{
return DirtyNgDirty;
}
void PhysicsSprite::SetDirtyNgDirty{
DirtyNgDirty = Input;
}
// returns the transform matrix according the Chipmunk Body values
cocos2d::CCAffineTransform PhysicsSprite::nodeToParentTransform{
b2Vec2 pos = m_pBody~~>GetPosition;
float x = pos.x * PTM_RATIO;
float y = pos.y * PTM_RATIO;
if ) {
x = m_tAnchorPointInPoints.x;
y
= m_tAnchorPointInPoints.y;
}
// Make matrix
float radians = m_pBody~~>GetAngle();
float c = cosf(radians);
float s = sinf(radians);

if( ! CCPoint::CCPointEqualToPoint(m_tAnchorPointInPoints, CCPointZero) ){
x += c**m_tAnchorPointInPoints.x +s**m_tAnchorPointInPoints.y;
y += s**m_tAnchorPointInPoints.x + c**m_tAnchorPointInPoints.y;
}
// Rot, Translate Matrix
m_tTransform = CCAffineTransformMake;
return m_tTransform;
}@
//=the main layer function
@
enum {
kTag_cat_Node
};
b2Body * _player;
bool HelloWorld::init
{
cocos2d::CCSpriteBatchNode* Cat = CCSpriteBatchNode::batchNodeWithFile;
addChild;
SpawnCat);
>lastObject))>SetDirtyNgDirty;
CCActionInterval **actionTo = CCScaleBy::actionWithDuration;
>lastObject))>stopAllActions ;
>lastObject))>runAction, NULL));
}
void HelloWorld::SpawnCat{
#define CAT_RESTITUTION 0.8f
///define the cat shape
b2Vec2 verts[] = {
b2Vec2,
b2Vec2,
b2Vec2,
b2Vec2,
b2Vec2,
b2Vec2,
b2Vec2,
b2Vec2
};
int iNumVerts = 8; //total nuumber of the shape points
b2PolygonShape ShapeDef;
ShapeDef.Set;
*player = Create_Box2D_DynamicObject;
*player
>CreateFixture&ShapeDef), 1.0f, CAT_RESTITUTION ,false ) );
*player
>SetUserData );
_player
>SetFixedRotation;
*player
>SetLinearDamping;
}
PhysicsSprite** HelloWorld::Create_PhysicsObjects{
#define Z_ORDER_LEVEL 1
CCSpriteBatchNode* parent = getChildByTag;
//init sprite for cocos2dx
PhysicsSprite *PhysicsObject = new PhysicsSprite;
//if the user hasnt input the information about which part of texture use then use whole texture
if{
PhysicsObject
>initWithTexture,Rect);
}else{
PhysicsObject~~>initWithTexture);
}
PhysicsObject~~>autorelease;
parent~~>addChild;
PhysicsObject~~>setPosition );
PhysicsObject~~>setPhysicsBody;
return PhysicsObject;
}
b2Body
HelloWorld::Create_Box2D_DynamicObject{
//init Box2D Object==
b2BodyDef BodyDef;
BodyDef.type = b2_dynamicBody;
BodyDef.position.Set;
b2Body * BoxTwoBody = _world~~>CreateBody(&BodyDef);
return BoxTwoBody;
}

b2FixtureDef* HelloWorld::Create_Box2D_Fixture(b2Shape* ShapeDef, float Density, float Restitution, bool IsSensor){
b2FixtureDef* fixtureDef = new b2FixtureDef();
fixtureDef~~>shape = ShapeDef;
fixtureDef~~>restitution = Restitution;
fixtureDef~~>density = Density;
fixtureDef~~>isSensor = IsSensor;
return fixtureDef;
}

@