我有一个箭头图像,我必须在我的可触摸应用程序中的点内伸展。当用户点击第一个点并将他的指针拖到下一个点时,箭头图像将在任何屏幕方向从第一个点到第二个点显示。当他在点上移动时,图像应该变大(就像一个大箭头)。
我写了一些代码,但它在水平方向上看起来很好。如何以对角线外观显示图像。我想我将不得不旋转图像进行对角线方向选择。但我怎么知道旋转的确切角度?这是我的代码部分。
-(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");
}
答案 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);