游戏开发者社区

[Flex] Flex4 TextFlow中的LinkElement事件侦听  关闭

查看: 4543|回复: 9

Rank: 5Rank: 5

威望
2 点
义气
5 点

AQ小生

发表于 2009-12-31 13:42:28 |显示全部楼层
5银子
小弟在帮助中看到LinkElement可以注册事件,便想一试:
    放了个RichText,然后用代码创建一个TextFlow(里面有LinkElement),赋给RichText。郁闷的是事件居然不灵了,下面是代码虚心求教:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
  3.                            xmlns:s="library://ns.adobe.com/flex/spark"
  4.                            xmlns:mx="library://ns.adobe.com/flex/halo"
  5.                            minWidth="1024" minHeight="768" xmlns:liu="liu.*"
  6.                           
  7.                            >
  8.         <fx:Declarations>
  9.                
  10.                
  11.         </fx:Declarations>
  12.        
  13.         <fx:Script>
  14.                 <![CDATA[
  15.                         import flashx.textLayout.elements.Configuration;
  16.                         import flashx.textLayout.elements.LinkElement;
  17.                         import flashx.textLayout.elements.ParagraphElement;
  18.                         import flashx.textLayout.elements.SpanElement;
  19.                         import flashx.textLayout.elements.TextFlow;
  20.                         import flashx.textLayout.events.FlowElementMouseEvent;
  21.                        
  22.                         private function ini():void{
  23.                                
  24.                                 var config:Configuration=new Configuration();
  25.                                 var p:ParagraphElement=new ParagraphElement();
  26.                                 var tf:TextFlow=new TextFlow();
  27.                                 var nameLink:LinkElement=new LinkElement();
  28.                                 var nameSpan:SpanElement=new SpanElement();
  29.                                 nameSpan.text="哈哈";
  30.                                 nameSpan.fontSize=20;
  31.                                 nameLink.addChild(nameSpan);
  32.                                 p.addChild(nameLink);
  33.                                 tf.addChild(p);
  34.                                 rt.textFlow=tf;
  35.                                 nameLink.addEventListener(FlowElementMouseEvent.CLICK,fromName);

  36.                         }
  37.                         private function fromName(e:FlowElementMouseEvent):void{
  38.                                 trace(1);
  39.                         }


  40.                 ]]>
  41.         </fx:Script>
  42.         <s:RichText id="rt" x="200" backgroundColor="0xff0000" width="500" height="400" creationComplete="ini()"/>
  43.        
  44. </s:Application>
复制代码

最佳答案

eko 查看完整内容

建议 RichText 改成 TextArea或者 RichEditableText

举报

eko  

Rank: 11Rank: 11Rank: 11Rank: 11Rank: 11

威望
333 点
义气
333 点

AQ小生 紫带金边向日葵勋章 译林军三才译士 书组-翻书侠 fouryear

发表于 2009-12-31 13:42:29
建议 RichText 改成 TextArea或者 RichEditableText

举报

Rank: 5Rank: 5

威望
28 点
义气
16 点
发表于 2009-12-31 13:44:48
支持~~~,同求答案

举报

Rank: 10Rank: 10Rank: 10Rank: 10

威望
30 点
义气
8 点

AQ大神 AQ小仙 AQ大侠 AQ小生 赤子之心勋章

发表于 2009-12-31 14:24:53
你打断点跟踪了么?另外你还需要好好看看这个事件是在什么情况下派发的,是不是你的操作没有满足触发这个事件的条件。

举报

Rank: 5Rank: 5

威望
2 点
义气
5 点

AQ小生

发表于 2009-12-31 15:41:04
呵呵,谢谢大家,TextArea设置不可编辑后可以用了
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
  3.                            xmlns:s="library://ns.adobe.com/flex/spark"
  4.                            xmlns:mx="library://ns.adobe.com/flex/halo"
  5.                            minWidth="1024" minHeight="768" xmlns:liu="liu.*"
  6.                            >
  7.         <fx:Declarations>
  8.                
  9.                
  10.         </fx:Declarations>
  11.         <fx:Script>
  12.                 <![CDATA[
  13.                         import flashx.textLayout.elements.Configuration;
  14.                         import flashx.textLayout.elements.LinkElement;
  15.                         import flashx.textLayout.elements.ParagraphElement;
  16.                         import flashx.textLayout.elements.SpanElement;
  17.                         import flashx.textLayout.elements.TextFlow;
  18.                         import flashx.textLayout.events.FlowElementMouseEvent;
  19.                        
  20.                         private function ini():void{
  21.                                
  22.                                 var p:ParagraphElement=new ParagraphElement();
  23.                                 var tf:TextFlow=new TextFlow();
  24.                                 var nameLink:LinkElement=new LinkElement();
  25.                                 var nameSpan:SpanElement=new SpanElement();
  26.                                 nameSpan.text="哈哈";
  27.                                 nameSpan.fontSize=20;
  28.                                 nameLink.addChild(nameSpan);
  29.                                
  30.                                 p.addChild(nameLink);
  31.                                 tf.addChild(p);
  32.                                 rt.textFlow=tf;
  33.                                 nameLink.addEventListener(FlowElementMouseEvent.CLICK,fromName);
  34.                         }
  35.                         private function fromName(e:FlowElementMouseEvent):void{
  36.                                 trace(1);
  37.                         }
  38.                        
  39.                        
  40.                 ]]>
  41.         </fx:Script>
  42.         <s:TextArea id="rt" x="200" width="500" height="400" editable="false" creationComplete="ini()"/>
  43.        
  44. </s:Application>
复制代码

举报

Rank: 5Rank: 5

威望
2 点
义气
5 点

AQ小生

发表于 2009-12-31 15:54:45
还有一个要点。。事件注册要在textFlow传过去之后

举报

Rank: 4

威望
0 点
义气
5 点
发表于 2010-4-5 20:16:41
没银子,发不了帖子咯,借宝地用一用,我用 TextLayout 组件 做了个表情聊天室,功能已经实现了,唯一没搞明白的就是发消息到最后一条的时候出现了高度拉条,请问怎么能始终显示最后一条消息,也就是侧拉条始终在最下面,谢谢了,没银子啊,可怜

举报

Rank: 4

威望
0 点
义气
5 点
发表于 2010-4-5 20:17:48
补充一下,我的是 flash cs4 IDE 环境!

举报

Rank: 4

威望
1 点
义气
5 点
发表于 2011-10-24 18:20:32
回复 5# 禁林的诗


确切的说是不可选中 selectable = false;
貌似在tlf中 可选时的响应事件会和linkElement冲突。

我在actionScript项目下也是遇到这个问题 把TextFlow对象的interactionManager属性制空 就正常了。

举报

Rank: 6Rank: 6Rank: 6

威望
4 点
义气
5 点
发表于 2013-6-1 16:16:07
TLF的官方博客的介绍了TLF对LinkElement的支持,当TLFTextfield是可编辑时需要CRL+鼠标点击触发,不可编辑时(包括可选和不可选)只需鼠标点击,设置TLFTextfield.type或TLFTextfield.textFlow.interactionManager可改变TLFTextfield的可编辑、不可编辑可选、不可编辑不可选状态,相关连接:http://blogs.adobe.com/tlf/2010/ ... d-eventmirrors.html

举报

您需要登录后才可以回帖 登录 | 注册

关闭

江湖传闻

手机版|9RIA.com ( 京ICP备11007422号-2 

GMT+8, 2014-11-27 18:25 , Processed in 0.125949 second(s), 19 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部