首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scale DisplayObject与width的关系

scale DisplayObject与width的关系
EN

Stack Overflow用户
提问于 2012-11-08 20:21:16
回答 2查看 468关注 0票数 0

事件如果容器缩放,则其本身及其子级都不会更改宽度值,那么它们如何更改其宽度?

代码语言:javascript
复制
<?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[
            private function scaleOutContainer():void {
                outerContainer.scaleX = slider.value;
                trace("outerContainer.width: " + outerContainer.width);
                trace("outerContainer.scaleX: " + outerContainer.scaleX);
                trace("image width: " + fotoImig.width);
                trace("image scaleX: " + fotoImig.scaleX);
                var containerBound:Rectangle = outerContainer.getBounds(this);
                trace(containerBound);
                trace("=====================");
            }
        ]]>
    </fx:Script>
        <s:Group id="outerContainer" left="50" top="80" width="500">
            <s:layout>
                <s:VerticalLayout/>
            </s:layout>
            <s:BitmapImage id="fotoImig" source="@Embed('assets/foto.jpg')"/>
            <s:Label id="info" text="Test Scale"/>
        </s:Group>
        <s:HGroup left="50" top="50">
            <s:Label text="scale outContainer"/><s:HSlider id="slider" snapInterval="0.1" value="1" change="scaleOutContainer()"/>
        </s:HGroup>
</s:Application>
EN

回答 2

Stack Overflow用户

发布于 2012-11-09 00:15:42

scaleXscaleY不会以任何方式影响对象的实际大小。缩放属性只需修改它们在屏幕上的显示方式。对于应用程序来说,50x50框仍然是50x50,即使它在scaleX = scaleY = 4屏幕上看起来是200x200。

缩放是以这种方式完成的,因此原始大小永远不会丢失。这样,您可以自由地重复缩放对象,使其始终相对于原始大小。

我不确定scale属性实际上是如何工作的。如果您实际深入研究DisplayObject的一些属性,就会发现有多个宽度值(width、measuredWidth、explicitWidth以及UIComponent中的percentWidth )。我的猜测(不幸的是,纯粹是猜测)是其中一个值发生了变化,而宽度/高度值保持不变。

如果需要缩放对象的宽度/高度值,只需将宽度/高度值乘以它们各自的缩放属性即可。

票数 0
EN

Stack Overflow用户

发布于 2014-07-05 06:23:52

每个DisplayObject仅具有变换矩阵(在object.transform.matrix上提供)。值,例如x,y,scaleX,scaleY,rotation,width,height ...只是setter / getter函数,与矩阵一起工作。

例如,scaleX getter是Math.sqrt(m[0]*m[0] + m[1]*m[1] + m[2]*m[2]);,它对应于具有由变换矩阵的第一行定义的大小的框的对角线。

宽度 getter为o.getBounds(o.parent).width

height getter为o.getBounds(o.parent).height

但是我仍然不明白,宽度和高度设置器是如何工作的。例如。

代码语言:javascript
复制
var rect = new Sprite();
rect.graphics.drawRect(0,0,100,100);
rect.rotation = 20;
trace(rect.width);  // 128.15
rect.width = 80;
trace(rect.width);  // 92.85
rect.width = 80;
trace(rect.width);  // 89.4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13289034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档