Как сделать интерфейс, который выглядит как этот интерфейс Cortex? (Круг, cocos2d, iphone) - PullRequest
0 голосов
/ 09 апреля 2011

Как мне сделать такой интерфейс с cocos2d для iphone? Интерфейс Cortex

enter image description here

Я уже создал подкласс CCSprite и переопределил draw

метод, подобный этому:

-(void)draw {
    ccDrawCircle(CGPointMake(480/2, 320/2), 70, 0, 50000, NO);
    ccDrawCircle(CGPointMake(480/2, 320/2), 25, 0, 50000, NO);

    ccDrawLine(CGPointMake(480/2, 320/2+25), CGPointMake(480/2, 320/2+70));
    ccDrawLine(CGPointMake(480/2+25, 320/2), CGPointMake(480/2+70, 320/2));
    ccDrawLine(CGPointMake(480/2, 320/2-25), CGPointMake(480/2, 320/2-70));
    ccDrawLine(CGPointMake(480/2-25, 320/2), CGPointMake(480/2-70, 320/2));

}

Проблема в том, что у меня нет никакого контроля над кругом (я не могу установить его положение) ... и я не знаю, какПоместите текст / изображения в эти «ячейки».Еще одна проблема - обнаружение касания. Может, просто cgrects?но что если у меня более 4 ячеек и одна ячейка «повернута»?

Есть идеи?

Ответы [ 2 ]

1 голос
/ 19 июня 2011

Я думаю, что у вас есть два варианта здесь, но я не рекомендую создавать подклассы CCSprite, потому что очень редко рекомендую делать это, в этом почти нет необходимости.

На мой взгляд, вы можете сделать любое из них, чтобы получить свое изображение.
1. Используйте OpenGL, чтобы нарисовать ваше изображение.
2. Используйте CCSprite, чтобы нарисовать ваше изображение. (Уборщик)

После того, как вы нарисовали его, нужно просто создать его, когда вы нажимаете на экран. Как только вы нажмете на экран (или любой другой предписанный объект), я использую простое тригонометрическое решение.
Вот алгоритм, который я бы использовал:

  1. Нажмите на экран, получите положение касания. (sourcepos) и создайте свою кору img
  2. При перемещении пальца по экрану установите положение (currentpos) угла и величины относительно исходного (sourcepos) касания.
  3. Теперь, используя простые углы, мы можем установить различные границы для вашего CCSprite, используя операторы if. Также хорошей идеей является использование оператора #define kMinMagnitude X, чтобы гарантировать, что пользователь правильно двигает пальцем.
  4. Полагаю, вы можете выполнить // Загрузить Twitter или Загрузить Facebook либо по ходу движения, либо по отмене касания. Это полностью зависит от вас.

(PSUDOCODE):

dx = currentpos.x - sourcepos.x
dy = currentpos.y - sourcepos.y
mag = sqrt(dx*dx + dy*dy);
ang = CC_RADIANS_TO_DEGREES(atan2f(dy/dx));

if (ang > 0 && ang < 80 && mag > kMinMagnitude) //Load Twitter 
if (ang > 80 && ang < 120 && mag > kMinMagnitude) //Load facebook
0 голосов
/ 09 апреля 2011

Я не думаю, что создание подкласса CCSprite является правильным выбором здесь. Вы, вероятно, захотите NSObject, который создает CCSprites для вас.

Также CCSprite.position = CGPointMake( X, Y ) должно позволять вам устанавливать позицию спрайта. Не забудьте добавить его в слой, как и любой другой объект CCNode.

...