2009-09-06 1 views
0

У меня есть шаблон Flash-сайта (четыре страницы), который я создал с помощью AS 3.0 и Flash CS4. Это для задания, включающего видеоклипы. В настоящее время на основной временной линии есть только один кадр и три слоя: действия/меню/контент.Управление видеороликами из основной временной линии вместо использования их отдельных временных линий?

в ActionScript на главной временной линии просто:

content_mc.stop(); 

Существует мувиклип на сцене под названием «Content», который содержит контент для каждой из страниц.

Внутри этого есть видеоклип «Меню», который содержит и управляет всеми навигационными кнопками. в ActionScript для клипа меню видео:

function homeBtnPress (event:MouseEvent):void{ 
//comments here 
//comments here 
MovieClip(parent).content_mc.gotoAndStop("home"); 
} 


function aboutBtnPress (event:MouseEvent): void{ 
MovieClip(parent).content_mc.gotoAndStop ("about"); 
} 

function servicesBtnPress (event:MouseEvent): void{ 
MovieClip (parent).content_mc.gotoAndStop ("services"); 


} 

function contactBtnPress (event:MouseEvent): void{ 
MovieClip (parent).content_mc.gotoAndStop ("contact"); 
} 

function portfolioBtnPress (event:MouseEvent): void{ 
MovieClip (parent).content_mc.gotoAndStop ("portfolio"); 

} 

home.addEventListener(MouseEvent.CLICK, homeBtnPress); 
about.addEventListener(MouseEvent.CLICK, aboutBtnPress); 
services.addEventListener(MouseEvent.CLICK, servicesBtnPress); 
contact.addEventListener(MouseEvent.CLICK, contactBtnPress); 
portfolio.addEventListener(MouseEvent.CLICK, portfolioBtnPress); 

Так что все работает нормально, но мой инструктор хочет, чтобы контролировать меню/содержание от основной линии времени с помощью инструмента целевого пути. На что именно я нацелился - только клипы «меню» и «контент», и какой код я бы использовал? Извините, если я не очень хорошо объясняю, я довольно смущен.

Вот обратная связь от моего инструктора:

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

Большое спасибо!

ответ

1

Это очень простая, но удобная задача.

Посмотрите here и here чтобы узнать об этом. Во втором учебном пособии используются actionscript 2, , но идея такая же. Проведите тест, перейдите на основную временную шкалу, в ActionPanel, выберите вставить целевой путь и выберите клип меню. сделайте то же самое изнутри conent_mc и посмотрите, как путь отличается. Попытайтесь получить представление о том, как вы можете получить доступ к своим клипам (так же, как папки в вашей файловой системе).

Ваш преподаватель прав:

  1. Если у вас есть код повсюду (во многих видеоклипам) и новой потребности вернуться к рассмотрению этого проекта примерно через месяц вы будете иметь Fogotten где все код для всего замысловатого перемещения меню/содержимого и тратить время и энергию.
  2. Копировать/вставить код хорошо, чтобы получить вещей происходит, но как только они сделать работу, и вы поняли, как, попробуйте написать его таким образом, что делает легко изменять без необходимости изменения для большей части вашего кода.

Этот код, написанный на основной временной шкале будет возможно выглядеть следующим образом:

//setup menu click handlers 

content_mc.home.addEventListener(MouseEvent.CLICK, menuPress); 
content_mc.about.addEventListener(MouseEvent.CLICK, menuPress); 
content_mc.services.addEventListener(MouseEvent.CLICK, menuPress); 
content_mc.contact.addEventListener(MouseEvent.CLICK, menuPress); 
content_mc.portfolio.addEventListener(MouseEvent.CLICK, menuPress); 
//take advantage of the fact that your button name is the same as the frame label in content_mc 
function menuPress(event:MouseEvent):void{ 
    content_mc.gotoAndStop(event.currentTarget.name); 
} 

я использовал currentTarget потому, что возвращает объект, который был щелкнул, а не какой-то ребенок, в зависимости от mouseChildren истинности/false и event bubbling, что вы, возможно, захотите посмотреть позже.

0
var btnArray:Array = [content_mc.home,content_mc.about,content_mc.service,content_mc.contact,content_mc.portfolio]; 
for(var i:uint=0;i<btnArray.length;i++) 
{ 
    btnArray[i].addEventListener(MouseEvent.CLICK, action); 
} 
function action(e:MouseEvent):void 
{ 
    content_mc.gotoAndStop(event.currentTarget.name); 
} 

Я только что упростил код.