Северный (Арктический) федеральный университет им. М.В. Ломоносова
Опубликован: 10.04.2014 | Доступ: свободный | Студентов: 6837 / 1233 | Длительность: 14:18:00
Специальности: Программист
Самостоятельная работа 11:

Установка и настройка среды программирования Intel XDK. Создание первых приложений

< Лекция 8 || Самостоятельная работа 11: 123456

19.5 Разработка приложения на основе шаблона

Разрабатывать приложения можно не только на основе пустого шаблона, но и воспользоваться встроенными примерами и создать на их базе собственное. Для этого достаточно в окне создания приложения выбрать пункт "Work with a Demo" выбрать понравившийся пример ( рис. 19.15).

Выбор встроенного примера

увеличить изображение
Рис. 19.15. Выбор встроенного примера

Рассмотрим, например, приложение "Orientation". Для этого выберем его в списке и нажмем на кнопку "Next". Зададим имя нашему проекту и нажмем кнопку "Create". Получим следующий код ( рис. 19.16). Рассмотрим его поподробнее.

Код приложения "Orientation"

увеличить изображение
Рис. 19.16. Код приложения "Orientation"

Для начала заметим, что автоматически были созданы 3 директории: для таблиц стилей, для изображений и для скриптов, а также ряд вспомогательных файлов.

Остановимся подробнее на скрипте main.js. Остальные два особого интереса не представляют: intelxdk.js нам уже знаком, встроенный скрипт отвечает за начальные соотношения ширины и длины, настройки портретной и альбомной ориентации.

Итак, функция init начинает свою работу в момент, когда приложение уже загружено, а библиотека JavaScript еще нет и передает значения ширины и высоты для встроенного скрипта.

Далее прописан запрет на изменения размера приложения (скроллинг) как реакция на событие touchmove.

preventDefaultScroll = function(event) 
{
    // Prevent scrolling on this element
    event.preventDefault();
    window.scroll(0,0);
    return false;
};
window.document.addEventListener("touchmove", preventDefaultScroll, false);
/*
    

Как только все библиотеки Javascript, в том числе Intel XDK, загружены, возникает событие intel.xdk.device.ready. В ее обработчике onDeviceReady() помимо описанных в "чистом" шаблоне команд по скрытию окна заставки прописана фиксация текущей ориентации (intel.xdk.device.setRotateOrientation("any")) и возможность отслеживания поворотов (intel.xdk.device.setAutoRotate(true)). Команда intel.xdk.device.managePower(true,false) не дает приложению перейти в спящий режим.

function onDeviceReady()
{
    //lock orientation
    intel.xdk.device.setRotateOrientation("any");
    intel.xdk.device.setAutoRotate(true);
        
    //manage power
    intel.xdk.device.managePower(true,false);

    //hide splash screen
    intel.xdk.device.hideSplashScreen();
}
    

Теперь можно заняться отслеживанием события "Поворот" и изменением свойств изображения imagesid и трех текстовых элементов-слоев headlineid, bottomed, endingid. За это у нас будет отвечать обработчик intel.xdk.device.orientation.change.

За портретную ориентацию отвечают значения 0 и 180, за альбомную 90 и 270 в соответствии со значением градусов поворота. Остается в зависимости от текущего значения ориентации задать соответствующие адреса изображений для imagesid и имена классов для объектов imagesid, headlineid, bottomed, endingid - одни для альбомной, другие для портретной. Все стилевые свойства прописаны классами в подключенной таблице стилей main.css.

function orientationchange(value)
{
    //Portrait orientation
    if(value.orientation == 0 || value.orientation == 180)
    {
document.getElementById("imagesid").className="portrait";
document.getElementById("imagesid").src="./images/Icon-Phone-V.png";
document.getElementById("headlineid").className="headline";
document.getElementById("bottomid").className="bottom";
document.getElementById("endingid").className="ending"; 
    }
    //Landscape orientation
    else
    {
document.getElementById("imagesid").src="./images/Icon-Phone-H.png";
document.getElementById("imagesid").className="imglandscape";
document.getElementById("headlineid").className="headline headlinelandscape";     
document.getElementById("bottomid").className="bottom bottomlandscape";
document.getElementById("endingid").className="ending endinglandscape";
    }  
}
    

Проект готов, проверен в режиме эмуляции, можно приступать к его тестированию и отладке, сборке и компиляции.

< Лекция 8 || Самостоятельная работа 11: 123456
Марат Нуриджанян
Марат Нуриджанян

Пример: Скачать среду можно с сайта для разработчиков Android (http://developer.android.com/sdk/index.html).

Там скачать можно только Android Studio

Владимир Каункин
Владимир Каункин

В самостоятельной работе 2 в примере решения задания некорректно загадывается число (в двух местах), выбирая случайное целое число из диапазона [0, 99] вместо [1, 100], как того требует условие. Кроме того, загадывание числа всё таки лучше вынести в отдельный метод, как мне кажется.