FAQ — различия между версиями

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
Строка 1: Строка 1:
 +
== Общие вопросы ==
 +
 +
 +
1) Как делается сборка на устройство?
 +
 +
2) Как переопределять существующие классы (объекты) и создавать свои?
 +
 +
3) Как добраться до исходного кода сцены, что-бы что-то дописать, или все управление объектами реализуется через машины состояний?
 +
 +
4) Необходима ли очистка памяти вручную, или есть сборщик мусора? И как можно мониторить память приложения?
 +
 +
5) Предусмотрена ли различная настройка (расстановка) объектов для разных расширений экранов? Может есть возможность выбора одного из нескольких файлов настроек (xml и т.д.), в зависимости от расширения экрана текущего устройства? И если да, то этот выбор происходит автоматически, или надо прописывать его в коде вручную?
 +
 +
6) Предусмотрена ли автоматическая подгрузка графики для retina-экрана? На подобии нативной iOS'овской или cocos'овской подгрузки файлов с суфиксом "@2x".
 +
 +
7) Есть ли анимция "Ease" (как в cocos2d), или подобные эффекты надо писать вручную?
 +
 +
8) Есть ли анимция переходов между сценами, перелистывания страниц, или надо писать вручную?
 +
 +
9) Если необходимо сделать рисовалку (разрисовку), то ее прийдется писать на Marmalade самостоятельно, или у Вас уже есть что-то подобное во фреймворке?
 +
 +
10) Как можно пользоваться внутренней базой данных приложения (например, папка "Documents" приложения в iOS) для сохранения туда файлов?
 +
 +
11) Как можно работать с нативными фичами ОС'ей (подгрузка фото из альбома пользователя и т.д.)?
 +
 +
12) Как можно работать с нативными фичами девайсов (акселерометр и т.д.)?
 +
 +
13) Как реализовать программную генерацию сцен (подгрузка графики, расстановка объектов и т.д.)? Необходимо для создание динамичных сцен, содержимое которых может меняться.
 +
 +
 +
 +
 +
 +
== Сборка ==
 +
 
Q: Хочу применить действие Move к кнопке с помощью машины состояний, но не могу разобраться как это сделать.
 
Q: Хочу применить действие Move к кнопке с помощью машины состояний, но не могу разобраться как это сделать.
 
В методе Move нету выбора объекта.
 
В методе Move нету выбора объекта.

Версия 07:26, 3 марта 2013

Общие вопросы

1) Как делается сборка на устройство?

2) Как переопределять существующие классы (объекты) и создавать свои?

3) Как добраться до исходного кода сцены, что-бы что-то дописать, или все управление объектами реализуется через машины состояний?

4) Необходима ли очистка памяти вручную, или есть сборщик мусора? И как можно мониторить память приложения?

5) Предусмотрена ли различная настройка (расстановка) объектов для разных расширений экранов? Может есть возможность выбора одного из нескольких файлов настроек (xml и т.д.), в зависимости от расширения экрана текущего устройства? И если да, то этот выбор происходит автоматически, или надо прописывать его в коде вручную?

6) Предусмотрена ли автоматическая подгрузка графики для retina-экрана? На подобии нативной iOS'овской или cocos'овской подгрузки файлов с суфиксом "@2x".

7) Есть ли анимция "Ease" (как в cocos2d), или подобные эффекты надо писать вручную?

8) Есть ли анимция переходов между сценами, перелистывания страниц, или надо писать вручную?

9) Если необходимо сделать рисовалку (разрисовку), то ее прийдется писать на Marmalade самостоятельно, или у Вас уже есть что-то подобное во фреймворке?

10) Как можно пользоваться внутренней базой данных приложения (например, папка "Documents" приложения в iOS) для сохранения туда файлов?

11) Как можно работать с нативными фичами ОС'ей (подгрузка фото из альбома пользователя и т.д.)?

12) Как можно работать с нативными фичами девайсов (акселерометр и т.д.)?

13) Как реализовать программную генерацию сцен (подгрузка графики, расстановка объектов и т.д.)? Необходимо для создание динамичных сцен, содержимое которых может меняться.



Сборка

Q: Хочу применить действие Move к кнопке с помощью машины состояний, но не могу разобраться как это сделать. В методе Move нету выбора объекта. В методе Set есть выбор объекта, но для него можно задать только состояние. А состояние для кнопки я описать не могу - у нее нету поля states.

