Flash 的文字字段 (TextField) 除了用来显示与输入一般文字之外也有支持简单的 HTML 标签,像是 <font>, <b>, <i>, <u>, <a>, <p>, <br>, <li>, <span>, <img>
今天在做项目是,用到了TextField来显示外部的images,因此用到了<img>标签,但是遇到了一个问题,就是当只插入图片时,textField的默认焦点尺寸大于图片的尺寸。
代码:
1 import flash.text.TextField; 2 3 var lmc:TextField = new TextField(); 4 var ltext:String = "<img src='zh_CN.png' width='16' height='11'/>"; 5 lmc.htmlText = ltext; 6 lmc.wordWrap = true; 7 lmc.border = true; 8 addChild(lmc);
效果:

可以明显看到,这个lmc实际大小远远超过了图片实际大小
在网上查了关于AS3对HTML标签的支持帮助。
<img> 标签支持以下属性:
src:指定图像或 SWF 文件的 URL,或库中影片剪辑元件的链接标识符。 此属性是必需的,所有其它属性都是可选的。 外部文件(JPEG、GIF、PNG 和 SWF 文件)只有在完全下载之后才能显示。width:所插入的图像、SWF 文件或影片剪辑的宽度(以像素为单位)。height:所插入的图像、SWF 文件或影片剪辑的高度(以像素为单位)。align:指定文本字段中嵌入图像的水平对齐方式。 有效值为left和right。 默认值为left。hspace:指定图像周围不显示任何文本的水平空间量。 默认值为 8。vspace:指定图像周围不显示任何文本的垂直空间量。 默认值为 8。id:指定包含嵌入的图像文件、SWF 文件或影片剪辑的影片剪辑实例(由 Flash Player 创建)的名称。 该属性可用于控制使用 Actionscrīpt 嵌入的内容。checkPolicyFile:指定 Flash Player 将检查服务器上与图像的域相关的跨域策略文件。 如果跨域策略文件存在,则此文件中列出的域中的 SWF 文件可以访问加载图像的数据,例如通过调用以此图像作为source参数的BitmapData.draw()方法。 有关详细信息,请参阅《Actionscrīpt 3.0 编程》中的“Flash Player 安全性”一章。
Flash 以完全大小显示文本字段中嵌入的媒体。 若要指定嵌入的媒体的尺寸,请使用 <img> 标签的 height 和 width 属性。
通常情况下,文本字段中嵌入的图像显示在 <img> 标签后的行上。 但是,如果 <img> 标签是文本字段中的第一个字符,则该图像显示在文本字段的第一行上。
找到原因,
hspace:指定图像周围不显示任何文本的水平空间量。 默认值为 8。vspace:指定图像周围不显示任何文本的垂直空间量。 默认值为 8。
因此将代码改为
1 var ltext:String = "<img src='zh_CN.png' width='16' height='11' hspace='0' vspace='0'/>";
效果:

效果依然没有改变,怎么回事?试试给lmc加上长宽属性
1 import flash.text.TextField; 2 3 var lmc:TextField = new TextField(); 4 var ltext:String = "<img src='zh_CN.png' width='16' height='11' hspace='0' vspace='0'/>"; 5 lmc.htmlText = ltext; 6 lmc.wordWrap = true; 7 lmc.border = true; 8 lmc.width = 16; 9 lmc.height = 11; 10 addChild(lmc);
效果:

lmc的实际尺寸明显减小,但是也看到图片的尺寸明显有被压缩,这个问题不知道什么原因,只能将height适当加高一点,对项目影响不大,有待以后找到原因

浙公网安备 33010602011771号