- 浏览: 260719 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
qq820456878:
大神,您好,看了您的文章,深知小弟难望其项背啊。有一点不明白的 ...
Flex中捕获浏览器的前进、后退、刷新、关闭事件 -
skydove:
wushexin 写道楼主,详细说明网址打不开呀...可以去这 ...
RED5的Eclipse插件安装 -
JavaCFW:
JavaCFW 写道
FLEX利用FLASH MEDIA SERVER进行视频的在线录制和回放 -
JavaCFW:
FLEX利用FLASH MEDIA SERVER进行视频的在线录制和回放 -
daveyking:
客户端代码不太懂,是在哪写的?flash actionscri ...
抛弃LCDS和FMS,在tomcat下开发Red5应用(第三篇)-ApplicationAdapte
1.Flex Builder3要更新到3.0.2 http://www.adobe.com/support/flex/downloads_updaters.html
2.下载Text Layout Framework http://labs.adobe.com/downloads/textlayout.html API文档: http://livedocs.adobe.com/labs/textlayout/package-summary.html
3.更新到Flash Player10 http://www.adobe.com/support/flashplayer/downloads.html 关于flshplayer10的新特性和相关资料,请查看 http://www.5uflash.com/yejiezatan/ziyuanfenxiang/3278.html
4.设置flex项目的属性Flex Compiler的Require Flash Player version为:10.0.0
5.拷贝Text Layout Framework 的三个swc(textLayout_conversion.swc、textLayout_core.swc、textLayout_edit.swc)到项目的libs目录中
6.编写mxml文件:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"> <mx:Script> <![CDATA[ import mx.managers.PopUpManager; import flash.text.engine.FontPosture; import flashx.textLayout.formats.CharacterFormat; import flashx.textLayout.events.StatusChangeEvent; import flashx.textLayout.elements.InlineGraphicElement; import flashx.textLayout.container.DisplayObjectContainerController; import flashx.textLayout.conversion.TextFilter; import flashx.textLayout.elements.TextFlow; import flashx.textLayout.edit.*; private var textContainor:Sprite; private var textFlow:TextFlow; [Embed(source="air.png")] [Bindable] static public var imgClass:Class; private static const textInput:XML= <TextFlow xmlns="http://ns.adobe.com/textLayout/2008"> <div> <p> <img source="air.png"/> <span>Adobe® Flex® 3 是用于构建和维护在所有主要浏览器、桌面和操作系统一致地部署的极具表现力的 Web 应用程序的高效率的开放源码框架。 可以使用免费的 Flex SDK 构建 Flex 应用程序, 开发人员可以使用 Adobe Flex Builder™ 3 软件来显著促进开发。 60 天内免费试用 Flex Builder 3</span> <img source="air.png"/> <br/> </p> </div> </TextFlow>; public function init():void { textContainor=new Sprite(); canvas.rawChildren.addChild(textContainor); textFlow=TextFilter.importToFlow(textInput, TextFilter.TEXT_LAYOUT_FORMAT); textFlow.flowComposer.addController(new DisplayObjectContainerController(textContainor, canvas.width, canvas.height)); textFlow.addEventListener(StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGED, picLoaded); textFlow.interactionManager = new SelectionManager(); textFlow.interactionManager=new EditManager(new UndoManager()); textFlow.interactionManager.setSelection(0, 0); textFlow.flowComposer.updateAllContainers(); } private function picLoaded(event:StatusChangeEvent):void { //var image:InlineGraphicElement=event.element as InlineGraphicElement; textFlow.flowComposer.updateAllContainers(); } public function insertImg():void { var editManager:IEditManager = textFlow.interactionManager as IEditManager; editManager.insertInlineGraphic(txtImgURL.text,100,100); } public function format():void { var editManager:IEditManager = textFlow.interactionManager as IEditManager; var charFormat:CharacterFormat = new CharacterFormat(); //textFlow.interactionManager.setSelection(0,textFlow. charFormat.fontSize = 48; charFormat.fontStyle = flash.text.engine.FontPosture.ITALIC; charFormat.fontWeight = flash.text.engine.FontWeight.BOLD; //PopUpManager. //editManager.applyCharacterFormat(charFormat); //textFlow.removeChild(textFlow.getChildAtIndex(0)); textFlow.characterFormat = charFormat; textFlow.flowComposer.updateAllContainers(); } ]]> </mx:Script> <mx:Canvas x="10" y="10" width="406" height="287" backgroundColor="#FFFFFF" id="canvas"> </mx:Canvas> <mx:TextInput x="70" y="305" width="268" id="txtImgURL"/> <mx:Label x="10" y="307" text="图片URL:"/> <mx:Button x="346" y="305" label="插入图片" id="btnInsertImg" click="insertImg()"/> <mx:Button x="10" y="333" label="粗体" click="format()"/> </mx:Application>
改造该示例以实现聊天窗口效果(纯属测试,无法实际应用)
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"> <mx:Script> <![CDATA[ import flash.utils.describeType; import flashx.textLayout.elements.FlowLeafElement; import flashx.textLayout.elements.SpanElement; import flashx.textLayout.elements.FlowElement; import flashx.textLayout.elements.ParagraphElement; import mx.controls.Alert; import flashx.textLayout.conversion.ConversionType; import mx.controls.Image; import mx.managers.PopUpManager; import flash.text.engine.FontPosture; import flashx.textLayout.formats.CharacterFormat; import flashx.textLayout.events.StatusChangeEvent; import flashx.textLayout.elements.InlineGraphicElement; import flashx.textLayout.container.DisplayObjectContainerController; import flashx.textLayout.conversion.TextFilter; import flashx.textLayout.elements.TextFlow; import flashx.textLayout.edit.*; private var textContainor:Sprite; private var textFlow:TextFlow; private var txtOutContainor:Sprite; private var txtOutFlow:TextFlow; [Embed(source="air.png")] [Bindable] static public var imgClass:Class; private static const textInput:XML= <TextFlow xmlns="http://ns.adobe.com/textLayout/2008"> <div> <p> <img source="air.png"/> <span>Adobe® Flex® 3 是用于构建和维护在所有主要浏览器、桌面和操作系统一致地部署的极具表现力的 Web 应用程序的高效率的开放源码框架。 可以使用免费的 Flex SDK 构建 Flex 应用程序, 开发人员可以使用 Adobe Flex Builder™ 3 软件来显著促进开发。 60 天内免费试用 Flex Builder 3</span> <br/> </p> </div> <div> <p> <img source="air.png"/> <span>Adobe® Flex® 3 是用于构建和维护在所有主要浏览器、桌面和操作系统一致地部署的极具表现力的 Web 应用程序的高效率的开放源码框架。 可以使用免费的 Flex SDK 构建 Flex 应用程序, 开发人员可以使用 Adobe Flex Builder™ 3 软件来显著促进开发。 60 天内免费试用 Flex Builder 3</span> <br/> </p> </div> </TextFlow>; public function init():void { textContainor=new Sprite(); canvas.rawChildren.addChild(textContainor); textFlow=new TextFlow();//TextFilter.importToFlow(textInput, TextFilter.TEXT_LAYOUT_FORMAT); textFlow.flowComposer.addController(new DisplayObjectContainerController(textContainor, canvas.width, canvas.height)); textFlow.addEventListener(StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGED, picLoaded); textFlow.interactionManager = new SelectionManager(); textFlow.interactionManager=new EditManager(new UndoManager()); textFlow.interactionManager.setSelection(0, 0); textFlow.flowComposer.updateAllContainers(); txtOutContainor = new Sprite(); cavOut.rawChildren.addChild(txtOutContainor); txtOutFlow = new TextFlow(); txtOutFlow.flowComposer.addController(new DisplayObjectContainerController(txtOutContainor,cavOut.width,cavOut.height)); txtOutFlow.addEventListener(StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGED, imgLoaded); txtOutFlow.interactionManager = new SelectionManager(); //txtOutFlow.interactionManager = new EditManager(new UndoManager()); txtOutFlow.interactionManager.setSelection(0,0); txtOutFlow.flowComposer.updateAllContainers(); } private function picLoaded(event:StatusChangeEvent):void { //var image:InlineGraphicElement=event.element as InlineGraphicElement; textFlow.flowComposer.updateAllContainers(); } public function imgLoaded(event:StatusChangeEvent):void { txtOutFlow.flowComposer.updateAllContainers(); } public function insertImg():void { var editManager:IEditManager = textFlow.interactionManager as IEditManager; editManager.insertInlineGraphic(txtImgURL.text,100,100); } public function format():void { var editManager:IEditManager = textFlow.interactionManager as IEditManager; var charFormat:CharacterFormat = new CharacterFormat(); //textFlow.interactionManager.setSelection(0,textFlow. charFormat.fontSize = 48; charFormat.fontStyle = flash.text.engine.FontPosture.ITALIC; charFormat.fontWeight = flash.text.engine.FontWeight.BOLD; //PopUpManager. //editManager.applyCharacterFormat(charFormat); //textFlow.removeChild(textFlow.getChildAtIndex(0)); textFlow.characterFormat = charFormat; textFlow.flowComposer.updateAllContainers(); } public function showText():void { var xml:XML = TextFilter.export(textFlow,TextFilter.TEXT_LAYOUT_FORMAT,ConversionType.XML_TYPE) as XML; Alert.show(xml.toXMLString()); } public function showOutText():void { var xml:XML = TextFilter.export(txtOutFlow,TextFilter.TEXT_LAYOUT_FORMAT,ConversionType.XML_TYPE) as XML; Alert.show(xml.toXMLString()); } public function sendMsg():void { var leaf:FlowLeafElement = textFlow.getFirstLeaf(); var p:ParagraphElement = new ParagraphElement(); if(describeType(leaf).@name == "flashx.textLayout.elements::SpanElement") { var spanElement1:SpanElement = new SpanElement(); spanElement1.text = (SpanElement(leaf)).text+"\n"; p.addChild(spanElement1); } else if(describeType(leaf).@name == "flashx.textLayout.elements::InlineGraphicElement") { var inlineGraphicElement1:InlineGraphicElement = new InlineGraphicElement(); inlineGraphicElement1.source = (InlineGraphicElement(leaf)).source; p.addChild(inlineGraphicElement1); } txtOutFlow.addChild(p); while(leaf = leaf.getNextLeaf()) { p = new ParagraphElement(); if(describeType(leaf).@name == "flashx.textLayout.elements::SpanElement") { var spanElement:SpanElement = new SpanElement(); spanElement.text = (SpanElement(leaf)).text+"\n"; p.addChild(spanElement); } else if(describeType(leaf).@name == "flashx.textLayout.elements::InlineGraphicElement") { var inlineGraphicElement:InlineGraphicElement = new InlineGraphicElement(); inlineGraphicElement.source = (InlineGraphicElement(leaf)).source; p.addChild(inlineGraphicElement); } Alert.show(describeType(leaf).@name); } txtOutFlow.addChild(p); txtOutFlow.flowComposer.updateAllContainers(); } ]]> </mx:Script> <mx:Canvas x="10" y="10" width="406" height="287" backgroundColor="#FFFFFF" id="canvas"> </mx:Canvas> <mx:TextInput x="70" y="305" width="268" id="txtImgURL"/> <mx:Label x="10" y="307" text="图片URL:"/> <mx:Button x="346" y="305" label="插入图片" id="btnInsertImg" click="insertImg()"/> <mx:Button x="10" y="333" label="粗体" click="format()"/> <mx:Button x="66" y="333" label="得到文本" click="showText()"/> <mx:Canvas x="424" y="10" width="556" height="287" backgroundColor="#7EC0EA" id="cavOut"> </mx:Canvas> <mx:Button x="645" y="305" label="得到文本" click="showOutText()"/> <mx:Button x="144" y="333" label="添加文本到右边" click="sendMsg()"/> </mx:Application>
评论
5 楼
huyan0501
2011-07-04
楼主你好!请问你现在是否实现了图片的拖拽功能?能交流一下吗?huyan05170138@163.com
4 楼
lionmusicyj
2010-05-29
楼主,我在你说的地址上下载了framework,但是并没有你所说的
textLayout_conversion.swc、textLayout_core.swc、textLayout_edit.swc
这三个文件,只有简单的textLayout.swc,这是怎么回事呢?
问题很急,望回复
textLayout_conversion.swc、textLayout_core.swc、textLayout_edit.swc
这三个文件,只有简单的textLayout.swc,这是怎么回事呢?
问题很急,望回复
3 楼
唐朝
2009-06-01
徐晶鑫 写道
怎么解决呢
1~5步骤你做了吗?
2 楼
徐晶鑫
2009-05-28
怎么解决呢
1 楼
徐晶鑫
2009-05-28
1046: 找不到类型,或者它不是编译时常数: FontMetrics。
1046: 找不到类型,或者它不是编译时常数: TextElement。
。。。。。。。。。。。。。。报了许多错
1046: 找不到类型,或者它不是编译时常数: TextElement。
。。。。。。。。。。。。。。报了许多错
发表评论
-
Java程序员学习Flex和BlazeDS的十三个理由
2009-09-18 22:59 0本文列述了13个Java程 ... -
BrowserManager和HistoryManager的应用
2009-09-18 22:55 0BrowserManager是一个Singleton 管理器, ... -
Flex4相对于Flex3的变化
2009-09-18 22:19 2910以下内容转载自互联网,如侵犯您的权利,请来信告知! ... -
FLV播放器,完成度百分之七十
2009-09-11 09:17 1350完成度70% <object classid= ... -
Java和flash通信中数据的zlib压缩与解压缩
2009-04-08 22:23 0上篇文章介绍和如何在j ... -
Java和flash通信中数据的AMF3封装
2009-04-08 22:22 0Flash加载外部http数据有很多封装方式,常用的数据封装格 ... -
Java的RTMP客户端,可以用于RTMP的测试
2009-04-01 23:26 4088JUV Client 1.2 经过在Red5-0.6.3下测试 ... -
Flex中捕获浏览器的前进、后退、刷新、关闭事件
2009-03-31 21:46 9677如果不希望用户点击浏览器的前进、后退、刷新、关闭等误操作,可以 ... -
Text Layout Framework 聊天表情测试(依然不支持gif动画表情)
2009-02-17 22:59 3419(最后编辑于2009年2月20日17:24) 参考资料: ht ... -
从flex-ifram项目中看到的,在as中写js函数
2009-01-13 14:17 3519项目地址:http://code.google.c ... -
Flex的IFrame,解决在RIA中显示html的问题,非AIR
2008-12-31 15:00 0http://code.google.com/p/flex-i ... -
随记:flex发送XML到servlet
2008-10-16 15:58 3101一个Flex发送XML到Servlet,Servlet返回XM ... -
java后台的flex应用中电子白板文档共享的解决方法---用命令行转换任意文档为PDF和SWF
2008-07-31 22:57 8281前天安装了RED5,将OpenMeetings安装并运行一下, ... -
开启摄像头和关闭摄像头
2008-03-21 14:06 5627打开摄像头: Camera camera = Camera.g ... -
Flex的在线图片处理程序
2007-12-30 11:09 6207http://www.dreamtech.com.cn:908 ... -
Flex 概述
2007-11-11 09:13 3312一,概述 Flex是Adobe公司的支持RIA(rich ... -
讨论Flex的Package
2007-10-28 10:11 4394部分内容摘自ActionScript 3 Cookbook中文 ... -
FLEX2和FLEX3全屏的代码
2007-10-28 08:52 3345一.flex2的全屏代码 在仅仅使用Flex Builder ... -
FMS回调FLEX端的Function
2007-10-20 12:15 2648网络上找了很久这个资料,总算被解决了。 1.在FMS下新建一个 ... -
Flex连接FMS实现用户列表(使用SharedObject)
2007-10-20 10:08 32271.先在FMS的安装目录中添加自己的应用(例如我的目录D:\M ...
相关推荐
在实际应用中,开发者可以使用该机制来实现各种图文混排的功能,例如实现聊天应用程序中的表情发送功能,或者实现社交媒体应用程序中的图文混排功能。 知识点: 1. IOS 中的图文混排机制 2. 使用 NSString 和 ...
因此,我们需要使用特殊的方法来实现图文混排。 二、ImageGetter的作用 ImageGetter是一个接口,它提供了获取Drawable对象的方法。在本文中,我们将使用ImageGetter来加载网络图片。通过重写getDrawable方法,我们...
总之,"unity实现图文混排功能.zip"项目提供了一个实用的解决方案,使开发者能够在Unity的Text组件中实现图文混排,增强了游戏或应用的用户界面。通过理解这个项目的工作原理,你可以进一步定制自己的图文混排功能,...
在Android开发中,创建一个能够...以上就是使用Android原生控件实现图文混排编辑器的关键步骤和注意事项。通过不断迭代和优化,我们可以构建出一个强大且易用的编辑器,满足用户在网络图片和本地图片编辑上的各种需求。
完美解决Flex3 中 实现 图文混排 。
2. SpannableString与ImageSpan:更复杂的图文混排可以通过SpannableString和ImageSpan类来实现。SpannableString允许在字符串中插入各种Span对象,ImageSpan是其中一种,用于将图片插入到字符串中,可以实现文字...
1. **使用VGroup和HGroup**:你可以将图片和文本分别放入`VGroup`或`HGroup`中,然后将这些组再放入另一个更大的`VGroup`或`HGroup`,以此实现复杂的图文混排。通过设置`gap`属性调整元素之间的间距,通过`width`和`...
以上就是使用Swift和CoreText实现图文混排的基本步骤。需要注意的是,实际开发中可能还需要处理文本换行、对齐方式、行间距、段落间距等问题,以及在不同尺寸的设备上适配。通过不断调整和优化,可以创建出类似H5...
通过以上知识点的阐述,我们可以看到,使用AS3实现的图文混排组件是一个综合了图形渲染、事件处理、内存管理等多个方面技术的工程。这个组件不仅能满足基本的图文显示需求,还能通过丰富的API和自定义功能,满足各种...
以上就是使用`<dl>`, `<dd>`, 和 `<dt>` 实现图文混排的基本步骤和样式调整。根据实际需求,你可以进一步调整样式,如间距、字体大小、颜色等,以适应不同的设计风格。记得在实际应用中,要确保代码的语义化,同时...
AS3编写的图文混排,AS3编写的图文混排,AS3编写的图文混排
本教程将聚焦于如何使用`NSTextAttachment`控件来实现图文混排,这在创建通知、文章展示、设置个性化标签等领域非常常见。 `NSTextAttachment`是Apple的Foundation框架中的一个类,它是用于在富文本中插入图像或...
本文将深入探讨如何利用WebView和JavaScript进行简单交互,以实现图文混排和查看大图的功能。 1. **WebView基本使用** - WebView是Android提供的一种内嵌浏览器组件,可以加载HTML、CSS和JavaScript代码,展示网页...
这个“ios-textKit实现图文混排最简单的实现.zip”压缩包显然是一个示例项目,用于演示如何利用TextKit来实现图文混排的功能。接下来,我们将深入探讨TextKit以及如何在TextView中实现图文混排。 1. **TextKit框架...
在本文中,我们将深入探讨如何在Egret游戏引擎中利用TextFlow属性实现图文混排。Egret是一个流行的开源JavaScript框架,专为2D游戏开发设计,它提供了丰富的图形渲染和交互功能。然而,Egret的默认TextField组件(即...
在XML布局文件中,可以使用`LinearLayout`、`RelativeLayout`或`ConstraintLayout`等容器来实现图文混排。对于文本和图片的混合显示,可以使用`TextView`配合`ImageView`,通过设置适当的布局属性(如`android:...
在Android平台上,通常使用`TextView`和`ImageView`来分别处理文字和图片,但它们并不能直接实现复杂的图文混排,因此需要自定义控件。 博客中提到的控件`DemoPicTextTouchView`应该是这个项目的主类,它扩展了...
这一框架是用Swift语言编写的,适用于需要快速实现图文混排的场景,如微博、微信、即时通讯(IM)聊天对话等。 MYCoreTextLabel的核心特性包括: 1. **图文混排**:该库允许开发者在文本中自由插入图片,使得内容...
这个"UGUI 图文混排demo"项目基于Unity 5.4.1版本,这意味着它使用的是较早的UGUI系统,但仍然适用于现代的Unity项目,因为UGUI的基本结构和功能自那时起并未有太大改变。此Demo旨在展示如何在Unity中有效地实现图文...
"安卓自定义图文混排"是指开发者根据具体需求,自定义控件来实现这一功能,以达到更加灵活、个性化的布局效果。在本项目中,"QuoteTextView-master"可能是一个开源库或者示例代码,用于帮助开发者实现这种混排。 ...