矩形旋转

 

CCSprite*sp1=CCSprite::create("boss2A.png");

    this->addChild(sp1);

    sp1->setAnchorPoint(CCPointZero);

默认位置:左下角(ccp(0,0)

默认锚点:中心位置(ccp(0.5,0.5)

 

 

 

测试的矩形框是以左下角为锚点的。位置是当初设置sprite的位置.

 

 

 

 

 

 

 

Draw()没有变,这样在其他地方想得到sprite所在矩形范围:

 

结论1

以左下角为锚点的矩形旋转,180度后位置变了:

X1 = x1-w1;

Y1 = y1-h1;

 

 

旋转90度:

Draw()内修改:

 

 

 

修改后效果:

 

 

 

结论:

锚点为左下的矩形旋转:顺时针90度,之后的位置:

Y1 = y1-w1;

Int tem = w1;

W1 = h1;

H1 = tem;//宽高交换

 

猜测:锚点为坐下的矩形旋转:逆时针90度,之后的位置:

X1 = x1-h1;

Int tem = w1;

W1 = h1;

H1 = tem;

 

旋转-90度后。代码没改:

Draw()代码添加

 

添加代码后的效果:

 

呵呵,猜想正确了!。

等一下封装一下,以后遇到矩形旋转的直接拿来用就ok!!!

 

cocos2d::CCRectHelloWorld::getRectRotation(CCRectr,intdir,CCPointAnchorPoint)

{

    int x1=r.getMidX();

    int y1=r.getMinX();

    int w1=r.size.width;

    int h1=r.size.height;

    if (AnchorPoint.x==0&&AnchorPoint.y==0)

    {

        if (dir==180)

        {

            x1=x1-w1;

            y1=y1-h1;

        }

        if (dir==90)

        {

            y1=y1-w1;

            int tem=w1;

            w1=h1;

            h1=tem;

        }

        if (dir==-90)

        {

            x1=x1-h1;

            int tem=w1;

            w1=h1;

            h1=tem;

        }

    }

   

    return CCRect(x1,y1,w1,h1);

 

}

目前只是对锚点为左下角的矩形旋转,以后有时间再完善,现在还有更重要的是要做~

你可能感兴趣的:(C++,cocos2d)