AS3 - кнопки, контролирующие временную шкалу, не работают внутри MovieClip - PullRequest
1 голос
/ 25 февраля 2011

Я впервые пишу код сайта с помощью ActionScript. Пока все прошло очень хорошо, я разработал сайт в Photoshop и импортировал в Flash CS5. Затем я все очистил и начал добавлять навигацию к различным страницам с помощью кнопок.

Веб-сайт построен очень просто: пять основных страниц связаны между собой кнопками на статической навигационной панели (первая страница, дома, не имеет соответствующей кнопки). Затем есть девять подстраниц, каждая из которых содержит информацию о персонаже игры и связана с соответствующими кнопками в слое «Персонаж» / MovieClip. Мои четыре кнопки меню («История», «Мир», «Персонажи», «Дополнения») работают без проблем.

Проблема возникает из-за того, что на странице «Персонажи» (фрагмент ролика) находятся девять кнопок, каждая из которых связана с отдельной страницей. Эти кнопки должны привести временную шкалу к указанному кадру, но при нажатии кнопок ничего не происходит. Я часами искал решение этой проблемы, но безрезультатно, и я чувствую, что ответ довольно прост. Думаешь, ты сможешь мне помочь?

Вот что я пробовал до сих пор:

Замена

gotoAndStop("gowang", "Scene 1");

строка в функции кнопок символов Gowang с:

MovieClip(root).gotoAndStop("gowang");

Но это дало тот же результат, кнопки ничего не делали.

Я также пытался разместить слушателей и функции кнопок персонажей внутри страницы персонажа MovieClip, но это дало мне эту ошибку:

ArgumentError: Ошибка # 2108: Сцена Сцена 1 не найдена.
на flash.display :: MovieClip / gotoAndStop ()
at Gowang_fla :: Top_31 / clickGowang ()

Я потратил много времени, пытаясь исправить это, и я был бы очень признателен, если бы кто-то мог помочь.

~ Вот это .FLA: http://mindsparkdesigns.com/files/WebsiteFla.zip

~ Вот код:

stop();

//Fade Effect

import fl.transitions.Tween;
import fl.transitions.easing.*;

var homeTween:Tween = new Tween(home_mc, "alpha", Regular.easeOut , 0, 1, 2, true);

//Buttons

story_btn.addEventListener(MouseEvent.CLICK, clickStory);
world_btn.addEventListener(MouseEvent.CLICK, clickWorld);
characters_btn.addEventListener(MouseEvent.CLICK, clickCharacters);
extras_btn.addEventListener(MouseEvent.CLICK, clickExtras);

home_mc.storyH_btn.addEventListener(MouseEvent.CLICK, clickStoryH);
home_mc.worldH_btn.addEventListener(MouseEvent.CLICK, clickWorldH);
home_mc.charactersH_btn.addEventListener(MouseEvent.CLICK, clickCharactersH);
home_mc.extrasH_btn.addEventListener(MouseEvent.CLICK, clickExtrasH);

top_mc.gowang_btn.addEventListener(MouseEvent.CLICK, clickGowang);
top_mc.ayame_btn.addEventListener(MouseEvent.CLICK, clickAyame);
top_mc.evora_btn.addEventListener(MouseEvent.CLICK, clickEvora);
top_mc.rogin_btn.addEventListener(MouseEvent.CLICK, clickRogin);
top_mc.toraz_btn.addEventListener(MouseEvent.CLICK, clickToraz);
top_mc.naomi_btn.addEventListener(MouseEvent.CLICK, clickNaomi);
top_mc.rummy_btn.addEventListener(MouseEvent.CLICK, clickRummy);
top_mc.teeth_btn.addEventListener(MouseEvent.CLICK, clickTeeth);
top_mc.sichan_btn.addEventListener(MouseEvent.CLICK, clickSichan);

extras_mc.blog_btn.addEventListener(MouseEvent.CLICK, clickBlog);

function clickBlog(event:MouseEvent):void
{
    navigateToURL(new URLRequest("http://www.gowangadventures.blogspot.com"), "_blank");
}

function clickGowang(evtObj:MouseEvent){
gotoAndStop("gowang", "Scene 1");
}
function clickAyame(evtObj:MouseEvent){
gotoAndStop("ayame", "Scene 1");
}
function clickEvora(evtObj:MouseEvent){
gotoAndStop("evora", "Scene 1");
}
function clickRogin(evtObj:MouseEvent){
gotoAndStop("rogin", "Scene 1");
}
function clickToraz(evtObj:MouseEvent){
gotoAndStop("toraz", "Scene 1");
}
function clickNaomi(evtObj:MouseEvent){
gotoAndStop("naomi", "Scene 1");
}
function clickRummy(evtObj:MouseEvent){
gotoAndStop("rummy", "Scene 1");
}
function clickTeeth(evtObj:MouseEvent){
gotoAndStop("teeth", "Scene 1");
}
function clickSichan(evtObj:MouseEvent){
gotoAndStop("sichan", "Scene 1");
}
function clickStory(evtObj:MouseEvent){
gotoAndStop("story");
}
function clickWorld(evtObj:MouseEvent){
gotoAndStop("world");
}
function clickCharacters(evtObj:MouseEvent){
gotoAndStop("characters");
}
function clickExtras(evtObj:MouseEvent){
gotoAndStop("extras");
}
function clickStoryH(evtObj:MouseEvent){
gotoAndStop("story", "Scene 1");
}
function clickWorldH(evtObj:MouseEvent){
gotoAndStop("world", "Scene 1");
}
function clickCharactersH(evtObj:MouseEvent){
gotoAndStop("characters", "Scene 1");
}
function clickExtrasH(evtObj:MouseEvent){
gotoAndStop("extras", "Scene 1");
}

Ответы [ 2 ]

2 голосов
/ 25 февраля 2011

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

top_mc.gowang_btn.addEventListener(MouseEvent.CLICK, clickGowang);
top_mc.ayame_btn.addEventListener(MouseEvent.CLICK, clickAyame);
top_mc.evora_btn.addEventListener(MouseEvent.CLICK, clickEvora);
top_mc.rogin_btn.addEventListener(MouseEvent.CLICK, clickRogin);
top_mc.toraz_btn.addEventListener(MouseEvent.CLICK, clickToraz);
top_mc.naomi_btn.addEventListener(MouseEvent.CLICK, clickNaomi);
top_mc.rummy_btn.addEventListener(MouseEvent.CLICK, clickRummy);
top_mc.teeth_btn.addEventListener(MouseEvent.CLICK, clickTeeth);
top_mc.sichan_btn.addEventListener(MouseEvent.CLICK, clickSichan);

Так как ваш 'characters_mc' находится на сцене в этом кадре, они доступны для приема этих слушателей (так как они не сделали)не существует, когда вы пытались объявить их раньше).

0 голосов
/ 06 марта 2012

Вы можете использовать MovieClip в качестве кнопки:

MovieClip(this.parent).gotoAndStop("gowang");
...