关于android解析cocos2d中tilemap polyline问题

我在ANDROID了解析不出TILEMAP里定义的POLYLINE,在WIN32里可以正常解析.我解析POLYLINE的代码如下.

能否帮我看下,是不是哪些函数ANDROID不支持? 非常感谢.(我之前代码里用了ATOF我怕ANDROID不支持,现在改成了SSCANF,但还是不行)

void GBBox2d::Box2DTileMapContact(CCTMXTiledMap* map,CCSprite* spriteblock)
{
CCTMXObjectGroup* objectGroup = map->objectGroupNamed(“OBJECT”);

CCArray* objects = (CCArray*)objectGroup->getObjects() ;

CCDictionary* objectsdict = NULL;
CCObject* pObj = NULL;    
CCARRAY_FOREACH(objects, pObj)
{   
    //定义形状
    //b2PolygonShape* Shape = new b2PolygonShape();
    b2EdgeShape* Shape=new b2EdgeShape();

    objectsdict= (CCDictionary*)pObj;
    if(!objectsdict)
    break;        
    
    //获取原点X坐标
    CCString* pointx = (CCString*)objectsdict->valueForKey("x") ;
    char* cpointx = (char*)pointx->getCString() ;
    //float fpointx = atof(cpointx) ;
    //fpointx = 50 ;
    float fpointx = 0 ;
    sscanf(cpointx,"%f",&fpointx) ;

    //sprintf(animationnumber, "%d", spritetoxx); 


    //获取原点Y坐标
    CCString* pointy = (CCString*)objectsdict->valueForKey("y") ;
    char* cpointy = (char*)pointy->getCString() ;
    float fpointy = 0 ;
        //atof(cpointy) ;
    sscanf(cpointy,"%f",&fpointy) ;
    //fpointy = 50 ;

    //获取遮挡增量坐标
    CCString* points = (CCString*)objectsdict->valueForKey("points") ;
    char* cpoints = (char*)points->getCString() ;
    strcat(cpoints,"ED") ; 
    int i = 0 ;
    int num = 0 ;
    int flag = 0 ;
    int changeflg = 0 ;
    string xy= "" ;
    string x="" ;
    string y="" ; 
    b2Vec2 verts ; 
    while(*(cpoints+i)!='D')
    {        
        //当遇空格或逗号时表示改变,遇E时表示最后
        if(*(cpoints+i) == ' '||*(cpoints+i) == ','||*(cpoints+i) == 'E')
        {
            if(flag ==0 )
                flag = 1;
            else 
                flag = 0 ;
            changeflg = 1 ;
            i++ ;
            
        }
        //发生改变
        if(xy != "" && changeflg == 1)
        {
            //记录Y值
            if(flag == 0 )
            {
                y = xy ;
                //记录XY值并转换为刚体
                if( x!="" && y!="" )
                {    
                    num++ ;
                    float datax = 0 ;
                    float datay = 0 ;
                    sscanf(x.data(),"%f",&datax) ;
                    sscanf(y.data(),"%f",&datay) ;
                    float fx = fpointx + datax;
                    float fy = fpointy - datay;
                    verts = b2Vec2(fx/PTM_RATIO*mapscale, fy/PTM_RATIO*mapscale);    
                    //verts.x = fx/PTM_RATIO ;
                    //verts.y = fy/PTM_RATIO ;
                }
            }
            //记录X值
            else
            {
                x = xy ;
            }
            changeflg = 0 ;
            xy = "" ;
            continue ;
        }
        xy = xy + *(cpoints+i) ; 
        i++ ;
    }
    
    b2BodyDef ShapeBodyDef;
    ShapeBodyDef.type = b2_staticBody ;
    //ShapeBodyDef.
    //ShapeBodyDef.position.Set(fpointx/PTM_RATIO,fpointy/PTM_RATIO) ;
    
    b2Vec2 Position = b2Vec2(fpointx/PTM_RATIO*mapscale,fpointy/PTM_RATIO*mapscale);
    float32 Angle = -1 * CC_DEGREES_TO_RADIANS(spriteblock->getRotation());

    ShapeBodyDef.userData = spriteblock ;
    b2Body* ShapeBody = world->CreateBody(&ShapeBodyDef);
    ShapeBody->SetTransform(Position,Angle);

    //循环生成所有POLYLINE规则v1->v2,v2->v3...
    for(i = 0 ; i < num-1 ;i++)
    {
        Shape->Set(verts*,verts*) ;
        b2FixtureDef ShapeDef;
        ShapeDef.shape = Shape;
        ShapeDef.density = 10.0;
    
        //ShapeDef.
        ShapeDef.isSensor = false;
        ShapeBody->CreateFixture(&ShapeDef);
    }
    
}

}
**