Cocos2D: проблема с вращением CCMenu - PullRequest
1 голос
/ 20 марта 2010

Если я пытаюсь выполнить действия над элементами меню, но действия выполняются не так, как ожидалось.

Я думаю, что приведенный ниже код должен заставить menuItem поворачиваться на 90 градусов, но когда я запускаю его, menuItem переводит его координаты в другую координату, а затем возвращается к своей исходной координате. Полный перевод занимает 3 секунды.

Мне нужно, чтобы пункт меню повернулся на 90 градусов на месте в течение 3 секунд. Пожалуйста, объясните, где я поступил неправильно?

CCMenuItemImage *targetE;//Globally declared
CCMenu *menu;//Globally declared

-(id)init
{
    if( (self = [super init]) )
    {
        isTouchEnabled = YES;
        CGSize windowSize = [[CCDirector sharedDirector] winSize];
        targetE = [CCMenuItemImage itemFromNormalImage:@"grossinis_sister1.png"     selectedImage:@"grossinis_sister1.png" target:self selector:@selector(touch:)];

        menu = [CCMenu menuWithItems:targetE,nil];
        id action4 = [CCRotateBy actionWithDuration:3.0 angle:90];
        [menu runAction: [CCSequence actions: action4, nil]];
        menu.position = ccp(windowSize.width/2 + 200, windowSize.height/2); 
        [self addChild: menu z:10];
    }
    return self;
}
@end

Спасибо.

1 Ответ

4 голосов
/ 04 сентября 2010

Если вы хотите повернуть отдельный элемент меню (как в вашем примере), просто запустите действие CCRotateBy для CCMenuItem:

[targetE runAction:action4];

Если вы хотите повернуть все меню со всеми его пунктами, вам необходимо учитывать его размер, размер и привязку. В вашем случае самый простой способ повернуть меню на месте - установить его contentSize в ноль.

menu.contentSize = CGSizeZero;

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