如何在cocos2d中的点内拉伸图像

时间:2011-08-23 10:17:27

标签: cocos2d-iphone

我有一个箭头图像,我必须在我的可触摸应用程序中的点内伸展。当用户点击第一个点并将他的指针拖到下一个点时,箭头图像将在任何屏幕方向从第一个点到第二个点显示。当他在点上移动时,图像应该变大(就像一个大箭头)。

我写了一些代码,但它在水平方向上看起来很好。如何以对角线外观显示图像。我想我将不得不旋转图像进行对角线方向选择。但我怎么知道旋转的确切角度?这是我的代码部分。

-(void) ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
{
   CGPoint curentTouchPoint=[self convertTouchToNodeSpace:touch];


if(arrow.tag==200 && arrow!=nil) {
         [self removeChildByTag:200 cleanup:YES];
} 

CCLOG(@" cuurent touch point y=%f, prevvalue X=%f current X=%f",curentTouchPoint.y,prevValue.x,curentTouchPoint.x);

    arrow=[CCSprite spriteWithFile:@"arrow.png"];
    arrow.tag=200;
    arrow.scaleX=(curentTouchPoint.x-prevValue.x)/[arrow boundingBox].size.width;
    arrow.position=ccp(prevValue.x,prevValue.y);
    [self addChild:arrow];




}

   -(void) ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event
{
if(arrow!=nil) {
     [self removeChildByTag:200 cleanup:NO];
    arrow=nil;
    }

    CCLOG(@"Touch End");
   }

1 个答案:

答案 0 :(得分:0)

您可以通过计算斜率找到要旋转的角度,然后通过乘以180 / PI将其转换为度数。

因此,带有curentTouchPoint和prevValue的线段的斜率为

m =(prevValue.y-curentTouchPoint.y)/(prevValue.x-curentTouchPoint.x)

结果m以弧度为单位,因此为了将其转换为弧度乘以180 / PI

m =(prevValue.y-curentTouchPoint.y)/(prevValue.x-curentTouchPoint.x)* 180 /(22/7)

此外,向下旋转也是如此。并且角度m是线与x轴的角度,因此我们必须乘以-1; 所以最终的代码变成了

arrow.rotation = -(prevValue.y-curentTouchPoint.y)/(prevValue.x-curentTouchPoint.x)* 180/(22/7);