在父级上更改scaleX / scaleY会缩放子级但不更新高度/宽度属性?

时间:2010-11-23 18:27:43

标签: flex flash

我创建了一个自定义组件 - MyImage - 它有两个子节点,包括一个Bitmap和一个Sprite。

我的显示对象层次结构如下 -

mx:Canvas
  view:MyImage
     mx:Bitmap
     my:Sprite

如果我更改了MyImage.scaleX,scaleY属性,则子项会按照我的预期进行缩放。

然而,当我尝试使用placeAgain()将孩子放在中心时获取调整大小事件:

    public function placeAgain():void
    {
        if (image==null) return;

        var pCanvas:Canvas = this.parent as Canvas;
        if (image.width <= pCanvas.width)
        {
            pCanvas.horizontalScrollPolicy="off";
            image.x = (pCanvas.width -image.width)/2;
        }
        else
        {
            pCanvas.horizontalScrollPolicy="on";
            image.x=0;
        }
        if (image.height <= pCanvas.height)
        {
            pCanvas.verticalScrollPolicy="off";
            image.y = (pCanvas.height -image.height)/2;
        }
        else
        {
            pCanvas.verticalScrollPolicy="on";
            image.y=0;
        }
        alignKids();
    }

我找到了image.height&amp;尽管图像缩放,宽度仍未改变!

在缩放其父级后,孩子是否应该更改其边界?特别是在孩子真正缩放后?为什么孩子的界限与缩放前的值相同?我没有缓存Bitmap,没有打开位图的缓存。

1 个答案:

答案 0 :(得分:0)

让我们看看......

  1. 没有
  2. 仍然没有
  3. 简而言之,为了让您的开发人员工作更轻松,因为您不必经历所有孩子并重新调整他们的宽度/身高/ x / y(因此也回答了您的第4个问题)。你使用一些固定值,在父母和bam上应用缩放!其余的闪光灯负责其余部分。
  4. 这也是你在问之前可以尝试过的事情之一,因为设置已经存在......