`
nianshi
  • 浏览: 420495 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

TileList+TitleWindow开发聊天表情功能

    博客分类:
  • Flex
阅读更多

使用XML将表情图片的的存放路径进行配置,程序中通过加载这个XML文件获取到所有的聊天表情的图片信息。如下XML配置:

CODE:

<?xml version="1.0" encoding="utf-8"?>
<faces>
<face>
<imageUrl>Images/face/bq_001.png</imageUrl>
</face>
<face>
<imageUrl>Images/face/bq_002.png</imageUrl>
</face>
<face>
<imageUrl>Images/face/bq_003.png</imageUrl>
</face>
<faces>
聊天表情通过TitleWindow组件实现,方便做弹出式窗体。在TitleWindow放置一个 TileLis并设置其ItemRenderer,以指定的格式显示表情图片。

CODE:

<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="460" height="300"
showCloseButton="true" title="聊天表情" close="closeWindow()" creationComplete="init()">

<mx:TileList x="0" y="0" width="100%" height="100%" id="faceList"
dataProvider="{faceArray}" itemClick="onItemClick(event)">
<mx:itemRenderer>
<mx:Component>
<mx:Image source="{data.ImageUrl}"/>
</mx:Component>
</mx:itemRenderer>
</mx:TileList>
</mx:TitleWindow>
在此窗体初始化的时候就加载XML,读取出里面的配置信息放入数组。并将读出的数据设置为 TileList的数据源。

CODE:

[Bindable]
private var faceArray:Array;

private function init():void
{
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE,handlerComplete);
loader.load(new URLRequest("data/face.xml"));
}

private function handlerComplete(event:Event):void
{
var xml:XML = new XML(event.target.data);

faceArray = new Array();
for(var i:Number = 0;i <xml.children().length();i++)
{
var f:Face = new Face();
f.ImageUrl = xml.face.imageUrl;
faceArray.push(f);
}
}
代码中的Face是自定义的一个VO类,就一个成员字段,方便在TileList组件的ItemRenderer中使用而定义,如 下:

CODE:

package vo
{
[Bindable]
public class Face
{
public function Face()
{
}
public var ImageUrl:String;
}
}
另外还需要实现TileList组件的项事件处理程序,点击其中某一项的时候做什么(这里点击一项则是发送该表情图片或动画)。

CODE:

private function onItemClick(event:ListEvent):void
{
var imageUrl:String = event.itemRenderer.data.ImageUrl;
//实现将表情发送到对方聊天界面/自己的聊天窗口显示出来
this.closeWindow();
}

private function closeWindow():void
{
PopUpManager.removePopUp(this);
}
在要弹出选择了表情的窗体中通过PopUpManager就可以实现动态弹出窗体,如下代码片段:

CODE:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Style source="assets/css/common.css"/>
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import components.Expression;
private function onSendExpress(event:MouseEvent):void
{
var exp:Expression = new Expression();
exp.x = 90;
exp.y = 100;
PopUpManager.addPopUp(exp,this,false);
}
]]>
</mx:Script>
<mx:TextArea x="102" y="255" width="430" height="138"/>
<mx:TextInput x="102" y="423" width="341"/>
<mx:Button x="454" y="423" label="发送消息"/>
<mx:LinkButton x="102" y="397" label="聊天表情" click="onSendExpress(event)" color="#8028AE"/>
</mx:Application>

以下是完整的表情窗体Flex代码:*** Hidden to visitors *** 下面贴出运行效果:


ChatExpress.jpg

分享到:
评论

相关推荐

    Flex air中TileList控件实现相册

    在Flex Air应用开发中,TileList控件是一个强大的组件,常用于展示数据集中的项,以网格形式排列。本教程将深入探讨如何利用TileList控件实现一个具有翻页特效和图片浏览功能的相册应用。 一、TileList控件基础 ...

    cocos2d-x TileList用法

    在cocos2d-x游戏中,`TileList`是一种特殊的视图控件,常用于构建可滚动的列表,比如排行榜、菜单等。然而,正如描述中提到的,`TileList`在使用过程中可能存在内存泄露和性能问题,因此需要谨慎处理。下面我们将...

    Flex TileList图片展示(相册)

    在Flex编程中,TileList控件是一个非常有用的组件,它允许开发者以网格布局显示数据集中的项。在本例“Flex TileList图片展示(相册)”中,我们看到TileList控件被巧妙地用于创建一个类似QQ相册的图片浏览体验。...

    解决flex的tilelist中的滚动条下滑,乱渲染问题。

    在Flex开发中,TileList组件是一种常用的展示数据的控件,它以网格的形式排列元素,常用于创建列表或表格。然而,在实际应用中,我们可能会遇到一些问题,比如当TileList包含可选中的CheckBox时,滚动条滚动可能导致...

    Flex TileList自定义间距和theme样式

    TileList组件虽然功能强大,但它并没有提供直接的属性来设置项与项之间的间距,这在需要特定布局效果时显得有些局限。 在TileList组件中,项之间的间距往往需要通过一些创造性的方法来实现。例如,通过设置...

    AS3视频拍照截图

    ### AS3视频拍照截图知识点详解 #### 一、AS3简介 ActionScript 3.0 (简称AS3) 是一种广泛应用于Adobe Flash平台的强大编程语言。...这些知识点对于学习AS3多媒体处理非常有帮助,也是开发类似应用程序的基础。

    Flex问题解决大全

    Flex是Adobe开发的一种用于构建富互联网应用程序(RIA)的框架,它基于ActionScript和MXML,主要用于构建在Web浏览器上运行的动态、交互性界面。本文将深入探讨Flex中的关键概念和技术,帮助开发者解决常见的Flex...

    ActionScript3.0类大全(Word格式)

    10. **TileListAccImpl 类**:TileListAccImpl 类为 TileList 组件添加辅助功能,使其在多列布局中仍能被正确理解和操作。 11. **Object 类**:Object 类是 ActionScript 类层次结构的根,所有的自定义类都继承自 ...

    flex 拖拽功能 中文文档

    ### Flex拖拽功能详解 Flex框架提供了一套强大的机制用于实现拖放(drag and drop)功能,这在用户界面设计中极为常见,特别是在构建高度交互性的应用时。本文旨在深入探讨Flex中的拖拽功能,包括其工作原理、关键...

    Flex程序开发心得小结

    Flex是一种用于开发富互联网应用(Rich Internet Applications,RIA)的框架,它是由Adobe公司推出并且被广泛应用于基于Flash的开发环境。Flex提供了一套丰富的组件库,使得开发者可以快速构建具有复杂界面的应用...

    WebUI4Angular:一组带有angularjs的组件,其中包括Datagrid,tree,dialog,progress,tilelist,tabset,dividedbox,imageview等

    a set of components with angularjs, which includes Datagrid,tree,dialog,progress,tilelist,tabset,dividedbox,imageview and so on. 参照了UI Bootstrap等组件的写法,主要对指令进行了自己的封装,我们希望...

    flex3+component组件.pdf

    Flex是Adobe公司推出的一款基于Flash平台的RIA(Rich Internet Applications,富互联网应用)开发框架,主要用于开发具有丰富用户界面的应用程序。使用ActionScript 3(AS3)编写组件皮肤是Flex开发中的一个高级话题...

    《Flex 3 组件实例与应用(2009版)》(PDF)

    以上仅为《Flex 3 组件实例与应用(2009版)》书中部分知识点的概述,该书详细介绍了每一个组件的使用方法、属性、事件以及示例代码,对于希望深入学习和掌握Flex 3开发技术的读者来说,是一本不可多得的实战指南。

    TMS FMX UI Pack 3.7.2.3 Demos.rar

    8. **TileList**:瓷砖列表控件,可以用来创建类似Windows 8或Windows 10开始菜单的布局,适用于展示图片、图标或者简短的信息,提供了一种现代且直观的用户体验。 9. **RichEditor SpellCheck**:富文本编辑器带有...

    flex + java 初学者 笔记 学习资料

    Flex是Adobe开发的一种用于构建富互联网应用程序(RIA)的框架,主要使用ActionScript语言和MXML标记语言。本文档是针对Flex和Java初学者的学习笔记,涵盖了Flex中的基础组件、文本处理、样式设计、行为对象以及动画...

    as-实例教程——相册列表.pdf

    在这个示例中,`myPhotos`变量被绑定到`TileList`组件的数据源,这意味着当`myPhotos`中的数据发生变化时,`TileList`将自动更新以反映这些变化。 ### 结论 本教程不仅涵盖了如何使用ActionScript 3 SDK与外部API...

    Flex 3 组件实例与应用(2009版)

    - **TitleWindow** - 带有标题的窗口容器。 - **VBox** - 垂直布局容器。 - **VDivideBox** - 垂直分割容器。 - **ViewStack** - 视图堆栈容器。 ##### 4. **RepeaterControl** - **Repeater** - 可重复的容器组件...

    使用 ACTIONSCRIPT 3.0组件 (AS3组件帮助文档)

    - **TileList 组件**:用于创建类似磁贴布局的列表。 - **UILoader 组件**:用于动态加载外部内容。 - **UIScrollBar 组件**:用于创建自定义滚动条。 每一小节都包含了该组件的基本用法、常见属性和事件处理方法。...

    flex图片显示 很绚丽的图片显示

    在本文中,我们将深入探讨如何在Flex环境中实现绚丽的图片显示功能。Flex是一种基于ActionScript 3.0的开源框架,用于构建富互联网应用程序(RIA)。它提供了强大的UI组件库,使得开发人员能够创建出交互性强、视觉...

    WebUI4Angular是基于angularjs实现的一套UI组件

    WebUI4Angular是基于angularjs实现的一套UI组件,主要包括:datagrid,tree,dialog,progress,tilelist,tabset,dividedbox,imageview等等。组件需要使用angularjs1.3以上版本,其中拍照组件cameraScanner另需安装flash...

Global site tag (gtag.js) - Google Analytics