ScaleX scaleY是否会使宽度和高度发生变化?

时间:2011-08-31 14:00:11

标签: flex actionscript-3

我在flex 4中工作的样本mxml是

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" 
               minWidth="955" minHeight="600" >

    <fx:Script>
        <![CDATA[
            protected function button1_clickHandler(event:MouseEvent):void
            {
                // TODO Auto-generated method stub
                trace(hgroup.width ,hgroup.height);
                hgroup.scaleX = 1.5;
                hgroup.scaleY = 1.5; 
                trace(hgroup.scaleX, hgroup.scaleY);
                trace(hgroup.width ,hgroup.height);
            }
        ]]>
    </fx:Script>

    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <s:HGroup id="hgroup" width="85%" height="85%" clipAndEnableScrolling="true">
        <s:Button click="button1_clickHandler(event)" label="Click to Scale"/>
    </s:HGroup>
</s:Application>

如果我调试

在第一个按钮上单击跟踪显示如下

870 535
1.5 1.5
870 535

第二次点击按钮,跟踪显示如下

580 356.6666666666667
1.5 1.5
580 356.6666666666667

在垂直点击上显示就像第二次点击一样

我的问题是scaleX scaleY是否会影响宽度高度?

请指导我,我需要增加垂直宽度 使用scaleX scaleY

2 个答案:

答案 0 :(得分:1)

是的,缩放会影响宽度和高度。我有点惊讶,没有立即反映在第三个跟踪语句中,但我的猜测是它与flex组件的失效和重绘有关。我仔细检查了一个简单的非flex应用程序,并立即更新了width和height的属性。

=============

最后我得到了答案缩放不会改变宽度高度。但是我用的是宽度百分比高度,所以减少了。我用静态宽度高度双重检查我没有增加但是当宽度高度增加时,scaleX scaleY同时增加。在心灵中保持这个

感谢大家的支持 作者:Sudharsanan

~~~~快乐编码~~~~~

答案 1 :(得分:1)

缩放会影响您缩放的对象的宽度或高度 hgroup(又名myBTN)的内容将保持不变 如果它没有变大或变小,那么缩放某些东西会有什么意义

protected function button1_clickHandler(event:MouseEvent):void{
// TODO Auto-generated method stub
  trace( hgroup.width ,hgroup.height);//52 22
  trace( myBTN.width ,myBTN.height);//52 22
  hgroup.scaleX = 1.5;
  hgroup.scaleY = 1.5; 
  hgroup.validateNow()
  trace( hgroup.scaleX, hgroup.scaleY);//1.5 1.5
  trace( hgroup.width ,hgroup.height);//78 33 // notice the scaling changed the container
  trace( myBTN.width ,myBTN.height);//52 22 // here is where you see the sizes unchanged
}

<mx:Canvas id="hgroup" >
  <mx:Button id="myBTN" label="Click" click="button1_clickHandler(event)" />
</mx:Canvas>

回答关于为什么没有立即更新的HotN,因为这是一个显示对象,因此将遵循uiComponent框架。
要立即进行更改,您必须调用“validateNow”更新显示列表,而不是等待下一帧。