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

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

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

Обновляемая панель перехода

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

Фильм начинается с одного инстанса фильма в левой верхней части экрана (см. файл dynamictext5.fla ). Инстанс фильма имеет имя mc_navItem1. Фильм будет осуществлять доступ к текстовому файлу, в котором есть ряд переменных, каждая из которых содержит название ссылки (menu.txt).

titlel=Home&title2=Products&title3=Services&
  title4=Contact+Us&title5=About+Us

Фильм будет автоматически выводить список этих названий вертикально, независимо от числа переменных в текстовом файле. Итак, приступим.

  1. Откройте новый проект Flash и создайте в нем два слоя с именами Actions и Menu. Затем создайте текстовое поле в правом верхнем углу.
  2. Установите Var: на varTitle, инстанс на имя navtitle и поле на Multiline no wrap.

  3. Теперь преобразуйте поле в фильм с именем mcNavItem.
  4. Назовите инстанс, имеющийся на рабочем месте, именем mc_navItem1 и введите в него текст Loading:

  5. Все, что осталось сделать во Flash, это добавить ActionScript в слой Actions. Просто вводите код в ваш файл по мере его рассмотрения. Начните с присвоения messageURL имени вашего текстового файла.
    messageURL = "menu.txt"
  6. Далее мы создадим функцию с именем setUpMenus, которая использует аналогичный первому приложению метод для проверки того, установлена переменная или нет. На этот раз мы используем цикл while для прохода через все переменные title1:title5.
    setUpMenus = function() { 
      counter=1
    
    while (typeof(myNavVars["title"+counter]) == "string") {
  7. Если counter = 1, мы используем уже имеющийся фильм. Нам не нужно создавать еще один или беспокоиться о том, где его разместить. Поэтому введите следующий код.
    if (counter>1) {
  8. При каждой последующей итерации нужно сначала создать новый инстанс фильма с элементами перехода с помощью метода duplicateMovieClip для первого элемента навигации. Функция duplicateMovieClip возвращает ссылку на вновь созданный фильм. Мы будем хранить ее в переменной, чтобы можно было легко осуществлять доступ к параметрам нашего нового фильма.
    var theClip = _root.navlteml.duplicateMovieClip 
      ("navltem"+counter,counter)

    Фильм, дубликат которого мы создаем, является первым элементом навигации _root.navItem1. Мы используем переменную-счетчик для создания нового инстанса для дубликата фильма: "navItem"+counter. Мы также используем значение counter для установки глубины фильма.

  9. Теперь нужно куда-то поместить наш новый элемент навигации. В данном случае мы расположим его прямо под последним созданным нами navitem. Мы сделаем это, установив y-координаты нового navitem (определяются theClip ) на y-координаты предыдущего navitem (определяется this["navitem" + (counter-1)]) плюс 30.
    theClip._y = this ["navitem"+ (counter-1)]._y + 30
    }
  10. Мы сохраняем ссылку на текущий navitem в переменной theClip только в том случае, если был создан дубликат фильма из первого navitem, и не делаем этого, если фильмом является первый navitem. Теперь нужно установить theClip на работу с первым инстансом.
    else  {
      theClip = _root.navItem1
    }
  11. Далее нужно установить текст для каждого из элементов навигации.
    theClip.varTitle = myNavVars ["title"+counter]
  12. После этого переходим к следующему элементу.
    counter++
      }
    }
  13. Осталось инициализировать наш объект вне функции.
    myNavVars = new loadVars ()
  14. Присвойте функцию управляющему элементу onLoad, чтобы загружались все переменные одновременно.
    myNavVars.onLoad = function()  {
      _root.setUpMenus()
    }
  15. Также, разумеется, нужно загрузить переменные.
    myNavVars.load(messageURL)
  16. Выполнение этого фильма сгенерирует вертикальную область перехода, в которой каждый элемент навигации будет размещен на 30 пикселей ниже, чем предыдущий элемент. Вы можете просмотреть полный код в файле dynamictext5.fla.
< Лекция 15 || Лекция 16: 12345 || Лекция 17 >
Игорь Хан
Игорь Хан

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

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

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

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