在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的做法。不过总算做好了,总结一下,纠结的地方主要有下面几点:
-
采用内嵌表情还是采用外部表情图片。
为了获得更小的文件(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对象了
- <
图片插入到TextInput之后不更新。
检查发现,InlineGraphicElement已经作为textFlow的元素存在了,但是在TextInput中却不显示出来,但如果再输入一些文字的话,图像又可以显示出来。因此判断是textFlow更新后没有执行flowComposer.updateAllControllers。把这个操作放在StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGED事件后就行了。2010-10-07正式版中已经支持自动更新了。
Flex4 spark中的TextInpu焦点定位的怪问题。
在发送输入框文字之后,再将文字清空,如果使用按钮来发送文字,则清空过后还能重新定位回输入框继续输入文字;而如果使用TextInput的enter事件来完成这个动作,则清空后返回虽然能重新定位输入框,并显示闪烁的输入光标,但无论如何也无法输入文字了,必须重新单击一次输入框,才能再次输入。后来用一个变通的方法解决了。就是在为输入框重新设置焦点之前,先将焦点移到按钮上,再移回来…… 很无语Flash Builder beta2自带的SDK(以及后面的SDK)已经解决了这个问题
flowComposer自动清空为null的问题。
flowComposer偶尔会自动清空,造成flowComposer.compose()或者flowComposer.updateAllControllers()失效,后来发现在界面大小变更的时候以及通过text=”设置文字清空的时候,flowComposer都可能会清空为null。而只需要重新将ti或者ta设置焦点就可以填充flowComposer的值。Flash Builder beta2自带的SDK(以及后面的的SDK)已经解决了这个问题
-
滚动条不更新的问题。
输入的文字超过一屏之后,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。
- 还有几个麻烦的事情,比如ParagraphElement要进行深复制才能用,比如format和hostFormat……算了,不说了,直接看效果好了 :em50:
聊天表情图片支持源码(45.6 KiB, 1,929 hits)
源码和在线演示请到原文章出处。
http://zengrong.net/post/810.htm
分享到:
相关推荐
这个“Flex实战项目”可能是一个使用Flex技术构建的实际应用示例,旨在帮助开发者提升在Flex平台上的实践能力。 1. **Flex简介**:Flex是一个强大的开发工具,主要用于创建交互式、高性能的Web应用程序。它的核心是...
在本例中,“刚学会Flex自己做的一个简单的聊天室”是一个初学者用Flex实现的简单聊天室应用,这展示了Flex的基本用法和功能。 1. Flex基础概念: - Flex框架:它是基于Apache OpenSource的Spark和MX组件集,提供...
标题“flex 多个聊天实例”表明这是一篇关于使用Adobe Flex技术实现多个聊天实例的教程或案例分享。Flex是一种开源的、基于ActionScript的框架,用于构建富互联网应用程序(RIA),尤其适合创建动态和交互式的Web...
在Web开发领域,构建实时互动的聊天室是一项常见的需求,而基于Adobe Flex的Flash技术曾是实现此类应用的主流选择之一。本文将深入探讨如何使用Flex来创建一个功能完备的Flash聊天室,包括核心技术点、设计思路以及...
CH19 - "测试与调试":讲解了在Flex开发过程中如何进行有效的测试和调试,包括使用Flex Builder的内置工具以及编写单元测试。 CH26 - "实战案例":这部分可能是实际项目或复杂场景的应用实例,通过这些例子,读者...
在IT行业中,Flex和Java的整合是构建富互联网应用程序(RIA)时常见的一种技术组合。Flex作为Adobe开发的前端框架,主要用于创建交互式、高性能的用户界面,而Java则以其强大的后端处理能力和稳定性著称。这篇文档...
8. **事件模型改进**:事件模型在Flex4中变得更加健壮,支持事件冒泡、事件捕获和事件目标等概念,使得事件处理更加高效和准确。 9. **模块化开发**:Flex4支持模块化开发,可以将应用拆分为多个模块,按需加载,...
《基于Java+Flex实现的聊天程序详解》 在信息技术领域,构建实时的在线聊天系统是一项常见的挑战。本项目“基于Java+Flex实现的聊天程序”提供了一种有效的解决方案,它结合了Java的强大后端处理能力和Flex的富...
《Flex 4实战》是Tariq Ahmed、Dan Orlando和John C. Bland以及Joel Hooks撰写的一本深入探讨Flex 4技术的书籍,由清华大学出版社出版于2012年1月1日。Flex是一种由Adobe公司开发的开源框架,主要用于创建富Internet...
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...
- TWaver-Flex支持在多种操作系统上运行,并且可以集成到现有的Flex开发环境中。 - 开发者需要安装Adobe Flex SDK及相关IDE(如Flash Builder或Eclipse with Flex plugin),并通过特定步骤配置TWaver-Flex开发...
总的来说,《企业应用FLEX开发实战》是一本全面的指南,对于想要在企业级项目中使用FLEX的开发者来说,它提供了一条清晰的学习路径。无论你是初学者还是有一定经验的开发者,这本书都将是你不可或缺的参考资料。
这些JAR文件包含了多种服务和协议的支持,使得Flex客户端能够与Java后端无缝交互,实现数据的实时传输。 1. **flex-messaging-core.jar**:这是Flex Messaging框架的基础库,提供了核心的基础设施和服务。它包含AMF...
在Flex Messaging系统中,消息由Header和Body组成,可以携带元数据和实际的数据内容。AMF编码允许高效地序列化和反序列化复杂的数据结构。 5. **Security**: Flex Messaging Core还提供了一套安全机制,如身份验证...
Flex是一种强大的技术,主要用于创建富互联网应用程序(RIA),它提供了丰富的用户界面和交互性,尤其在Web应用中表现卓越。本案例聚焦于Flex的实际运用,旨在帮助开发者通过实践加深对Flex的理解。 Flex的核心是...
Flex3实战Flex3实战Flex3实战Flex3实战Flex3实战Flex3实战Flex3实战Flex3实战
《Flex 4 实战:Flex 4 in Action》是一本深度探讨Adobe Flex 4开发的实战书籍,由T. Ahmed, D. Orlando, J. C. Bland 和 J. Hooks合著。这本书不仅提供了理论知识,还包含了丰富的实战案例,旨在帮助读者熟练掌握...
### 整合Flex与Java——配置篇 #### 引言 随着互联网技术的发展,富互联网应用(RIA)逐渐成为一种趋势。Flex作为一种优秀的RIA开发工具,以其强大的界面设计能力和良好的用户体验受到开发者的青睐。而Java作为...