2015-04-12 3 views
1

я определить ресурсы шрифта сCocos2d-JS: Пользовательские TTF шрифты не будут отображаться в Android

var res = { 
    indieflower_ttf: {type:"font", name:"IndieFlower", srcs:["res/fonts/IndieFlower.ttf"]}, 
} 

И создать ярлык TTF с:

var text = cc.LabelTTF.create(text, "IndieFlower", bubble.fontsize, cc.size(60,0),cc.TEXT_ALIGNMENT_LEFT, cc.VERTICAL_TEXT_ALIGNMENT_TOP); 

и будут отображаться нормально в Firefox и Chrome, но покажет шрифт по умолчанию (Arial) на Android.

Что еще нужно делать? Я проверил нить Cocos2d-js: How to use a custom ttf font on android devices?, но это не поможет.

ответ

7

Проблема заключается в том, что родным платформам нужен полный путь к шрифту ttf, а для платформы html требуется имя шрифта. Я получил два решения на форуме cocos2d-x:

  1. Использовать растровые шрифты. (Да ... но я хотел бы иметь TTF)

  2. Код это:

В файле ресурсов я сейчас:

var res = { 
    indieflower_ttf: {type:"font", name:"IndieFlower", srcs:["res/fonts/IndieFlower.ttf"]}, 
} 

Тогда вспомогательная функция:

var _b_getFontName = function(resource) { 
    if (cc.sys.isNative) { 
     return resource.srcs[0]; 
    } else { 
     return resource.name; 
    } 
} 

И для создания этикетки:

var text = cc.LabelTTF.create("text", _b_getFontName(res.indieflower_ttf), 48, cc.size(300,0),cc.TEXT_ALIGNMENT_CENTER, cc.VERTICAL_TEXT_ALIGNMENT_TOP); 
+0

Спасибо за указание проблемы, а также решение в одном месте. @Майкл. Теперь я могу заставить свой шрифт работать на кросс-платформе. – L4reds

+0

@ Майкл Я смог показать пользовательский шрифт ttf в Интернете, используя ваш метод. Но, к сожалению, это не работало на iOS. Есть ли еще один шаг, необходимый для iOS? – user3164248

+0

@ user3164248 Попробуйте использовать resource.name для ios: if (cc.sys.os == cc.sys.OS_IOS) ... Но я не проверял его. – Michael

Смежные вопросы