ScaleX scaleY изменяет ширину и высоту? - PullRequest
2 голосов
/ 31 августа 2011

Я работаю в 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 на высоту ширины ??

пожалуйста, направьте меня, мне нужно увеличить ширину перпендикулярно со шкалой X scaleY

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Масштабирование влияет на ширину или высоту масштабируемого объекта.
Содержимое 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», чтобы обновить список отображения вместо ожидания следующего кадра.

1 голос
/ 31 августа 2011

Да, масштабирование влияет на ширину и высоту. Я немного удивлен, что это не отражается сразу в третьем утверждении трассировки, но я думаю, что это как-то связано с аннулированием и перерисовкой компонентов flex. Я дважды проверил простое негибкое приложение, и свойства ширины и высоты обновились сразу.

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

Наконец я получил ответ, масштабирование не изменит высоту ширины. но в чем дело, я использовал высоту ширины в процентах, чтобы она уменьшалась. Я дважды проверил со статической высотой ширины, я не увеличился, но когда высота ширины увеличилась, scaleX scaleY увеличивается одновременно. Сохраняйте это в уме

Спасибо всем за поддержку Судхарсанан

~~~~ Happy Coding ~~~~~

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...