我正在使用AIR 2.0(很快将使用Flash CS6更新到3.3)来创建一个iPad应用程序.我们有文本字段(经典,动态),有时包含一个或多个需要可点击的htmlText链接.在程序的桌面版本中,所有文本都是可选的,并且可以轻松访问链接.我的问题是,它需要在iPad上将链接混合20次才能识别出有链接并在Safari中导航到它.另一个奇怪的是,没有任何文字似乎是可选择的 - 我无法让iPad光标,复制/粘贴菜单等显示出来.
我认为,通过阅读其他主题,URL的命中区域只是文本本身的笔划...如果这是真的,我该怎么做才能增加命中区域?或者选择文字?在其他地方建议将影片剪辑放在URL后面,但这并不可能,因为这是XML文件中的所有动态文本.
我已经阅读过有关StageText但我收集的内容仅用于输入字段,这不是这里的情况.
我在AS3中相当先进,但我更喜欢一个简单的解决方案,而不是重写大块的代码.目前,我唯一能想到的就是获取URL并将其设置为只要您触摸文本字段的任何位置,它就会导航到链接.但如果给定文本字段中有多个URL,则会中断.
有任何想法吗?
我有同样的问题,而且让我感到困惑了一段时间.以下是我为获得理想行为而采取的措施:
1)不要使用TextEvent.LINK的侦听器,而是在TextField上侦听MouseEvent.CLICK(或TouchEvent.TAP).
例如.
var tf:TextField = new TextField(); tf.addEventListener(MouseEvent.CLICK, linkClicked);
2)在linkClicked()处理程序中,使用getCharIndexAtPoint()来确定单击的字符的索引,然后从中确定字符的TextFormat中的URL.这是改编自Colin Holgate在Adobe论坛上的帖子(http://forums.adobe.com/thread/231754)
public function linkClicked(e:MouseEvent):void { var idx:int = e.target.getCharIndexAtPoint(e.localX, e.localY); trace("Tapped:",idx); var tf:TextFormat = e.target.getTextFormat(idx); if(tf.url != "" && tf.url != null) { var linkURL:String = tf.url; trace(linkURL); // Hyperlink processing code here dispatchEvent(new UIEvent(UIEvent.LINK_TAPPED,tf.url)); } }
3)最后一行(dispatchEvent())将自定义事件发送到另一个函数来处理链接,但您可以在此处轻松内联代码.
我在运行iOS6.1的iPad 3上进行了测试,使用AIR3.5构建.链接响应速度更快,而且我发现自己不会捣乱屏幕试图击中文本的笔触!