AS2:Отключение ссылок в скрытых динамических текстовых полях и дочерних роликах
-
05-07-2019 - |
Вопрос
Приветствую!
Я работаю над веб-сайтом AS2 с MovieClips для страниц, которые меняют глубину при нажатии на навигацию.Текстовое содержимое динамически извлекается из внешнего XML-файла и оформляется с помощью CSS, включая ссылки (HTML / CDATA).Моя проблема заключается в следующем:
Когда страница скрыта за другой с помощью swapDepths()
, HTML-ссылки внутри скрытой страницы по-прежнему доступны для кликабельности при наведении ручного курсора.Я пробовал mc.enabled=false для родительских клипов содержимого, но это никак не влияет на динамическую текстовую строку.Кто-нибудь знает, как отключить ссылки CDATA с помощью Actionscript 2?
Тот же вопрос касается и детей с видеороликами в целом:как отключить MovieClips внутри родительского клипа в AS2 без жесткого кодирования имен экземпляров?
Заранее спасибо за любые предложения!
Вот код, с помощью которого я управляю заменой страниц:
// class code.Startup() :
page_arr = new Array(); // references clips laid out in the IDE
page_arr = [
['home', pages.homePage_mc],
['apartments', pages.apartmentsPage_mc],
['building', pages.buildingPage_mc],
['neighborhood', pages.neighborhoodPage_mc],
['press', pages.pressPage_mc],
['team', pages.teamPage_mc],
['retail', pages.retailPage_mc],
['office', pages.officePage_mc],
['contact', pages.contactPage_mc]
]
// class code.Navigation() :
private function showPage(num):Void {
turnOffAllPages();
if(siteFirstRun == true){
prevPageObj = code.Startup.getInstance().page_arr[0][1];
//defaults to homepage, already showing
currPageObj = code.Startup.getInstance().page_arr[num][1];
//sets currPageObj to whatever page was chosen with nav
siteFirstRun = false;
}
else {
if(currPageObj !== prevPageObj){
prevPageObj = currPageObj;
}
currPageObj = code.Startup.getInstance().page_arr[num][1];
}
TweenLite.to(code.Startup.getInstance().page_arr[num][1], .25, {_alpha:100, ease:'easeOutQuad', delay:.25});
if(prevPageObj !== undefined){
currPageObj.swapDepths(code.Startup.getInstance().pages.getNextHighestDepth());
}
currPageObj.copy_mc.enabled = true;
}
// Each page_arr clip contains a 'copy_mc' instance into which XML content is fed. These are what I need to target!
private function turnOffAllPages():Void{
for(i=0; i<code.Startup.getInstance().numPages; i++){
code.Startup.getInstance().page_arr[i][1].copy_mc.enabled = false;
// disable pages to avoid rolling over hidden links
TweenLite.to(code.Startup.getInstance().page_arr[i][1], .2, {_alpha:0, ease:'easeOutQuad'});
}
}
Решение
Я бы посоветовал два подхода к вашей проблеме:
1) Переместите скрытый видеоролик за пределы экрана (т.е.установите _x и _y для чего-то за пределами вашей сцены)
2) Прикрепите блокирующий видеоролик или кнопку поверх скрытого mc, чтобы он не получал никаких событий мыши.Когда он снова станет невидимым, удалите блокирующий ролик или кнопку.