Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Использование компонентов в Macromedia Flash #7


Информационный Канал Subscribe.Ru

Выпуск №7.

Доброе время суток. Не за горами начало нового учебного года, и рассылка в связи с этим обстоятельством будет выходить с заявленной периодичностью 1 раз в неделю, в то время как сейчас порядка 1,5-2 раза в неделю. Недавно мы обсудили самый простой компонент - Label, сегодня мы поднимем занавес над компонентом ProgressBar. И по традиции обратимся к мануалу Flash.

Перевод: Using Components > Components Dictionary > ProgressBar component > About the ProgressBar component

О компоненте ProgressBar

Компонент ProgressBar показывает прогресс загрузки данных. Процесс загрузки может быть определенным и неопределенным. Определенный - линейное представление задачи прогресса через какое-то время и используется, когда объем загружаемых данных известен. Неопределенный используется, когда объем загружаемых данных не известен. Можно добавить текст, который будет показывать информацию о загружаемых данных.

По умолчанию, компоненты экспортируются в первый кадр. Это означает, что компоненты будут загружены в фильм до начала проигрывания первого кадра. Если требуется создать предзагрузчик, то необходимо отключить экспорт в первый кадр в диалоге Linkage (он доступен в меню библиотеки фильма). Однако сам ProgressBar должен быть установлен для экспорта в первый кадр, чтобы полностью эмулировать предзагрузчик.


Перевод: Using Components > Components Dictionary > ProgressBar component > Using the ProgressBar component

Использование компонента ProgressBar

ProgressBar позволяет показывать прогресс загрузки данных. Имеется несколько способов (режимов) использования компонента ProgressBar. Тип режима можно установить с помощью инспектора свойств (параметр mode). Наиболее используемы два режима: event и polled. Первый режим использует события продвижения (progress) и окончания (complete) загрузки данных (event - событие), второй использует для своей работы методы getBytesLoaded() и getBytesTotal(). Компонент ProgressBar также поддерживает режим manual (ручного управления), в котором вручную определяются свойства maximum, minimum, и indeterminate, и используется метод ProgressBar.setProgress() для установки количества загруженных данных.

Параметры ProgressBar

Для каждого экземпляра компонента ProgressBar в инспекторе свойств или инспекторе компонента можно изменить следующие параметры:

  • mode - режим работы компонента ProgressBar. Может принимать одно из 3-ех значений: event, polled, или manual. Значение по умолчанию - event.

  • source - строка, которая будет преобразована в объект, представляющая имя экземпляра источника.

  • direction указывает направление, в котором продвигается полоса прогресса. Данное свойство может быть принимать следующие значения: right(правое) или left (левое). Значение по умолчанию right.

  • label - текст, отображающий прогресс загрузки. Этот параметр - строка в формате "%1 out of %2 loaded (%3%%)". В этой строек %1 - указывает количество загруженных байтов, %2 - общие количество байт, и %3 - процентное отношение загруженных данных к их общему количеству. Символы "%%" означают отображение символа процента - "%". Если величина для %2 неизвестна, на ее месте будут стоять два знака вопроса (??). Если свойство неопределенно, то текст не будет показан.

  • labelPlacement указывает положение текста полосы прогресса. Параметр может принимать одно из следующих значений: top, bottom, left, right, center. Значение по умолчанию - bottom.

  • conversion - число, на которое будут поделены величины %1 и %2 в свойстве label перед тем как будут отображены. Значение по умолчанию - 1.

Использование компонента ProgressBar в проекте

Следующий план объясняет, как добавить компонент ProgressBar к фильму на этапе проектирования. В примере компонент работает в режиме event. В режиме event отображение прогресса загрузки данных основано на использовании событий progress и complete.

  1. Перетащите компонент ProgressBar с панели Components на сцену.
  2. В инспекторе свойств сделайте следующее:
    • Введите имя экземпляра pBar.
    • Установите параметр mode в значение event.
  3. Перетащите компонент Loader с панели Components на сцену.
  4. В инспекторе свойств имя экземпляра для данного компонента loader.
  5. Выделите ProgressBar и в инспекторе свойств для параметра source введите loader.
  6. Выделите первый кадр, откройте панель Actions, и введите следующий код, который загружает JPEG файл в компонент Loader:
    loader.autoLoad = false;
    loader.contentPath = "http://imagecache2.allposters.com/images/86/017_PP0240.jpg";
    pBar.source = loader;
    // loading does not start until load() is invoked
    loader.load();
    

В следующем примере используется режим polled. В данном режиме отображение прогресса осуществляется за счет применения методов getBytesLoaded() и getBytesTotal().

  1. Перетащите компонент ProgressBar с панели Components на сцену.
  2. В инспекторе свойств сделайте следующее:
    • Введите имя экземпляра pBar.
    • Установите параметр mode в значение polled.
    • Введите для параметра source значение loader.
  3. Выделите первый кадр, откройте панель Actions, и введите следующий код, который создает объект Sound (переменная loader) и вызывает его метод loadSound() для загрузки звука в фильм:
    var loader:Object = new Sound();
    loader.loadSound("http://soundamerica.com/sounds/sound_fx/A-E/air.wav", true);
    

В следующем примере используется режим manual. Ручной режим управления подразумевает самостоятельную установку свойств maximum, minimum, indeterminate и использование метода setProgress() для отображения процесса загрузки данных.

  1. Перетащите компонент ProgressBar с панели Components на сцену.
  2. В инспекторе свойств сделайте следующее:
    • Введите имя экземпляра pBar.
    • Установите параметр mode в значение manual.
  3. Выделите первый кадр, откройте панель Actions, и введите следующий код, который вручную устанавливает количество загруженных данных с помощью метода setProgress():
    for(var:Number i = 1; i <= total; i++){
      // insert code to load file
      pBar.setProgress(i, total);
    }
    

