как растянуть изображение в точках в cocos2d - PullRequest
0 голосов
/ 23 августа 2011

У меня есть изображение стрелки, которое я должен растянуть в пределах точек в моем приложении, к которому можно прикоснуться. Когда пользователь нажимает на первую точку и перетаскивает указатель на следующую точку, изображение стрелки будет отображаться от первой точки ко второй точке в любом направлении экрана. Когда он будет перемещаться по точкам, изображение должно стать большим (как большая стрелка).

Я написал некоторую часть кода, но в горизонтальном направлении он выглядит нормально. Как я буду показывать изображение в диагональном виде. Я думаю, что мне придется повернуть изображение для выбора диагонального направления. Но как я узнаю точный угол поворота? Вот моя часть кода.

-(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 голосов
/ 01 октября 2011

Вы можете найти угол поворота, рассчитав наклон, а затем преобразовав его в градусы, умножив на 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...