Опубликован: 07.11.2006 | Доступ: свободный | Студентов: 3398 / 338 | Оценка: 3.94 / 3.71 | Длительность: 37:11:00
Лекция 19:

Flash, ColdFusion и Remoting

< Лекция 18 || Лекция 19: 1234567
Компоненты

PMA состоит преимущественно из компонентов, которые либо поставляются с Flash MX, либо могут быть загружены с Macromedia Exchange для Flash по адресу www.macromedia.com/exchange/flash. Мы используем компоненты PushButton, ListBox и ScrollBar, каждый из которых поставляется с Flash MX, а также компоненты Calendar и MessageBox из Flash UI Components Set 2, которые придется заимствовать из Exchange.

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

Фильм Flash
  1. Создайте новый фильм, сохраните его в файле pma.fla и настройте вашу временную шкалу следующим образом.

  2. В слое background нарисуйте рамки, создающие структуру для компонентов, аналогично тому, как это показано на рисунке.

    Небольшое белое поле содержит окно данных (компонент MessageBox) со списком контактов. В левом нижнем углу большого белого поля располагается календарь, а в правой части элементы управления вводом и кнопки.

  3. Слой nav button содержит ссылку на приложение контактов, которая в дальнейшем может быть дополнена, если понадобится добавить другие приложения. В моей версии она расположена в левом верхнем углу интерфейса.

  4. Слой static text содержит весь статический текст и поля для пользовательского интерфейса, указанные на следующем рисунке.

  5. Слой dynamic text состоит из набора текстовых полей для ввода, расположенных в правой части рабочего места. Они представляют собой простые текстовые поля для вода данных, с именами переменных first_name, last_name, address, city, state, zip, phone и email, соответственно. Под заголовком Notes добавьте текстовое поле для ввода с именем инстанса notes.
  6. Наконец, добавим компоненты.

Закончив настройку графических элементов сайта, рассмотрим код.

Инициализация приложения
  1. Выберите кадр 1 слоя AS и откройте панель Actions. Добавьте файлы, содержащие классы Flash Remoting, о которых мы говорили ранее. Они предоставляются Macromedia при инсталляции Flash Remoting.
    #include "NetServices.as"
    #include "NetDebug.as"
    #include "DataGlue.as"

    Красота этих выражений включения состоит в том, что вам не нужно знать, как выглядит код внутри них, чтобы обеспечить их работу. Нужно просто знать необходимые методы, доступные разработчику, и их предназначение. Это прекрасный пример создания приложений на базе компонентов. Разработчики могут писать необходимый код для осуществления определенных действий и передачи их дизайнерам или менее "продвинутым" разработчикам, которые смогут включить код и вызвать необходимые методы. Я отнюдь не рекламирую лентяйское отношение к программированию, а хочу показать, что код может быть распределен по компонентам, где применение отделено от интерфейса. Это значит, что внутренние действия не требуют понимания, когда доступны общие методы и возвращаются ожидаемые результаты.

    Файл NetDebug.as не обязателен для корректной работы этого приложения. Он в основном используется совместно с NetConnect Debugger (Window > NetConnection Debugger) как вспомогательный файл в процессе отладки. Как только приложение готово к публикации, эта строка может быть удалена или закомментирована для уменьшения размера файла (хотя ее размер не так уж велик).

    Когда необходимые классы Flash Remoting включены, нужно инициализировать приложение. Это одна из наиболее важных частей процесса, так как для начала связи с сервером необходимо установить подключение к шлюзу Flash. Следующие шаги описывают код, необходимый для инициализации PMA.

  2. Начните с добавления переменной inited:
    if (inited == null)  {
      inited = true;

    Это нужно лишь для того, чтобы код, содержащийся в выражении if, выполнялся только один раз. После начального запуска кода inited устанавливается на значение true, и код не будет выполняться повторно до тех пор, пока браузер не будет обновлен или пользователь не покинет PMA и вернется в него. В данном случае это не обязательно, так как приложение содержит только один кадр. Этот код будет полезным в фильме, циклически возвращающемся в последний кадр несколько раз, так как следует избегать повторных инициализаций PMA.

  3. Теперь нужно добавить несколько строк кода для установки параметров некоторых из компонентов на рабочем месте.
    // disable the save clip since it won't be accessible 
    // until the user decides to add a new contact 
    save_mc.setEnabled(false);
    
    // set the size of the contacts ListBox 
    contacts_mc.setSize(200, 120);
    
    // set the height of the scroller 
    notes_scroller_mc.setSize(79);
  4. Здесь нужно обеспечить поддержку начального соединения со шлюзом Flash. URL шлюза по умолчанию, в целях тестирования, будет ссылаться на localhost.
    NetServices.setDefaultGatewayUrl
      ("http://localhost/flashservices/gateway");

    Как только PMA попадет в среду разработки, этот адрес понадобится для изменения доменного имени или IP-адреса хост-сервера. Такая мера предосторожности предотвращает возможность осуществлять вызовы служб, имеющихся на локальном сервере, внешними приложениями. Метод createGatewayConnection непосредственно создает подключение к серверу и ожидает вызова каких-либо служб. При вызове службы контактов подключение сохраняется в объекте, на который в дальнейшем будут осуществляться ссылки при вызове методов службы.

  5. Сначала создайте объект подключения шлюза, затем объект службы контактов, указывающий на CFC контактов.
    var gw = NetServices.createGatewayConnection();
    var contacts_service - gw.getService("pma.contacts", this);

    Имя службы является ссылкой на вызываемый CFC. Следовательно, pma.contacts соответствует компоненту contacts.cfc, сохраненному в директории pma (мы сейчас создадим этот компонент). Директория pma находится на уровне, расположенном сразу под корневым каталогом веб. Если структура директорий меняется, то соответствующим образом необходимо изменить и вызовы службы. Например, если директория pma находится по адресу \wwwroot\flashremoting\pma\contacts.cfc, эту службу можно вызвать так: flashremoting.pma.contacts. Это аналогично импортированию и обращению к пакетам Java в языке программирования Java. Мы просто заменяем слеш "\" точкой ".".

  6. Наконец, вызываем метод getAllContacts CFC, возвращающий набор записей всех контактов базы данных.
    contacts_service.getAllContacts();
    }
< Лекция 18 || Лекция 19: 1234567
Игорь Хан
Игорь Хан

у меня аналогичная ситуация. Однако, если взять пример из приложения (ball_motion_04_click for trial.fla) то след остается. при этом заметил, что в моем проекте в поле "One item in library" виден кружок, в то время как в приложенном примере такого кружка нет.

Вопрос знатокам, что не так?

Александр Коргапольцев
Александр Коргапольцев

объект созданый мной упорно не желает оставлять след(единственное что добился, так это то что шарик резво гоняется за курсором) функция duplicateMovieClip остаётся не активной, т.е. следа от объекта не остаётся, но если я тоже самый код вбиваю в учебный файл всё работает, не могу понять где я ошибаюсь и почему в документе созданном заново, не работает код начиная от функции duplicateMovieClip?