Сводка класса ProgressBar вынесена в дополнительный материал. Напомню, что сводки классов включают перечень всех свойств, методов и событий рассматриваемого класса, в том числе и наследуемые.

А здесь мы рассмотрим свойства и методы, принадлежащие непосредственно классу ProgressBar.

Перевод: Using Components > Components Dictionary > ProgressBar component > ProgressBar.complete

ProgressBar.complete

Использование

Вариант 1:

on(complete){
  ...
}

Вариант 2:

listenerObject = new Object();
listenerObject.complete = function(eventObject){
  ...
}
pBar.addEventListener("complete", listenerObject);

Объект события

В дополнении к стандартным свойствам объект события ProgressBar.complete имеет два специфичных свойства: current (текущее количество загруженных данных), и total (общие количество).

Описание

Событие; оповещает все зарегистрированные листнеры после завершения загрузки данных.

Первый вариант обработки события использует синтаксис on() и должен быть расположен непосредственно на экземпляре ProgressBar. Ключевое слово this, внутри конструкции on() указывает на экземпляр компонента. Например, следующий код, расположенный на экземпляре pBar, посылает строку "_level0.pBar" в панель Output:

on(complete){
  trace(this);
}

Второй вариант основан на использовании модели генератор-листенеры. Экземпляр компонента (pBar) генерирует событие (в данном случае complete), и вызывает функцию обработчик листенера, имя которой совпадает с названием события. При вызове функции ей передается объект события, который содержит информацию о наступившем событии. С помощью метода EventDispatcher.addEventListener() регистрируется листенер для определенного типа события.

Пример

Регистрируется объект листенер для события complete. Реакция на произошедшее событие будет вывод сообщения в панель Output:

form.complete = function(eventObj){
  // eventObj.target is the component that generated the complete event,
  // i.e., the progress bar.
  trace("Current ProgressBar value = " + eventObj.target.value);
}
pBar.addEventListener("complete", form);

ProgressBar.conversion

Свойство; Число, на которое будут разделены величины: количество загруженных байт и общие число байт. После этого полученный результат выводиться на экран в поясняющей строке компонента. Применяется для преобразования единиц измерения.

Берется пол от деления, т.е. число, округленное до меньшего целого (например, 4.6 возвращает 4).

ProgressBar.progress

Событие; происходит при изменении состояния процесса загрузки. Доступно два варианта использования: в стиле Flash 5 и на основе модели генератор-листенеры. Особенности применения аналогичны событию ProgressBar.complete. Только для режимов "manual" и "polled".

ProgressBar.setProgress(completed, total)

Метод; устанавливает текущее состояние процесса загрузки в режиме "manual". Первый параметр задает количество уже загруженных данных и связан со свойством value (доступно только для чтения). Параметр total - объем данных и связан со свойством maximum.

ProgressBar.source

Свойство; указатель на экземпляр, который будет загружен. Используется в режимах "event" и "polled". Компонент ProgressBar может использоваться данные в пределах приложения, включая _root.

Подведём итоги

Компонент ProgressBar является инструментом организации внешней загрузки данных, например фильмов, картинок. Применяется для отображения состояния загрузки. Визуально представляет собой графическую полосу прогресса с описательным текстом. Компонент может работать в трех режимах. Первый - событийный (event), основан на том, что контейнер генерирует события progress и complete, соответственно сообщая о получении новой порции данных и окончания загрузки. Второй режим - опрашиваемый (polled), использующий методы getBytesLoaded() и getsBytesTotal() клипов для вычисления состояния процесса загрузки. Используя данный режим можно, например, создать и внутренний предзагрузчик, указав в качестве источника _root. Третий и последний режим - ручной (manual), применяется для самостоятельного отображения загрузки данных. В описательном тексте вы можете выводить количество загруженных данных, их общий объем, и процент загрузки, которые будут обновляться автоматически. Благодаря наличию особого параметра становится возможным использовать любую размерность данных, которая будет высчитываться на лету. Можно было и не упоминать тот факт, что имеется возможность изменять расположение текста и направление продвижения полосы прогресса.

Применение компонента не должно вызывать труда, как всегда уязвимым местом становиться дополнительное увеличение размера фильма в случае использования компонентов. Откровенно говоря использования только одного конкретного компонента с размерной точки зрения не оправдано, правда здесь могут быть исключения, которые относятся к сложным компонентам, где быстрота разработки и получаемый результат с лихвой перекрывают затраты на дополнительный размер к фильму. В этом свете можно порекомендовать использовать компоненты в совокупности, что, в конечном счете, оправдает себя. Если подойти с другого края, то увеличение размера проекта - это плата за универсальность, и в итоге за сокращение время, затраченное на разработку. Одним из ярких примеров является VCL в Delphi, где наипростейшее приложение сделанное с использованием компонентов и непосредственно средств API отличается в размерах порядка 10-20 раз. Однако время создания может приближаться к этим же числам, только уже в другую сторону. Во Flash это не так ярко выражено, в связи с тем, что некоторые компоненты дублируют стандартные инструменты, добавляя новую функциональность, тем не менее ситуация аналогична. Поэтому вопрос относительно размера проекта с компонентами и без них будем считать закрытым.

На сегодня все. До встречи...


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: inet.webbuild.flashmx
Отписаться
Вспомнить пароль

В избранное