Как прокручивать символы на этикетке в Cocos2D?

У меня есть спрайт, на котором есть метка (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;     
    }
}

person Arshad Parwez    schedule 03.12.2011    source источник


Ответы (2)


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

-(void) update:(ccTime)delta
{
   label.position = CGPointMake(label.position.x - 1, label.position.y);
}
person LearnCocos2D    schedule 03.12.2011
comment
Это, вероятно, уменьшит количество символов. Мне нужно прокручивать и просматривать символы, которые удалены из поля зрения из-за добавления большего количества символов. - person Arshad Parwez; 05.12.2011
comment
Я не понимаю. Либо у вас есть метка со строкой ABCDEF.. и так далее, либо у вас есть 26+ меток, каждая из которых содержит один символ A, B, C и так далее. Чтобы прокручивать их, вы корректируете их положение. - person LearnCocos2D; 07.12.2011
comment
У меня есть метка со строкой ABCDEF.. и так далее... Я собираюсь найти решение своего вопроса. Выложу по завершению. - person Arshad Parwez; 07.12.2011

Вот как я реализовал прокрутку в своей игре cocos2d.

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

// внутри инициализации я взял

{

    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];       
}

}

// В делелоке

[alphabetScroll release];
person Arshad Parwez    schedule 07.12.2011