Как прокрутить символы на этикетке в Cocos2D? - PullRequest
3 голосов
/ 03 декабря 2011

У меня есть спрайт, на котором есть метка (CCLabelTTF).На этой этикетке у меня напечатаны A, B, C, D, E и т. Д., Когда на них нажимают.Я хочу, чтобы они прокрутили влево .Я гуглил некоторые учебники, но не могу найти решение и застрял здесь надолго. Здесь - скриншот моей игры.Вы можете видеть символы от A до J. Когда я нажимаю на другие входящие символы, эта часть должна прокручиваться.Что я могу сделать, чтобы прокручивать символы?

Вот код, из которого символы отображаются на этикетке (lblSelectedAlpha), добавленный на спрайте: -

-(void)showSelectedAlphaBet{

    fSelectedAlphaY =26;     
    if (tempBackground) {       
        [tempBackground removeFromParentAndCleanup:YES];
    }   
    tempBackground = [CCSprite spriteWithFile:@"stripe_2.png"];
    tempBackground.position = ccp(160,30);
    [self addChild:tempBackground z:30];        
    for (int i=0; i<[arryAddSelectedChar count]; i++) {     
       // NSLog(@"[arryAddSelectedChar count] %@",[arryAddSelectedChar objectAtIndex:i]);       
        lblSelectedAlpha = [CCLabelTTF labelWithString:
                        [arryAddSelectedChar objectAtIndex:i]dimensions:CGSizeMake(30,30)
                                         alignment:UITextAlignmentCenter  fontName:@"Marker Felt" fontSize:30];     
        lblSelectedAlpha.position = ccp(fSelectedAlphaY,25);
        lblSelectedAlpha.tag=i;
        lblSelectedAlpha.color = ccc3(125,125,125);
        [tempBackground addChild:lblSelectedAlpha z:5];     
        fSelectedAlphaY +=25;     
    }
}

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

Ну, вот как я реализовал прокрутку в моей игре cocos2d

// Как добавить прокрутку на этикетке.Это я сделал с UITextView

// внутри init, я взял

{

    scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(10,430, 150, 50)]
    alphabetScroll = [[UITextView alloc] initWithFrame:CGRectMake(10,0,50 ,50)];
    alphabetScroll.font = [UIFont fontWithName:@"verdana" size:30.0f];
    alphabetScroll.backgroundColor = [UIColor clearColor];
    alphabetScroll.textColor = [UIColor colorWithRed:125.0/255.0 green:125.0/255.0 blue:125.0/255.0 alpha:1.0f];
    alphabetScroll.userInteractionEnabled=NO;

    [scroll addSubview:alphabetScroll];
    [[[CCDirector sharedDirector]openGLView]addSubview:scroll]; 

}

- (void) showSelectedAlphaBet

{

NSLog(@"showSelectedAlphaBet");

fSelectedAlphaY =26;   // I have 26 alphabets

if (tempBackground) {

    [tempBackground removeFromParentAndCleanup:YES];
}

// Область, в которую добавляются алфавиты при прикосновении

tempBackground = [CCSprite spriteWithFile:@"stripe_2.png"];
tempBackground.position = ccp(160,30);
[self addChild:tempBackground z:30];
bottomAlphabet = @" ";

for (int i=0; i<[arryAddSelectedChar count]; i++) {

    NSLog(@"[arryAddSelectedChar count] %@",[arryAddSelectedChar objectAtIndex:i]);

    bottomAlphabet = [bottomAlphabet stringByAppendingString:[arryAddSelectedChar objectAtIndex:i]];
}

// Реализация сдвига / прокрутки

int newScrollViewWidth;
int newLabelWidth;
newScrollViewWidth =25*[arryAddSelectedChar count];
newLabelWidth =50*[arryAddSelectedChar count];

[scroll setContentSize:CGSizeMake(newScrollViewWidth, 45)];

alphabetScroll.frame =  CGRectMake(0, 0, newLabelWidth, 45);

alphabetScroll.text = bottomAlphabet;
if (newScrollViewWidth > 150) {
    CGPoint svos;
    CGPoint pt;
    svos = scroll.contentOffset;
    CGRect rc = [alphabetScroll bounds];
    rc = [alphabetScroll convertRect:rc toView:scroll];
    pt = rc.origin;
    pt.y = 0;
    pt.x += 20*([arryAddSelectedChar count]-5);

    [scroll setContentOffset:pt animated:YES];       
}

}

// В Deloloc

[alphabetScroll release];
1 голос
/ 03 декабря 2011

Прокрутка - это просто постоянное изменение положения во времени. В основном как то так:

-(void) update:(ccTime)delta
{
   label.position = CGPointMake(label.position.x - 1, label.position.y);
}
...