A: Кнопку надо поместить в группу машины, а в машине задать состояние в котором будет move. Тоесть необходимо 2 объекта: 1) машина 2) кнопка машина может быть без ресурса. В таком случае подобъекты будут двигаться вместе с корневым объектом и наследовать все его свойства. Тоесть, если сделать корневому объекту scale, то и подобъекты отмасштабируются тоже


Q: как изменить точку пивота?

A: Точка пивота меняется в редакторе ресурсов. Если надо в одном месте чтобы у ресурса была точка пивота в одних кординатах, а в другом - в других - надо несколько ресурсов одинаковых по виду, но с разными точками пивота. Выбирается ресурс, ставится галочка "edit pivot" - можно будет тянуть красный крестик на рисунке, потом снимается галочка и для надёжности "apply"


Q: у некоторых ресурсов с прозрачностью есть артефакты в виде черных (серых) пикселей либо по линии прямоугольника текстуры, либо по кривой - линии перехода непрозрачных и прозрачных пикселей. Как можно устранить этот эффект?

A: добавть бордер из прозрачных пикселей к графическому ресурсу в редакторе ресурсов


Q: Как называется параметр "текущая колонка"/"текущая строка" у объекта "таблица"? Мне необходимо менять этот параметр с помощью "set->obj-par-val"?

A: curCol/curRow Да. После установки параметра переведите таблицу в состояние refresh.


Q: Есть вопросы по imagePicker'у textEdit'у. 1) Мне надо добраться к альбому фотографий, выбрать фото, если можно, то откадрировать его (больше-меньше, влево-вправо, поворот) и вставить фото в рамочку на сцене. Также необходимо запомнить выбранное фото и при последующих входах на сцену отображать его в рамочке.

A: 1) на данный момент picimage умеет кадрировать, но не умеет поворачивать. Выбранное фото можно сохранить выбранному объекту состоянием save. если фотография поменяется, то ранее сохранённый ресурс пропадёт. если надо ещё на каких-то экранах показать его можно а) объект положить на отдельную сцену и расшарить её на необходимые экраны б) вытянуть у первого объекта id ресурса и задавать его в другим объектам

пример добавления фотографии: http://ge.absolutist.com/index.php/Imagepiker


Q: У textEdit'а необходимо после ввода имени (завершения редактирования строки) записать его в файл статистики и отображать в поле при последующих входах на сцену.

A: В данный момент объект Edit сохраняет имя игрока для профиля. Текст который будет доступен по параметру pномер_игрока.name(на пример p0.name) (<p2 name="fghfghfg" />) для сохранения текста необходимо в объекте типа options указать поле, после введения текста перевести его (объект типа options) в стостояние save (сохранится в .name). Обратиться к тексту можно через объект типа options. Количество игроков можно получить по параметру max_player, текущего по cur_player в объекте типа options. объект типа options лучше всего иметь один на весь проект и разместить его лучше всего на отдельном глобальном экране. про профили и edit\: http://ge.absolutist.com/index.php/Edit


Q: я хочю программно анимировать картинку, "высовывая" ее, тоесть показать верхние 10%, потом 20% и т.д. до 100%. можно, конечно, вырезать из бекграунда большие куски-заглушки, наложить их поверх картинки и двигать ее не "обрезая" программно, но эти заглушки получатся слишком большими. да и "высовывающяяся" картинка на сцене не одна (их 8 штук).

A: есть 2 варианта: или вырезать заглушки из фона, или попробовать сместить точку пивота у объекта и показывать его scale-ом


Q: добавил новый BasicGraphics(1280-800) (перед этим собирал на iPad Landscape), все объекты, естественно, перенеслись на 1280х800, но меня смущают позиции: Х левого края экрана равен -512 (хотя должен быть -640), правый - +768 (вместо +640). Тоесть центр (пивот, если я не ошибаюсь) у сцены 1280х800 остался как у сцены 1024х768. В принципе, можно работать и так, но хотелось бы перенести пивот сцены в ее геометрический центр (640; 400). Как это можно сделать?

A: пли добавлении нового лэйоута координаты сцен не пересчитываются и они помещяются на новый лэйоут со старыми координатами. можно просто поменять координаты сцены на нужные и она станет на место


