Невидимая проблема CCLabelTTF в iOS 7.0

Я использую cocos2d-x 2.0.4 для своей игры. CCLabelTTF хорошо работает как на устройстве, так и на симуляторе в iOS 6. Но когда я тестирую его в iOS 7.0, он не работает. Вот мой код.

    int nScore = 10;
    char str[50];
    sprintf(str, "SCORE : %d", nScore);
    CCLabelTTF *lbl = CCLabelTTF::create(str, "Marker Felt", 50);
    lbl->setPosition(ccp(size.width*0.5, size.height*0.88));
    lbl->setColor(ccRED);
    this->addChild(lbl);

Счет не показывает сейчас. Но это видно в iOS 6. Еще одна странная проблема. Если я изменю приведенный выше код таким образом, он сработает.

    CCLabelTTF *lbl = CCLabelTTF::create("SCORE", "Marker Felt", 50);
    lbl->setPosition(ccp(size.width*0.5, size.height*0.88));
    lbl->setColor(ccRED);
    this->addChild(lbl);

Но если я снова изменю этот код, как показано ниже, он не сработает (невидимый).

    CCLabelTTF *lbl = CCLabelTTF::create("Score", "Marker Felt", 50);
    lbl->setPosition(ccp(size.width*0.5, size.height*0.88));
    lbl->setColor(ccRED);
    this->addChild(lbl);

Возможно, это проблема с учетом регистра.

Наконец, приведенный ниже код не работает, даже если текст в верхнем регистре. Я добавил только номер 10.

    CCLabelTTF *lbl = CCLabelTTF::create("SCORE : 10", "Marker Felt", 50);
    lbl->setPosition(ccp(size.width*0.5, size.height*0.88));
    lbl->setColor(ccRED);
    this->addChild(lbl);

Любая помощь будет оценена. Заранее спасибо.


person user2968371    schedule 08.11.2013    source источник
comment
Возможная причина: переменная str создается в стеке и становится висячим указателем после возврата метода. Если только CCLabelTTF не скопирует строку.   -  person LearnCocos2D    schedule 08.11.2013


Ответы (2)


Я столкнулся с этой же проблемой при использовании cocos2d-x 2.1.3. Я нашел эту ссылку, в которой говорится, что проблема связана с ошибкой, которая влияет на метки в iOS 7. В Чтобы решить эту проблему, вам нужно либо обновить движок, либо объединить это тянуть запрос вручную.

person skewerb    schedule 09.11.2013
comment
Я пытался обновить движок cocos2d-x, но когда я это сделал, возникли некоторые ошибки. Не могли бы вы сообщить мне, как обновить движок или объединить запрос на вытягивание вручную? - person user2968371; 11.11.2013

обновите версию cocos2d-x, исправленную в 3.0, и если вы используете более старую версию cocos2dx, измените на CCimage.mm этот статус

CGContextRef context = CGBitmapContextCreate(data,dim.width,dim.height, 8,dim.width * 4, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);

CGContextRef context = CGBitmapContextCreate(data, (size_t)dim.width, (size_t)dim.height, 8, (size_t)dim.width * 4, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
person Muhammad Noman    schedule 31.05.2014