Рисование линии на ощупь перенесено в COCOS2D - PullRequest
3 голосов
/ 27 декабря 2010

Я разрабатываю игру для iPhone, используя COCOS2D .

При этом мне нужно нарисовать линию, когда пользователь перетаскивает палец из одной точки в другую. Что касается моих знаний, мне нужно сделать это в Touches Moved method, откуда я могу получить очки.

Но я не знаю, как это сделать. Кто-нибудь может мне помочь в этом?

Ответы [ 2 ]

6 голосов
/ 09 января 2011

Киа Ора. Скука заставляет меня дать ответ на эту тему.

Часть слоя (т.е. @interface GetMyTouches: CCLayer):

-(void) ccTouchesMoved:(NSSet *)inappropriateTouches withEvent:(UIEvent *)event
{
    UITouch *touchMyMinge = [inappropriateTouches anyObject];

    CGPoint currentTouchArea = [touchMyMinge locationInView:[touchMyminge view] ];
    CGPoint lastTouchArea = [touchMyMinge previousLocationInView:[touchMyMinge view]];

    // flip belly up. no one likes being entered from behind.
    currentTouchArea = [[CCDirector sharedDirector] convertToGL:currentTouchArea];
    lastTouchArea = [[CCDirector sharedDirector] convertToGL:lastTouchArea];

    // throw to console my inappropriate touches
    NSLog(@"current x=%2f,y=%2f",currentTouchArea.x, currentTouchArea.y);
    NSLog(@"last x=%2f,y=%2f",lastTouchArea.x, lastTouchArea.y);  

   // add my touches to the naughty touch array 
   naughtyTouchArray addObject:NSStringFromCGPoint(currentTouchArea)];
   naughtyTouchArray addObject:NSStringFromCGPoint(lastTouchArea)];
}

Часть узла (т.е. @interface DrawMyTouch: CCNode):

@implementation DrawMyTouch

-(id) init
{
    if( (self=[super init])) 
    { }
    return self;
}

-(void)draw
{
    glEnable(GL_LINE_SMOOTH);

    for(int i = 0; i < [naughtyTouchArray count]; i+=2)
    {
        start = CGPointFromString([naughtyTouchArray objectAtIndex:i]);
        end = CGPointFromString([naughtyTouchArray objectAtIndex:i+1]);

        ccDrawLine(start, end);
    }
}

@end

Часть II слоя (т.е. @interface GetMyTouches: CCLayer):

-(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{   
    DrawMyTouch *line = [DrawMyTouch node];
    [self addChild: line];
}

Помните, что трогать легко. Знание того, что вы делаете во время прикосновения, - это не ракетостроение.

Наконец, если вы не понимаете, что я написал, займитесь выпечкой. Миру нужно больше производителей шоколадных тортов.

Пояснение:

  1. Никто не узнает форму вырезать и вставить ~ этот код никогда не предназначался для работы без ласки
  2. Если вы не видите юмора, вы не в той профессии

Примечательно, я люблю хороший шоколадный торт. Мир действительно нуждается в большем количестве фантастических пекарей. Это не оскорбление, это поощрение.

«Посмотрите за квадрат, чтобы найти круг, наполненный знаниями, которые делают жизнь достойной жизни» ~ Aenesidemus.

6 голосов
/ 27 декабря 2010
- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event  
{
        UITouch  *theTouch = [touches anyObject];
    CGPoint touchLocation = [theTouch locationInView:[theTouch view] ];
    cgfloat x = touchLocation.x;
    cgfloat y= touchLocation.y;
printf("move x=%f,y=%f",x,y);   
}

Попробуйте приведенный выше код. Он получит координаты, когда touches moved в iphone.

Чтобы нарисовать линию, используйте что-то вроде этого:

-void draw
{
here is the code for line draw.
}

Обновите эту функцию в методе обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...