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

Интеграция динамических данных

< Лекция 15 || Лекция 16: 12345 || Лекция 17 >

HTML

dynamictext3a.fla также расширяет предыдущее приложение, прорисовывая импортированное сообщение в виде HTML. Новый текстовый файл содержит следующее.

message=<b>Message+of+the+dayHello!+
  This+is+your+message+of+ Кthe+day&photofile=photo1.jpg

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

Несколько переменных

Во всех предыдущих приложениях фильм Flash "знал", какие переменные встретятся в текстовом файле, и какими будут их имена. Если мы на самом деле хотим передать управление содержимым автору текстового файла, а не фильму, нужно изменять число переменных в текстовом файле.

Обновляемая отмеченная область

Сейчас мы создадим горизонтальную полосу прокрутки в стиле "marquee", которая будет брать любое количество одностроковых сообщений из текстового файла и отображать их одно за другим перед циклическим повторением.

Текстовый файл для этого приложения выглядит так (файл message3.txt на компакт-диске).

messagel=Sales+hit+3+million&:message2=New+product+launch+delayed&
Кmessage3=New+positions+available&message4=Finance+Director+retires&
Кmessage5=New+catalogue+out+next+month

Каждая из переменных message1:message5 содержит сообщение. Можно также добавить переменную, содержащую число сообщений, однако предлагаемый здесь метод упрощает редактирование текстового файла пользователем.

Фильм (dynamictext4.fla) состоит из 25 кадров. Первый кадр является пустым, если не считать действий, считывающих переменные из текстового файла. Второй кадр с именем offScreen содержит текстовое поле на стартовой позиции справа от области фильма. Впоследствии текстовое поле перемещается в центр фильма с помощью промежуточного движения перед паузой.

  1. Откройте новый проект Flash и установите размер рабочего места на значение около 400х50 пикселей. Затем создайте три слоя в новом проекте Flash и установите их так, как показано на рисунке ниже.

  2. Введите следующий код в кадр 1 слоя с действиями. Это по существу тот же самый код, который мы рассматривали, и здесь он используется для установки переменных аналогичным образом.
    messageURL = "message3.txt"
    counter = 1
    
    myVars_obj = new loadVars() 
    myVars_obj.onLoad = function() { 
      gotoAndPlay("offScreen");
    }
    myVars_obj.load(messageURL)
    stop()

    Счетчик переменных будет использоваться для получения имени переменной, к которой мы хотим получить доступ. Добавив counter в конец текстового сообщения ("message" + counter), мы получаем имя текущей отображаемой переменной, которой, в первом случае, будет message1. После этого мы можем увеличить counter для получения имени следующей переменной в списке.

    В данном приложении мы осуществляем доступ к переменным, хранимым в объекте loadVars немного иным образом. Вместо точечного синтаксиса мы используем синтаксис квадратных скобок или массива, чтобы можно было добавить выражение в качестве имени переменной.

    Следующие две строки эквивалентны.

    myVars_obj ["message1"]
    
    myVars_obj.mesage1

    Использование первого из этих методов позволяет нам написать следующее.

    message = myVars_obj ["message" + counter]

    Команда stop() останавливает работу до полной загрузки переменных, после чего активируется управляющий элемент onLoad. Здесь gotoAndPlay сообщает фильму, что настало время продолжить работу.

  3. Добавьте ключевой кадр в кадр 2 слоя с действиями и добавьте кадры вплоть до 24. Затем добавьте следующий код в кадр 2. Размещая код, отвечающий за настройку сообщения, в кадре 2, мы отделяем анимацию сообщений от загрузки сообщений из текстового файла. Это позволит увидеть, как анимация может быть заменена любым количеством методов реализации анимации Flash для создания различных типов приложений с сообщениями.
    if (typeof(myVars_obj ["message" + counter])!="string") {
      counter=1 
    }
    
    message = myVars_obj ["message" + counter]

    Ранее в этой лекции мы видели, что все переменные, загружаемые из текстового файла, будут строковыми, независимо от их значения. Этот кадр использует данную информацию для подтверждения того, что перед нами на самом деле переменная с запрашиваемым именем, проверяя, является ли она строковым значением. Если это не так, нужно вернуться по циклу к первой переменной, после чего counter установится на значение 1. После этой сортировки можно присвоить строку текущей переменной к переменной message, которая будет отображаться в текстовом поле.

    Такая проверка существования переменной означает, что можно изменять число сообщений просто редактируя текстовый файл и добавляя или удаляя переменные; в любом случае, число сообщений не кодируется в самом файле Flash.

  4. Добавьте ключевой кадр в кадр 25 слоя с действиями и введите следующий код:
    counter++
    gotoAndPlay ("offScreen");

    Здесь мы завершаем цикл, просто увеличивая счетчик на единицу, после чего переходим к кадру 2.

  5. В слое с сообщением добавьте ключевой кадр в кадр 2. Затем создайте текстовое поле, немного меньшее по размеру, чем рабочее место.

  6. Установите его в виде динамического текста с именем переменной message, как было в первых приложениях.
  7. После этого разместите его в левой части рабочего места.

  8. Теперь вставьте ключевой кадр в кадр 15 слоя сообщений, переместите текстовое поле обратно на рабочее место, где вы хотите расположить текст и создайте промежуточное движение между кадрами 2 и 15.
  9. Если вы сейчас поместите ключевой кадр в кадр 25 слоя сообщений для обеспечения паузы текста и экспортируете файлы SWF, вы завершите работу во Flash, и ваша временная шкала будет выглядеть примерно так.

  10. Наконец, используйте мой кодировщик для создания набора переменных, не забывая называть их именами message1, message2 и т.д., и вставьте сообщения в текстовый файл. Сохраните файл как message3.txt (или в виде того файла, на который вы ссылаетесь в коде) в той же папке, в которую вы экспортировали ваш файл SWF.

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

    Это приложение показало, как работать с текстовым файлом с неизвестным числом переменных и отображать их одновременно. В последних двух приложениях реализуется элементарное управление содержимым, а именно: на простом веб-сайте реализовано не только само содержимое, но и средства перехода, определенные внешними текстовыми файлами. Для любителей коротких фильмов: здесь все сделано в одном кадре.

< Лекция 15 || Лекция 16: 12345 || Лекция 17 >
Игорь Хан
Игорь Хан

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

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

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

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