Pebble JS, GitHub и ресурсы изображений

Я работаю над проектом pebble.js, который загружается из репозитория GitHub. По сути, я пишу свой код локально, загружаю его на GitHub, а затем загружаю в CloudPebble для сборки, поскольку мой компьютер не подходит для запуска SDK. CloudPebble правильно видит мой ресурс изображения, но я не могу понять, как на него сослаться. Первоначально он не мог найти изображение, пока я не переместил подпуть в папку resources. Это позволило правильно импортировать, но каждый раз, когда я ссылаюсь на свое изображение, я получаю это в журнале приложения:

JavaScript Error:
send@[native code]
    at load (ui/windowstack.js:2654:22)
    at load (lib/image.js:165:11)
    at load (ui/imageservice.js:85:16)
    at resolve (ui/imageservice.js:109:60)
    at ImageType (ui/simply-pebble.js:41:32)
    at lib/struct.js:161:32
    at menuItem (ui/simply-pebble.js:814:10)
    at _resolveItem (ui/menu.js:161:30)
    at _preloadItems (ui/menu.js:170:22)
    at _resolveSection (ui/menu.js:151:25)
    at section (ui/menu.js:239:23)
    at updateActivityMenu (app.js:44:18)
    at app.js:167:21
    at onreadystatechange (lib/ajax.js:109:17)

Вот пример структуры моего проекта:

/project/resources/images/some_image.png
/project/src/app.js
/project/appinfo.json

Это соответствующий бит appinfo.js

    "media": [
        {
            "file": "images/some_image.png",
            "name": "MY_IMAGE",
            "type": "png"
        }
    ]

И, наконец, соответствующий бит из app.js

    var item = {
        title: data.Response.data.activity.activityName,
        subtitle: data.Response.data.activity.activityDescription,
        icon: 'MY_IMAGE' 
    };

Я также пробовал напрямую ссылаться на путь к изображению для свойства icon, но изображение никогда не отображается, и я получаю то же самое JavaScript Error. Я вижу правильно добавленное изображение в журнале сборки:

[ 6/29] some_image.png.pbi: resources/images/some_image.png ../../app/sdk2/Pebble/tools/bitmapgen.py -> build/resources/images/some_image.png.pbi

На данный момент я в недоумении - любая помощь будет принята с благодарностью.


person phatskat    schedule 10.03.2015    source источник
comment
Вы пробовали icon: 'images/some_image.png'? Это тоже поддерживается.   -  person sarfata    schedule 16.03.2015
comment
@sarfata Да, я пробовал оба метода.   -  person phatskat    schedule 16.03.2015
comment
Глупый вопрос, но я должен спросить: вы пробовали resources/images/some_image.png или /resources/images/some_image.png или ../resources/images/some_image.png или использовали расширение .pbi? Я ничего не знаю о гальке, но просто хотел сделать вывод ваших путей герметичным.   -  person Daniel    schedule 16.03.2015
comment
@phatskat, можете ли вы где-нибудь поделиться примером zip, раскрывающим эту проблему?   -  person sarfata    schedule 16.03.2015
comment
В C SDK имена ресурсов должны начинаться с префикса RESOURCE_ID_. Вы пробовали RESOURCE_ID_MY_IMAGE вместо MY_IMAGE?   -  person Chris    schedule 17.03.2015
comment
@Chris, я попробую   -  person phatskat    schedule 17.03.2015


Ответы (2)


Попробуйте использовать путь к изображению вместо идентификатора его ресурса:

var item = {
    title: data.Response.data.activity.activityName,
    subtitle: data.Response.data.activity.activityDescription,
    icon: 'images/some_image.png' 
};

Документация pebble.js предполагает, что это правильный подход для внутренних меню:

var menu = new UI.Menu({
  sections: [{
    title: 'First section',
    items: [{
      title: 'First Item',
      subtitle: 'Some subtitle',
      icon: 'images/item_icon.png'
    }, {
      title: 'Second item'
    }]
  }]
});
person Chris    schedule 19.03.2015
comment
Спасибо - я попробую еще раз сегодня вечером, хотя я почти уверен, что пробовал раньше. - person phatskat; 19.03.2015

Pebble SDK 2 или 3? До версии 3 ресурсы изображений нужно было предварительно конвертировать из PNG в PBI. Подробнее о том, какие форматы оригинал (ака Аплит) и Время (ака Базальт) Галька.

person M.W.    schedule 12.03.2015
comment
SDK 2 — похоже, что компилятор в CloudPebble уже конвертирует образ в PBI. Я могу подтвердить, что изображение будет работать как значок для приложения в меню, если я установлю menuIcon: true в appinfo.json, просто кажется, что оно испортится, когда я хочу использовать его в собственном меню моего приложения в качестве значка. - person phatskat; 12.03.2015
comment
В SDK2 изображения PNG автоматически конвертировались в PBI. - person Chris; 17.03.2015