Статьи

Создайте свое собственное приложение Adobe AIR с помощью Flash

В этом уроке мы создадим приложение для чтения в Твиттере, используя ваши собственные обновления в Твиттере. Мы рассмотрим некоторые функции класса nativeWindow, как его подписать и сделать установочный пакет.


Давайте посмотрим на окончательное приложение, над которым мы будем работать:

С помощью этого плеера мы можем запустить любое приложение с расширением .air, например, новый Adobe Media Player . Сначала нам нужно установить проигрыватель Adobe AIR, поэтому перейдите в Adobe и загрузите проигрыватель . Выберите свою операционную систему и нажмите «Загрузить». Когда загрузка будет завершена, установите ее.

Теперь нам нужен наш второй элемент для разработки приложений AIR: расширение. В этом случае я использую тот для Flash CS3, но он также доступен для Flash CS4. Перейдите в центр поддержки Adobe Flash. Перед установкой обновления Flash для Adobe AIR необходимо загрузить и установить последнее обновление Flash Player (9.0.2), которое можно загрузить здесь: http://www.adobe.com/support/flash/downloads.html. # 902 .

Затем необходимо загрузить и установить обновление Adobe AIR для Flash CS3 Professional: http://www.adobe.com/support/flash/downloads.html .

На этом этапе, когда вы запускаете Flash CS3 или CS4, на экране приветствия у вас будет возможность создать файл Adobe AIR Flash. Сделай это! Установите размер сцены на 300 пикселей в ширину и 500 пикселей в высоту с 30 кадрами в секунду. Я выбрал белый цвет для фона. Сохраните его как «my-twitter-updates.fla».

Мы собираемся использовать изображение iPhone в качестве фона, поэтому зайдите на сайт Сэма Брауна (хорошие векторы) и загрузите пакет изображений iPhone . Откройте файл с помощью Fireworks или Photoshop и выберите любой размер (без текста), а затем экспортируйте как «bg_iphone.png».

Во Flash выберите «Файл»> «Импорт», затем импортируйте «bg_iphone.png» на сцену. Выберите его и выровняйте по центру по вертикали и горизонтали. Преобразуйте это изображение в символ мувиклипа с именем «mcIphone», затем перейдите в свойства и назначьте «twitterApp» в качестве имени экземпляра. Дважды щелкните символ и переименуйте первый слой как «bg_iphone». Теперь у вас должно быть что-то вроде следующего изображения:

Теперь перейдите и создайте новый слой для заголовка нашего приложения. Нарисуйте динамическое текстовое поле и присвойте ему «title_app» в качестве имени экземпляра.

Затем добавьте два новых слоя; первый называется «мои обновления», а второй — «следуй за мной». Создайте многострочное динамическое текстовое поле в слое «Мои обновления» со следующими свойствами:

  • 11 размер шрифта
  • многострочное текстовое поле
  • белый цвет
  • активировать визуализировать текст как HTML
  • назначить «myUpdates» в качестве имени экземпляра

Нам понадобится кнопка Follow Me на слое « Follow Me », поэтому нарисуйте прямоугольник в нижней части области iPhone и преобразуйте его в символ кнопки с текстом «Follow Me». После этого назначьте «btFollowme» в качестве имени экземпляра.

На данный момент нам нужны две кнопки; вверх и вниз для прокрутки содержимого текстового поля «мои обновления». Перейдите на панель временной шкалы и добавьте новый слой. Введите название «кнопки прокрутки», затем нарисуйте стрелку на сцене и преобразуйте ее в символ видеоролика. Для другой кнопки скопируйте, вставьте и переверните ее по вертикали. Назначьте «btUp» и «btDown» в качестве имени экземпляра. Наконец, вернитесь к основной временной шкале. Когда вы закончите, у вас должно получиться что-то вроде следующего изображения.

Во-первых, нам нужен URL вашего RSS-канала, поэтому перейдите на домашнюю страницу Twitter. Теперь нажмите на кнопку «Профиль» в верхней панели навигации. Перейдите на правую панель, щелкните правой кнопкой мыши на «Rss Feed of username » и скопируйте URL.

