Flash AS2电影中支持滚动HTML的动态文本字段中的可单击链接-在Flash Pro中工作,而不是在浏览器中

Flash AS2电影中支持滚动HTML的动态文本字段中的可单击链接-在Flash Pro中工作,而不是在浏览器中,flash,actionscript-2,href,textfield,Flash,Actionscript 2,Href,Textfield,我用ActionScript2在Flash中开发了一个滚动字幕风格的movieclip。文本从XML文件加载并解析为动态文本字段。此文本包含指向xml中url节点定义的网页的超链接,因此Flash可以将适当的a href添加到动态文本字段中,并使链接可单击 在我第一次尝试这样做时,textfield保持静止,所有链接在本地测试和在我的网站上的浏览器中运行时都运行良好 然后我想让一切都动起来。。。我很容易就做到了这一点,并在本地进行了测试(从Flash Professional内部),链接仍然可以

我用ActionScript2在Flash中开发了一个滚动字幕风格的movieclip。文本从XML文件加载并解析为动态文本字段。此文本包含指向xml中url节点定义的网页的超链接,因此Flash可以将适当的a href添加到动态文本字段中,并使链接可单击

在我第一次尝试这样做时,textfield保持静止,所有链接在本地测试和在我的网站上的浏览器中运行时都运行良好

然后我想让一切都动起来。。。我很容易就做到了这一点,并在本地进行了测试(从Flash Professional内部),链接仍然可以点击,浏览器窗口打开,我希望看到的网页也打开了。。。伟大的

然而,当我导出swf,上传它并从我的网站上运行它时,突然链接不起作用。所以我试着在Flash Pro的浏览器中测试这部电影——同样的问题,它一定与Flash播放器和移动的动态文本字段有关

两个观察结果-如您所料,光标在链接上方时将变为手形图标,如果我右键单击链接并在新窗口中单击“打开”,链接将正常工作,而不是左键单击。如果我停止滚动,那么链接将再次可点击,只有当文本字段移动时。。。实际上,从技术上讲,这不是滚动,而是移动整个文本字段


有什么想法吗

我建议将文本字段包装为MovieClips,然后使用MovieClipsonRelease()方法,而不是使用dynamic textField的href属性

您可以将xml中的文本加载到包装的文本字段中,并将关联的链接URL加载到数组中。下面假定您有一个链接库符号,它是一个带有动态文本字段的movieclip。文本字段的实例名为tf。库链接ID为myListItem,保存列表的容器ID为myListContainernextY变量用于将每个链接放置在最后一个链接的下方,listItemSpacing变量是每个列表项之间的间距像素数

免责声明-这是部分伪代码-我在没有实际编译的情况下键入了这些代码,因此可能会出现拼写错误或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]);
}
var listContainer=myListContainer;
var xmlList=您已解析的XML;
var urlArray=新数组();
var-nextY=0;
var listItemSpacing=5;
var thisInstance=this;
对于(i=0;i
一个很好的解决方案,谢谢-最后,我选择在单击时暂停移动,这样用户就可以单击链接,然后单击恢复按钮。。。毕竟,谁想在屏幕上寻找链接。