Кликабельные ссылки в прокручиваемом HTML-динамическом текстовом поле в фильме Flash AS2 - работают в Flash Pro, а не в браузере - PullRequest
0 голосов
/ 13 декабря 2010

Я разработал ролик в стиле скользящих кредитов во Flash с использованием Actionscript 2. Текст загружается из файла XML и анализируется в динамическом текстовом поле.Этот текст включает в себя гиперссылки на веб-страницы, определенные узлом url в xml, поэтому Flash может добавить соответствующий href в динамическое текстовое поле и сделать ссылку активируемой.

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

Затем я хотел заставить вещи двигаться ... чего я достиг достаточно легко и протестировал локально (из Flash Professional) и ссылки оставались активными, открывалось окно браузера и открывалась веб-страница, которую я ожидал увидеть ... отлично

Однако, когда я экспортирую SWF-файл, загрузите его и запустите с моего сайта, вдруг ссылкине работает.Поэтому я попытался протестировать фильм в браузере из Flash Pro - та же проблема, это должно быть как-то связано с Flash Player и движущимся динамическим текстовым полем.

пара наблюдений - курсор изменится на рукузначок, когда над ссылками, как вы ожидаете, и если я щелкну правой кнопкой мыши по ссылке и нажму кнопку открыть в новом окне, ссылка работает нормально, только не тогда, когда я щелкнул левой кнопкой мыши.Если я остановлю прокрутку, то ссылки снова станут активными, только когда текстовое поле движется ... фактически это не техническая прокрутка, а перемещение всего текстового поля.

Есть идеи?

1 Ответ

1 голос
/ 14 декабря 2010

Вместо использования свойства href динамического textField я бы предложил обернуть textFields в MovieClips, а затем использовать метод MovieClips onRelease () .

Вы можете загрузить свой текстВаш xml в обернутые textFields, и загрузите связанные URL ссылки в массив.Ниже предполагается, что у вас есть связанный библиотечный символ, который представляет собой мувиклип с динамическим textField в нем.Имя экземпляра textField tf .Идентификатор ссылки на библиотеку - myListItem , идентификатор контейнера для хранения списка - myListContainer .Переменная nextY предназначена для размещения каждой ссылки ниже последней, а переменная listItemSpacing определяет количество пикселей между каждым элементом списка.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИЭТО ЧАСТЬ PSEUDO-КОДА - я напечатал все это без фактической компиляции, поэтому могут быть опечатки или синтаксические ошибки as2 / 3, но это должно заставить вас двигаться в правильном направлении

var listContainer = myListContainer;
var xmlList = theXmlYouHaveParsed;
var urlArray = new Array();
var nextY = 0;
var listItemSpacing = 5;
var thisInstance = this;

for(i=0; i < theXmlYouHaveParsed.length; i++)
{
     var mc = listContainer.attachMovieClip("myListItem", i+1);
     mc._y = nextY;

     mc.tf.htmlText = theXmlYouHaveParsed[i].someText;
     mc.id = String(i);

     urlArray.push(theXmlYouHaveParsed[i].someUrl);

     mc.onRelease = function()
     {
         thisInstance.onLinkClicked(this.id);
     }

     nextY += mc._height + listItemSpacing;
}

function onLinkClicked(id)
{
     getURL(urlArray[id]);
}
...