注册 登录  
 加关注

网易博客网站关停、迁移的公告:

将从2018年11月30日00:00起正式停止网易博客运营
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

为着理想勇敢前进

 
 
 

日志

 
 

Flex 2、Flex 3和Flash 9中的width和height  

2008-08-16 21:49:15|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
width和height这个两个属性很诡异,不同对象的width/height属性的含义完全不同。非常淫荡。


第一种情况是一般的flash.display.DisplayObject,包括flash.display.Shape、flash.display.MovieClip、flash.display.Sprite等,其width和height代表该对象的外接矩形的实际长宽像素数。等一下,这个定义还不严谨,严谨的说法应该是:如果这个DisplayObject的父容器、爷爷容器,一直到祖宗容器也就是到Stage,全部都没有缩放,那么这个width和height就能代表该对象的外接矩形的实际长宽像素数。之所以要加上这个前提,是因为《Flex 2、Flex 3和Flash 9中的缩放》提到过,父容器的缩放并不会改变子对象的属性,而只会改变子对象在屏幕上的实际渲染尺寸。

虽然父容器的缩放并不会改变子对象的属性,但是DisplayObject对象自己的缩放属性(scaleX和scaleY)却会影响自己的width和height. 设置DisplayObject的scaleX和scaleY会改变其width和height,而且,设置width和height也会改变scaleX和scaleY. 这就意味着,设置一般的DisplayObject的width和height就会导致该对象缩放。不过,如果这个DisplayObject原本的width和height为0,则无法改变它的width和height,比如一个空无一物的Sprite,不论如何设置,width和height始终是0.

第二种情况是flash.display.TextField,它重写了基类的set width和set height函数,所以改变TextField的width和height并不会令TextField缩放,而只是改变文本区域的大小。改变width和height时,单个文字不会变大或变小,而可显示的文字数量会变多或变少。

改变TextField的width和height不会改变TextField的scaleX和scaleY,但是改变TextField的scaleX和scaleY会改变TextField的width和height.

第三种情况是Flex的mx.core.UIComponent,它的width和height不代表实际尺寸,而代表“占据”的尺寸,即使是一个空无一物的VBox,也可以设置其width和height(这一点与Sprite不同).

不过UIComponent有一点和TextField类似,改变UIComponent的width和height不会改变UIComponent的scaleX和scaleY,但是改变UIComponent的scaleX和scaleY会改变width和height. UIComponent中有unscaledWidth和unscaledHeight两个属性。unscaledWidth等于width/scaleX, unscaledHeight等于height/scaleY.

因为UICompoent涉及Flex的布局,所以其中还有许多尺寸相关的属性和函数,可以用来自动计算布局。这里就不一一介绍了。

最后说一下MXML中的width属性(attribute),它其实对应了该组件在ActionScript中的percentWidth和width两个属性(property);而MXML中的height属性(attribute)也对应了ActionScript中的percentHeight和height两个属性(property)。


  评论这张
 
阅读(515)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018