Опубликован: 07.11.2006 | Уровень: специалист | Доступ: платный
Лекция 16:

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

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

Совмещение результатов работы

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


Сайт, который легко обновлять

Последнее приложение ( dynamictext6.fla ) содержит средства перехода, созданные в предыдущем приложении, два динамических текстовых поля, одно для названия секции, а другое для содержимого, а также место для размещения изображения.

  1. Сначала откройте FLA со средствами навигации, которые вы только что создали. Справа от текстового поля перехода нам нужно место для изображений. Нарисуйте там прямоугольник, преобразуйте его в фильм с именем imgPlace и назовите инстанс именем imgPlace1.
  2. После этого понадобится еще два текстовых поля. Одно из них предназначено для заголовка страницы, который мы будем получать из меню Navigation. Для этого разместите небольшое текстовое поле справа от поля изображения. Назовите его именем section и дайте имя переменной varSection. Это поле должно быть многостроковым, и, разумеется, содержать динамический текст. Второе поле будет находиться под первым и должно быть намного больше, чтобы вместить содержимое. Ему нужно присвоить имя maincontent, а переменную назвать varContent.

    Теперь нужно с чем-либо связать средства перехода. Поэтому, в дополнение к исходным переменным, имеем следующее (см. menu2.txt ):

    content1=section1.txt&content2=section2.txt&
      content3=section3.txt& content4=section4.txt&
        content5=sections.txt

    Каждая из переменных content1:5 ссылается на другой текстовый файл в той же папке, что и файл меню. Здесь content1 будет использоваться вслед за щелчком на navItem1 и т.д. Таким образом, вашему файлу menu2.txt понадобятся переменные содержимого для каждой используемой переменной заголовка. После этого вам понадобятся текстовые файлы, названные так, как объявлено в переменной, где находится содержимое для сайта. Например, в section1.txt находится содержимое для первой страницы.

    message=Welcome+to+our+new+website<BR><BR>
      Use+the+navigation+on+the+
        left+to+navigate+the+site.<BRxBRxB>
          Have+Fun!!</B>&photofile=section1. jpg

    Теперь перейдем к рассмотрению ActionScript.

  3. Под строкой:
    this["navItem"+counter].varTitle = myNavVars["title"+counter],

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

    В этом фрагменте кода мы создаем новую переменную с именем contentFile внутри текущего фильма navItem и устанавливаем ее значение на значение переменной content с использованием того же числа counter, что и в фильме. Так, первый фильм navItem1 содержит переменную contentFile, значение которой будет равно myNavVars.content1 из используемого нами текстового файла section1.txt.

    this["navItem"+counter].contentFile = myNavVars ["content"+counter]
  4. В следующей части кода в фильме используется управляющий элемент onRelease для реализации процедуры загрузки элементом перехода при щелчке на этом элементе.
    this["navitem"+counter].onRelease = function () {
      _root.varSection = this.varTitie
      if (typeof(this.contentFile) == "string") {
        _root.myContentVars.load(this.contentFile)
      } 
    }

    Функция устанавливает содержимое текстового поля заголовка секции и приравнивает его к тексту самого элемента навигации ( root.varSection = this.varTitle ), и затем, если имя файла было установлено ( if (typeof(this.contentFile) == "string") ), инстансу myContentVars дается команда на загрузку переменных из текстового файла, установленного в contentFile (root.myContentVars.load(this.contentFile) ).

  5. Теперь в конце функции setUpMenus нужно добавить некоторый код для установки начального состояния сайта, загрузив содержимое из первой секции.
    //Start with home page visible
    _root.varSection = _root.navItem1.varTitle
    _root.myContentVars.load(_root.navItem1.contentFile)
    }

    Полностью функция setUpMenus выглядит так.

    setUpMenus = function() { 
      counter=1
      while (typeof(myNavVars["title"+counter]) = 
        = "string") {
        if (counter>1) {
          duplicateMovieClip(_root.navltem1, "navltem"+counter, counter)
          this["navitem"+counter]._y = this
           ["navitem" + (counter-1)]._y + 30
        }
        this["navltem"+counter].varTitle = myNavVars["title"+counter]
                    Кthis["navltem"+counter].contentFile =
                       myNavVars["content"+ counter]
                    Кthis["navltem"+counter].onRelease = function () {
          _root.varSection = this.varTitle 
          if (typeof(this.contentFile) == "string") {
            _root.myContentVars.load(this.contentFile) 
          } 
        }
    
        counter++ 
      }
      //Start with home page visible 
      _root.varSection = _root.navltem1.varTitle
      _root.myContentVars.load(_root.navItem1.contentFile) 
    }
  6. Наконец, нужен второй инстанс объекта loadVars для считывания переменных содержимого для выбранной секции. Он должен находиться под функцией setUpMenus. Этот второй инстанс myContentVars заимствуется из второго приложения данной лекции, за исключением того, что имена переменных, устанавливаемых функцией onLoad, отличаются от исходных.
    myContentVars = new loadVars() 
    myContentVars.onLoad = function () {
      _root.varContent = myContentVars.message
      loadMovie(myContentVars.photofile, "imgPlace1")
    }

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

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

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

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

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

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

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

Тамара Ионова
Тамара Ионова
Россия, Нижний Новгород, НГПУ, 2009
Магомед Алисултанов
Магомед Алисултанов
Россия, Волгоград, лицей 2