Q: Можно получить от imagepicker какой-то callback? Обьясню зачем: по нажатию на кнопку у меня вызывается load для imagepicker и move для диалогового окна (imagepicker лежит в подгруппе этого окна). Эти операции идут подряд в одной машине, но диалоговое окно выезжает только после выбора фото imagepicker-ом, либо после отмены выбора. И вот, если я отменяю выбор, то диалоговое окно выезжает пустым (с кнопкой ОК, но без фотографии для редактирования). Как правильно проверить, произошел ли выбор фото или произошла отмена выбора (для того, чтобы не открывать диалоговое окно)?

A: у picimage есть 2 добавляемых параметра: картинка загружена и картинка отменена


Q: можно ли в проекте задать параметр автомасштабирования или что-то в этом роде? У Мармелада есть VirtualWidth и VirtualHeight, которые масштабируют размеры выртуального экрана (который я создаю) под размеры физического экрана девайса. В конструкторе подобные настройки есть? Вопрос возник после того, как мы попытались запустить на Kindle apk, собранный с экраном BasicGraphics(1280-800)_Amazon_Lite. apk вылетала, не загружаясь.

A: Если падение без ошибок, то вероятно переполнилась видеопамять. Необходимо уменьшить значение в app.icf (system\temp\projects\Absolutist\project\common). Для масштабирования в viewer.xml используются такие параметры:

   sx - ручное масштабирование по х
   sy - ручное масштабирование по y
   x - сдвиг изображения по x
   y - сдвиг изображения по y
   autoPosX - автоматическое позиционирование по х
   autoPosY - автоматическое масштабирование по y
   autoScX - автоматическое масштабирование по x
   autoScY - автоматическое масштабирование по y 

Примеры настроек и более подробно про настройку масштабирования: http://ge.absolutist.com/index.php/%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82,_%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82_%D0%B8_%D1%80%D0%B5%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0 [28.01.2013 14:33:12] Сергей: Проверить хватит ли памяти указаной в app.icf можно на вьювере под windows(при условии что экспорт проекта будет не масштабирован). Для этого необходимо в папке редактора отредактировать app.icf параметр для редактирования: MemSize


Q:при запуске приложения на девайсе наблюдается притормаживание (секунд 5-10). Анимации и прочее заметно тормозят и дергаются. Через секунд 5-10 притормаживание проходит и все работает отлично. Как исправить эту проблему?

A: Для более быстрой загрузки можно включить предзагрузку экранов, но это в нагружет устройство - в фоне после открытия текущего экрана загружется в память графика выбранных экранов. Подтормаживания в начале появляются из-за одновременного запуска большого количесва объектов и фоновой загрузки, если она включена. Также нагружают устройсво несколько одновременно запускающихся патиклов. Настройки предзагрузки можно посмотреть в project->project options Вкладка Preloading screens содержит экраны на которые возможен переход с текущего, в вкладке Button setup сожержатся _все_ кнопки проекта, на которых указан переход на другой экран. Отключение предзагрузки на кнопке дублирует отключение в Button setup(если в одном из двух мест отключить, то и в оставшемся тоже отключится) Для отключения предзагрузки её надо отключить как на кнопке, так и на Preloading screens. Для более плавного запуска можно: запускать анимацию и дествия с небольшой задержкой после загрузки экрана и желательно не одновременно.


Q: Можно вставить прелаудер с некоторой задержкой? Достаточно установить first loading bg/bar в options, или надо делать прелаудер-сцену в начале запуска приложения?

A: first loading bg/bar - это графические ресурсы для индикатора загрузки в первый раз при открытии приложения.

Для отображения какой-то активности при переходе между экранами можно добавить ресурс в поле activity и в loading bg/bar (для бара лоадинга соответственно должно быть включено отображение его progressbar="0" или должен отстутсвовать, или =1 + указано в объекте options что бар надо отображать) на activity настройки прогресбара не распостраняются.


Q: при переходе между сценами появилась белая полоска-прогресс-бар. Можно ли ее убрать или заменить на наш loading? Это и есть loading bar в options?

A: Белую полоску можно убрать поставив параметр progressbar="0" в viewer.xml соответсвующей платформы в тэг default. пример viewer.xml:

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<viewer>
    <banners />
    <globaltop   />
 <flurry game_id=""/>
    <dev w="-1" h="-1" autoPosX="1" autoScX="0" autoScY="1" nm="Fit height" />
    <default prj="project.seproj"  video_memory="64715200" color_aabbggrr="ff000000" scr="0" lay="0" progressbar="0" /> 
</viewer> 

system\temp\projects\Absolutist\project здесь находятся viewer.xml для разных платформ