Давайте рассмотрим структуру наших обновлений в Twitter. Первая часть — это информация канала rss, а вторая часть — цикл обновлений. Мы будем использовать некоторые базовые узлы: ссылку на первую часть, title, pubDate и ссылку на элемент цикла.

Вернитесь во Flash и создайте новый слой для действий, пора начинать кодировать. Как видите, первая переменная содержит URL-адрес канала RSS из вашего профиля в Twitter, поэтому вставьте его в свой:

1
2
3
4
var twitterURL:String = «http://twitter.com/statuses/user_timeline/16211488.rss»;
  var twitterXML:URLRequest = new URLRequest(twitterURL);
  var myLoader:URLLoader = new URLLoader(twitterXML);
myLoader.addEventListener(«complete», xmlLoaded);

С помощью этой функции мы можем загрузить RSS и каждый перечисленный узел, прежде чем начинать определять переменные узлов xml:

1
2
3
4
function xmlLoaded(evtObj:Event) {
var twitter:XML = new XML(myLoader.data);
var TwitterTitle:String = twitter.child(0).description;
var UserUrl:String = twitter.child(0).link;

В этой части нам нужно получить значения узлов xml и присвоить их переменной myUpdates. Для этого используйте оператор for .

1
2
3
4
5
var myUpdates:String = «»;
    
  for each (var nodo:XML in twitter..item) {
  myUpdates += «<a href='»+nodo.link+»‘><font color=’#a4917c’>»+nodo.title+»</font></a><br>»+»<font color=’#a4bc34′>»+nodo.pubDate +»</font><br/><br/>»;
}

Сначала мы отображаем заголовок приложения, затем получаем обновления и, наконец, добавляем EventListener для кнопки Follow с URL-адресом пользователя (Пример: http://twitter.com/_dariux).

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
//THE TITLE APP > «Twitter updates from Darío Gutiérrez / _dariux.»
twitterApp.titleApp.text = TwitterTitle;
  
//Display the value of myUpdates into the textfield
twitterApp.myUpdates.htmlText = myUpdates;
  
//Actions for Follow Me button
twitterApp.btFollowme.addEventListener(MouseEvent.CLICK, btFollowme_CLICK);
 
  function btFollowme_CLICK(e:MouseEvent):void{
  var targetURL:URLRequest = new URLRequest(UserUrl);
  navigateToURL(targetURL);
  }
    
  }

Простой код для кнопок прокрутки, проверьте этот код:

01
02
03
04
05
06
07
08
09
10
11
//Listeners and functions for scroll buttons
  twitterApp.btUp.addEventListener(MouseEvent.CLICK, scrollUp);
twitterApp.btDown.addEventListener(MouseEvent.CLICK, scrollDown);
 
  function scrollUp(Event:MouseEvent):void {
  twitterApp.myUpdates.scrollV -=5;
  }
   
  function scrollDown(Event:MouseEvent):void {
  twitterApp.myUpdates.scrollV +=5;
  }

Протестируйте фильм (Управление по меню + Тестовый фильм или cmd + enter). Как видите, это обычное окно, как и при использовании обычного флеш-плеера. На следующем шаге мы настроим наше приложение, и вы заметите разницу.

Для настроек AIR в Flash CS4 выберите «Файл»> «Настройки AIR», а для Flash CS3 выберите «Команды> Настройки приложения AIR и установщика». В этом окне мы начнем настраивать приложение, поэтому давайте перейдем к полю описания и напишем некоторую общую информацию.

Стиль окна
Стиль окна интересен. Есть три стиля: хром, непрозрачный и прозрачный. Стиль Chrome похож на простое окно с кнопками, фоном и рамкой, Opaque — это окно с фоном, но без кнопок, а последний стиль Transparent — это окно без кнопок и фона. В нашем случае выберите прозрачный стиль.

Икона
Выберите значок (или дизайн) для вашего приложения в разных размерах 16px, 32px, 48px, 128px с расширением .png.

продвинутый
В этой опции вы можете выбрать различные настройки для окна при запуске приложения, опции для папок для установки и обновления.

Цифровая подпись
Если вы хотите отправить приложение AIR, вам понадобится цифровая подпись, которую установщик установит в системах других пользователей. В этом случае мы подпишем наше приложение ненадежным сертификатом, чтобы разрешить установку AIR во время выполнения в качестве непроверенного издателя. Если вам нужна дополнительная информация о том, как получить сертификат, перейдите по следующей ссылке: Цифровая подпись приложений Adobe AIR .

Место назначения
Выберите папку и название вашего приложения.

Включить файлы
Автоматически Flash выбирает некоторые файлы, необходимые для запуска приложения. Если вы используете другие файлы в своем приложении (например, анимацию caurina), вы должны включить эти файлы как часть приложения.

В этой части мы будем использовать класс «NativeWindow» и функцию «startMove ()», чтобы наше приложение могло перемещаться по всей стадии. Перейдите на слой действий и добавьте следующий код. Тогда проверьте это:

1
2
3
4
5
6
stage.addEventListener(MouseEvent.MOUSE_DOWN, moveWin);
 
 function moveWin(e:MouseEvent):void
 {
 stage.nativeWindow.startMove();
 }

Теперь наше приложение может перемещаться по всей стадии, но если вы хотите закрыть или свернуть, вы не можете. Идите и создайте две кнопки: свернуть (имя экземпляра btMinimize) и закрыть (имя экземпляра btClose), например, следующий снимок, но на этот раз вы должны использовать основной фрагмент ролика (twitterApp). Наконец, добавьте следующий код:

01
02
03
04
05
06
07
08
09
10
11
12
13
//Minimize button
  twitterApp.btMinimize.addEventListener(MouseEvent.CLICK, btMinimize_CLICK);
  function btMinimize_CLICK(e:MouseEvent):void
  {
stage.nativeWindow.minimize();
}
 
  //Maximize button
  twitterApp.btClose.addEventListener(MouseEvent.CLICK, btClose_CLICK);
  function btClose_CLICK(e:MouseEvent):void
  {
  stage.nativeWindow.close();
  }

Эта функция очень проста. Просто добавьте кнопку под кнопкой «Follow Me», чтобы создать новый слой внутри основного фрагмента ролика «twitterApp». Напишите «btAlwaysfront» в качестве имени экземпляра:

После того, как вы создали эту кнопку, зайдите внутрь и создайте еще один кадр, каждый со стоп-действием Цель состоит в том, чтобы иметь два состояния для кнопки. Первый кадр деактивирован, а второй активирован . Эта функция использует метод alwaysInFront из класса nativeWindow. После этого мы должны добавить действия к кнопке btAlwaysfront, поэтому перейдите в фрейм действий и вставьте следующий код:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
//Activate window always front
  stage.nativeWindow.alwaysInFront=false;
  twitterApp.btAlwaysfront.addEventListener(MouseEvent.CLICK, btAlwaysfront_CLICK);
  function btAlwaysfront_CLICK(e:MouseEvent):void
  {
if ( stage.nativeWindow.alwaysInFront!=true){
twitterApp.btAlwaysfront.gotoAndStop(2);
stage.nativeWindow.alwaysInFront=true;
}else{
twitterApp.btAlwaysfront.gotoAndStop(1);
stage.nativeWindow.alwaysInFront=false;
}
  
}
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
//Twitter rss url
  var twitterURL:String = «http://twitter.com/statuses/user_timeline/16211488.rss»;
  var twitterXML:URLRequest = new URLRequest(twitterURL);
  var myLoader:URLLoader = new URLLoader(twitterXML);
  myLoader.addEventListener(«complete», xmlLoaded);
   
  function xmlLoaded(evtObj:Event) {
  var twitter:XML = new XML(myLoader.data);
  var TwitterTitle:String = twitter.child(0).description;
  var UserUrl:String = twitter.child(0).link;
    
  var myUpdates:String = «»;
    
  //The loop
    
  for each (var nodo:XML in twitter..item) {
  myUpdates += «<a href='»+nodo.link+»‘><font color=’#a4917c’>»+nodo.title+»</font></a><br>»+»<font color=’#a4bc34′>»+nodo.pubDate +»</font><br/><br/>»;
  }
    
  //THE TITLE APP > «Twitter updates from Darío Gutiérrez / _dariux.»
  twitterApp.titleApp.text = TwitterTitle;
    
  //Display the valor of myUpdates into the textfield
  twitterApp.myUpdates.htmlText = myUpdates;
    
  //Actions for Follow Me button
  twitterApp.btFollowme.addEventListener(MouseEvent.CLICK, btFollowme_CLICK);
   
  function btFollowme_CLICK(e:MouseEvent):void{
  var targetURL:URLRequest = new URLRequest(UserUrl);
  navigateToURL(targetURL);
  }
    
  }
   
  /******************************************************
  Listeners and functions for scroll buttons
  ******************************************************/
  twitterApp.btUp.addEventListener(MouseEvent.CLICK, scrollUp);
  twitterApp.btDown.addEventListener(MouseEvent.CLICK, scrollDown);
   
  function scrollUp(Event:MouseEvent):void {
  twitterApp.myUpdates.scrollV -=5;
  }
   
  function scrollDown(Event:MouseEvent):void {
  twitterApp.myUpdates.scrollV +=5;
  }
 
 
/******************************************************
  AIR Zone
  ******************************************************/
  //Window move
  stage.addEventListener(MouseEvent.MOUSE_DOWN, moveWin);
   
  function moveWin(e:MouseEvent):void
  {
  stage.nativeWindow.startMove();
  }
 
 
  //Minimize button
  twitterApp.btMinimize.addEventListener(MouseEvent.CLICK, btMinimize_CLICK);
  function btMinimize_CLICK(e:MouseEvent):void
  {
  stage.nativeWindow.minimize();
  }
   
  //Maximize button
  twitterApp.btClose.addEventListener(MouseEvent.CLICK, btClose_CLICK);
  function btClose_CLICK(e:MouseEvent):void
  {
  stage.nativeWindow.close();
  }
 
 
  //Activate window always front
  stage.nativeWindow.alwaysInFront=false;
  twitterApp.btAlwaysfront.addEventListener(MouseEvent.CLICK, btAlwaysfront_CLICK);
  function btAlwaysfront_CLICK(e:MouseEvent):void
  {
if ( stage.nativeWindow.alwaysInFront!=true){
twitterApp.btAlwaysfront.gotoAndStop(2);
stage.nativeWindow.alwaysInFront=true;
}else{
twitterApp.btAlwaysfront.gotoAndStop(1);
stage.nativeWindow.alwaysInFront=false;
}
  
}

Чтобы опубликовать свой файл .air во flash CS4, откройте меню «Файл»> «Настройки AIR» и нажмите кнопку «Опубликовать файл AIR».

Для flash CS3 выберите «Команды> AIR — Создать файл AIR».

Тогда вы увидите новое окно (цифровая подпись). Выберите сертификат и введите свой пароль. Создание файла .air занимает некоторое время, но после его завершения вы увидите другое окно со следующим текстом «Файл AIR создан». Файл .air создается в том же рабочем каталоге, что и ваш .fla файл.

Как видите, у моего приложения есть тень. Если вы хотите стиль Windows, просто выберите основной мувиклип «twitterApp» и примените:

Итак, у нас есть приложение AIR! Это небольшое приложение, но я надеюсь, что оно поможет вам в качестве ссылки на разработку собственного. С помощью этой технологии мы можем разрабатывать потрясающие приложения, совместимые с такими API, как Twitter, Gmaps и Flickr. Есть много других функций, не описанных в этом руководстве, много возможностей для будущего руководства или краткого руководства! Спасибо за прочтение.