穿梭于丛林之间  
一个热爱设计的孩纸,有着程序猿的情节,干着穿山越岭工作。

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适当加高一点,对项目影响不大,有待以后找到原因

posted on 2014-02-09 01:04  perrychum  阅读(490)  评论(0)    收藏  举报