`

Flex 在Flex中实现聊天表情图片支持-实战篇(Good)

阅读更多

在Flex中实现聊天表情图片支持-实战篇

本站原创文章,转载请注明:转载自zrong's Blog,原文在Flex中实现聊天表情图片支持-实战篇

本站转载文章会标明[转],转载请注明原始作者文章地址。



2010年10月7日更新:很多网友反应在SDK4正式版中,即使修改了源码也用不了,于是就顺手改了一下。现在的源码基于SDK4.1正式版,删除了一些原来beta版的时候用来解决beta版bug的代码,并加入了切分字符串的功能。也就是说,如果先输入文字,然后将输入点置于文字中再插入图片,图片会自动将文字分开。唉——转眼间这个源码发布一年了,时间过得真快啊……
顺便说一句:后来我又做了一个魔法表情功能,可以看这里
2009年10月29日更新:今天发现,有几个问题,Flash Builder beta2自带的SDK已经解决了(下面标出了),看来beta确实是不能用于正式产品啊……
2009年10月8日更新:Flash Builder beta 2发布后,spark组件中有些类的名称修改了,比如TextFilter改为TextConverter,SimpleText改为Label,TextArea.textview.textFlow改为TextArea.textFlow……因此如果使用beta2,那么下面的源码可能不会编译通过,请自行修改。


我发布“在Flex中实现聊天表情图片支持-资料篇”后,便有许多朋友找我要那个范例的源码。我在文章中就已提过那范例是从网上down来,并非我所做,自然没有源码。要源码,用X思,你懂的……

那好吧,源码来了。


例子很简单,所有的代码加起来都不到400行,但做的时候却很痛苦。因为要了解spark组件和FXG的特点,还要了解新的skin的做法。不过总算做好了,总结一下,纠结的地方主要有下面几点:

  1. 采用内嵌表情还是采用外部表情图片。
    为了获得更小的文件(Flex4比Flex3编译的文件大了200多K),一直是采用外部表情图片的。在本机调试都正常。但上传到网上后,就无法显示图片。调整了swf的base属性之后,图片可以在输入框和文字框中显示,就是不能显示在图片选择面板中。最后一气之下改成了内嵌图片。后来发现有可能是浏览器缓存问题,不过改就改了,也就没再纠缠这个问题。
    要注意的是,spark的BitmapImage是不支持外部图片的,必须要内嵌。所以如果要用外部图片,就必须用Halo组件中的Image。而由于TLF中的InlineGraphicElement又仅支持URL或者DisplayObject,而BitmapImage无法提供URL(本来嘛,是内嵌的撒)因此在我将外部图片转成内嵌后,原来的程序出了问题。原因是BitmapImage的source属性返回的是BitmapData对象,如果将其提供给InlineGraphicElement的source属性,就会报错。因此在提供图片信息的时候,必须要提供Bitmap才行。2010-10-07:正式版的InlineGraphicElement的source属性已经可以支持BitmapData对象了
  2. <图片插入到TextInput之后不更新。
    检查发现,InlineGraphicElement已经作为textFlow的元素存在了,但是在TextInput中却不显示出来,但如果再输入一些文字的话,图像又可以显示出来。因此判断是textFlow更新后没有执行flowComposer.updateAllControllers。把这个操作放在StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGED事件后就行了。
    2010-10-07正式版中已经支持自动更新了。
  3. Flex4 spark中的TextInpu焦点定位的怪问题。
    在发送输入框文字之后,再将文字清空,如果使用按钮来发送文字,则清空过后还能重新定位回输入框继续输入文字;而如果使用TextInput的enter事件来完成这个动作,则清空后返回虽然能重新定位输入框,并显示闪烁的输入光标,但无论如何也无法输入文字了,必须重新单击一次输入框,才能再次输入。后来用一个变通的方法解决了。就是在为输入框重新设置焦点之前,先将焦点移到按钮上,再移回来…… 很无语
    Flash Builder beta2自带的SDK(以及后面的SDK)已经解决了这个问题
  4. flowComposer自动清空为null的问题。
    flowComposer偶尔会自动清空,造成flowComposer.compose()或者flowComposer.updateAllControllers()失效,后来发现在界面大小变更的时候以及通过text=”设置文字清空的时候,flowComposer都可能会清空为null。而只需要重新将ti或者ta设置焦点就可以填充flowComposer的值。
    Flash Builder beta2自带的SDK(以及后面的的SDK)已经解决了这个问题
  5. 滚动条不更新的问题。
    输入的文字超过一屏之后,TextArea会自动出现滚动条。在Halo组件中,我是通过valueCommit事件来更新滚动条,但在spark中没有。不仅valueCommit没用,change等统统没用。后来改为用updateComplete来更新滚动条。其实,如果用textFlow的事件来更新,应该更加保险。
    另外,spark的scroller组件也是蛮纠结的,在Halo中用ta.verticalScrollPosition = ta.maxVerticalScrollPosition就可以了,可spark又整了个viewport出来。这不,更新语句又要改成ta.scroller.viewport.verticalScrollPosition=ta.scroller.viewport.contentHeight。
  6. 还有几个麻烦的事情,比如ParagraphElement要进行深复制才能用,比如format和hostFormat……算了,不说了,直接看效果好了 :em50:

聊天表情图片支持源码(45.6 KiB, 1,929 hits)

源码和在线演示请到原文章出处。

http://zengrong.net/post/810.htm

分享到:
评论

相关推荐

    flex实战项目,flex开发

    这个“Flex实战项目”可能是一个使用Flex技术构建的实际应用示例,旨在帮助开发者提升在Flex平台上的实践能力。 1. **Flex简介**:Flex是一个强大的开发工具,主要用于创建交互式、高性能的Web应用程序。它的核心是...

    刚学会Flex自己做的一个简单的聊天室

    在本例中,“刚学会Flex自己做的一个简单的聊天室”是一个初学者用Flex实现的简单聊天室应用,这展示了Flex的基本用法和功能。 1. Flex基础概念: - Flex框架:它是基于Apache OpenSource的Spark和MX组件集,提供...

    flex 多个聊天实例

    标题“flex 多个聊天实例”表明这是一篇关于使用Adobe Flex技术实现多个聊天实例的教程或案例分享。Flex是一种开源的、基于ActionScript的框架,用于构建富互联网应用程序(RIA),尤其适合创建动态和交互式的Web...

    基于Flex的Flash聊天室的实现

    在Web开发领域,构建实时互动的聊天室是一项常见的需求,而基于Adobe Flex的Flash技术曾是实现此类应用的主流选择之一。本文将深入探讨如何使用Flex来创建一个功能完备的Flash聊天室,包括核心技术点、设计思路以及...

    Flex4实战代码

    CH19 - "测试与调试":讲解了在Flex开发过程中如何进行有效的测试和调试,包括使用Flex Builder的内置工具以及编写单元测试。 CH26 - "实战案例":这部分可能是实际项目或复杂场景的应用实例,通过这些例子,读者...

    整合Flex和Java--配置篇

    在IT行业中,Flex和Java的整合是构建富互联网应用程序(RIA)时常见的一种技术组合。Flex作为Adobe开发的前端框架,主要用于创建交互式、高性能的用户界面,而Java则以其强大的后端处理能力和稳定性著称。这篇文档...

    Flex4实战源代码

    8. **事件模型改进**:事件模型在Flex4中变得更加健壮,支持事件冒泡、事件捕获和事件目标等概念,使得事件处理更加高效和准确。 9. **模块化开发**:Flex4支持模块化开发,可以将应用拆分为多个模块,按需加载,...

    基于java+flex实现的聊天程序

    《基于Java+Flex实现的聊天程序详解》 在信息技术领域,构建实时的在线聊天系统是一项常见的挑战。本项目“基于Java+Flex实现的聊天程序”提供了一种有效的解决方案,它结合了Java的强大后端处理能力和Flex的富...

    《Flex 4实战》.pdf

    《Flex 4实战》是Tariq Ahmed、Dan Orlando和John C. Bland以及Joel Hooks撰写的一本深入探讨Flex 4技术的书籍,由清华大学出版社出版于2012年1月1日。Flex是一种由Adobe公司开发的开源框架,主要用于创建富Internet...

    Flex视频聊天室源码

    Flex视频聊天室源码是一种基于Adobe Flex框架开发的实时通讯应用程序,主要用于实现视频聊天功能。Flex是基于ActionScript 3.0的开放源代码SDK,它允许开发者创建丰富的互联网应用程序(RIA),这些程序可以在多种...

    flex iframe 支持在flash中嵌套入html jsp asp php等

    flex iframe 支持在flash中嵌套入html jsp asp php等flex iframe 支持在flash中嵌套入html jsp asp php等flex iframe 支持在flash中嵌套入html jsp asp php等flex iframe 支持在flash中嵌套入html jsp asp php等flex...

    twaver-flex中文用户手册

    - TWaver-Flex支持在多种操作系统上运行,并且可以集成到现有的Flex开发环境中。 - 开发者需要安装Adobe Flex SDK及相关IDE(如Flash Builder或Eclipse with Flex plugin),并通过特定步骤配置TWaver-Flex开发...

    企业应用FLEX开发实战

    总的来说,《企业应用FLEX开发实战》是一本全面的指南,对于想要在企业级项目中使用FLEX的开发者来说,它提供了一条清晰的学习路径。无论你是初学者还是有一定经验的开发者,这本书都将是你不可或缺的参考资料。

    flex-messaging系列jar包

    这些JAR文件包含了多种服务和协议的支持,使得Flex客户端能够与Java后端无缝交互,实现数据的实时传输。 1. **flex-messaging-core.jar**:这是Flex Messaging框架的基础库,提供了核心的基础设施和服务。它包含AMF...

    flex-messaging-core.jar

    在Flex Messaging系统中,消息由Header和Body组成,可以携带元数据和实际的数据内容。AMF编码允许高效地序列化和反序列化复杂的数据结构。 5. **Security**: Flex Messaging Core还提供了一套安全机制,如身份验证...

    flex案例,用于实战演习

    Flex是一种强大的技术,主要用于创建富互联网应用程序(RIA),它提供了丰富的用户界面和交互性,尤其在Web应用中表现卓越。本案例聚焦于Flex的实际运用,旨在帮助开发者通过实践加深对Flex的理解。 Flex的核心是...

    Flex3 实战

    Flex3实战Flex3实战Flex3实战Flex3实战Flex3实战Flex3实战Flex3实战Flex3实战

    flex4 实战 flex4 in action

    《Flex 4 实战:Flex 4 in Action》是一本深度探讨Adobe Flex 4开发的实战书籍,由T. Ahmed, D. Orlando, J. C. Bland 和 J. Hooks合著。这本书不仅提供了理论知识,还包含了丰富的实战案例,旨在帮助读者熟练掌握...

    整合Flex和Java--配置篇.pdf

    ### 整合Flex与Java——配置篇 #### 引言 随着互联网技术的发展,富互联网应用(RIA)逐渐成为一种趋势。Flex作为一种优秀的RIA开发工具,以其强大的界面设计能力和良好的用户体验受到开发者的青睐。而Java作为...

Global site tag (gtag.js) - Google Analytics