actionscript-3 – Flash AS3中的文本链接
所以我自己为自己做了一个’wiki’式的应用程序给一些在Dropbox上运行的朋友,这意味着所有文件都存储在本地并由所有人更新.
每个文件都是由闪存拉入的.txt,然后使用简单的导航和搜索工具显示. 现在我试图更进一步,并从他们的内容链接文章.例: 第1条称为“苹果”.它的内容:“苹果很好吃.” 现在,当用户打开第2条时,我希望他们能够点击“apples”这个词,然后打开第1条(“苹果”). 我想知道如何创建在动态文本框中单击特定单词时触发的事件.不是整个动态文本框. 我曾想过以单词的形状创建可点击的动画片段,并将它们叠加在单词上,但如果有更简单的选项,那就太麻烦了. 解决方法
您可以使用文本框的
htmlText 属性动态生成单词链接.然后使用
TextEvent.LINK 事件来捕获单击的单词.
在使用内容填充文本框之前,只需遍历“关键字”列表并执行.replace(“keyword”,“< a href =”event:keyword“> keyword< / a>‘); 所以,你的代码看起来类似于: // get the file contents using whatever method you use var contents:String = getFileContents("page2.txt"); // assuming you have your keywords in an array var keywords:Array = ["Apples","Pears"]; for each (var keyword:String in keywords) { // replace the current keyword with a version of itself wrapped in a link contents = contents.replace(keyword,'<a href="event:' + keyword + '">' + keyword + '</a>'); } yourTextField.htmlText = contents; // add an eventlistener for the click yourTextField.addEventListener(TextEvent.LINK,linkClicked); function linkClicked(e:TextEvent):void { // load the article for the clicked word =] loadPage(e.text); } UPDATE // build a |-separated list of keywords var keywordList:String = ""; for each (var keyword:String in keywords) { keywordList += ((keywordList != "") ? "|" : "") + keyword; } // build the regex and replace each keyword in-place var pattern:RegExp = new RegExp("(" + keywordList + ")","gi"); // "i" for ignore-case =] contents = contents.replace(pattern,'<a href="event:$1">$1</a>'); 上面构建一个| -separated关键字列表并进行单个替换(而不是替换每个关键字)的原因是因为分隔列表将按顺序进行替换而不允许找到的关键字中断插入的HTML通过以前的关键字(例如,您有一个关键字“事件”) – 如果将HTML替换为生成< a href =“< a href =”event:event“> event< / a> ;:关键字1" >关键字1< / A>). 文本的原始案例将随事件一起发送.您可以搜索所有现有关键字,并将它们与传递给事件的关键字进行比较(将两者都转换为小写,使用.toLowerCase()进行比较),或者您可以制定主要关键字始终为一的规则小写,而不必担心每次搜索列表. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |