Как создать «индикаторную линейку» во Flash? - PullRequest
0 голосов
/ 22 августа 2010

Я пытаюсь создать «индикаторную линейку» во Flash.Я создаю интерактивный дом во Flash.Внутри дома находятся объекты, которые потребляют энергию.(т. е. лампочка, компьютер, плита и т. д.). Эти объекты представляют собой кнопки переключения (созданные с помощью MovieClips).(Объекты можно включать / выключать.) Когда ВКЛ - есть «значение мощности», связанное с каждым домашним объектом (лампочка будет 1, компьютер будет 2, телевизор будет 3…)*

Я пытаюсь создать «индикаторную линейку» (которая выглядит как панель предварительной загрузки), которая визуально показывает, сколько энергии в доме используется.Наличие полной шкалы метра - включит все объекты дома.

Не уверен, с чего начать.Будем благодарны за любые идеи, касающиеся руководства или любые учебные пособия / примеры, которые могут оказаться полезными.

1 Ответ

1 голос
/ 22 августа 2010

Вы можете создать пользовательское событие, которое будет отправляться при каждом нажатии на элемент. Событие будет иметь два свойства: уровень мощности и свойство статуса.

Когда это событие получено, вы можете обновить значение вашего индикатора. если значение состояния «Выкл.», уменьшите значение шкалы счетчика на значение мощности, если «Вкл.», увеличьте на значение мощности.

Я бы создал два класса - ToggleClickButton, будет иметь свойство статуса, которое обновляется при каждом нажатии - CustomEvent, как описано выше

Конечно, вы должны добавить недостающие элементы (meterLevel, meterBar и т. Д.)

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


function toggleClick(event:MouseEvent):void
{
   var button:ToggleClickButton = event.currentTarget as ToggleClickButton;
   dispatchEvent( new CustomEvent( powerData ,  button.status) );
}

function customEventListener(event:CustomEvent ):void
{
   if( event.status == 0 )
  {
      meterLevel -= event.powerData;
  }else {

     meterLevel += event.powerData;
   }

   updateMeterDisplay();
}

function updateMeterDisplay()
{
   //for instance if you have a maxPower and a meterBar maxHeight
   meterBar.height = meterLevel * (maxHeight/maxPower );
}

...