Добавьте вложенный мувиклип и установите динамический текст AS3 - PullRequest
0 голосов
/ 23 октября 2009

У меня есть карта США с иконками над рядом городов (около 12). Когда пользователь наводит указатель мыши на один из этих значков, над значком появляется всплывающее окно с двумя динамическими текстовыми полями.

Видеоклип со значком каждого города назван в честь его домашнего состояния: state_(abbreviation) т.е.: state_TX

Всплывающее текстовое поле с именем: cityTag_mc Внутри это два динамических текстовых поля: title_txt & subTitle_txt

Логика заключается в добавлении cityTag_mc, когда пользователь наводит курсор на state_TX, и вводе заголовка и подзаголовка этого состояния.

Мое основное занятие - как вводить текст в поля (и анимировать шарик). Я не совсем знаю, с чего начать. Я хотел бы просто установить текст для каждого состояния в сценарии действий. С чего мне начать? Какова лучшая практика?

1 Ответ

0 голосов
/ 23 октября 2009

После того, как вы создали все значки городов, поместили их на сцену и дали им имена экземпляров, поместите их в массив. Это просто для упрощения управления.

cityIcons.push(state_tx), cityIcons.push(state_ca) и т. Д.

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

Теперь нам нужно добавить слушателей. Мы зациклим наш массив, поэтому нам нужно записать его только один раз.

//instead of manually adding to listeners to every city icon movielip we can now
//just loop over all the items in the array
for (var i:int = 0; i < cityIcons.length;i++)
{
     var mcCity:MovieClip = cityIcons[i] as MovieClip;
     myCity.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver)
     myCity.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut)

}

function onMouseOut(e:MouseEvent):void
{
  cityTag_mc.visible = false;
  //TODO any animating of balloon, maybe you could have
  //different labels so instead of changing visible change alpha when your tweening

}

function onMouseOver(e:MouseEvent):void
{

   //move balloon to where the city icon is
   //e.target refers to the object you have added the listener to
   cityTag_mc.x = e.target.x; // move the balloons position to the city's position
   cityTag_mc.x = e.target.y; 
   //you may want to add an offset so its not directly overthe top

   cityTag_mc.visible = true;

   switch(e.target)
   {
      //testing which city instance icon we rolled over
      case:state_tx
        cityTag_mc.title_txt.text ="Texas";
        cityTag_mc.balloon_mc.play(); //don't worry about this for now
        //do remaining stuff
        break;
      case:state_ca
        //same as above

   }

}

Вы можете поместить экземпляр воздушного шара с именем cityTag_mc уже на сцене и установить для видимого значения значение false, или вы можете создавать и удалять по мере необходимости. Это просто руководство, не воспринимайте это как 100%, так как это только от моей головы.

...