Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 在父对象上更改scaleX/scaleY会缩放子对象,但不会更新“高度/宽度”属性?_Apache Flex_Flash - Fatal编程技术网

Apache flex 在父对象上更改scaleX/scaleY会缩放子对象,但不会更新“高度/宽度”属性?

Apache flex 在父对象上更改scaleX/scaleY会缩放子对象,但不会更新“高度/宽度”属性?,apache-flex,flash,Apache Flex,Flash,我创建了一个自定义组件MyImage,它有两个子组件,包括一个位图和一个精灵 我的显示对象层次结构如下- mx:Canvas view:MyImage mx:Bitmap my:Sprite 如果我更改MyImage.scaleX、scaleY属性,子对象将按预期进行缩放 但是,当我尝试在获取调整大小事件时再次使用place将子对象放置在中心时: public function placeAgain():void { if (image=

我创建了一个自定义组件MyImage,它有两个子组件,包括一个位图和一个精灵

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

mx:Canvas
  view:MyImage
     mx:Bitmap
     my:Sprite
如果我更改MyImage.scaleX、scaleY属性,子对象将按预期进行缩放

但是,当我尝试在获取调整大小事件时再次使用place将子对象放置在中心时:

    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();
    }
我发现图像的高度和宽度没有改变,尽管图像被缩放了

在缩放父对象后,子对象不应该更改其边界吗?尤其是在孩子已经被正确缩放之后?为什么子对象的边界与缩放之前的值相同?我没有缓存位图,没有打开位图缓存。

让我们看看

不 还是没有 简言之,让你的开发工作更容易,因为你不必遍历所有的孩子,重新调整他们的宽度/高度/x/y,从而回答你的第四个问题。使用一些固定值,对父对象和bam!应用缩放!,rest flash会处理其余的内容。
此外,这也是您在提问之前可以自己尝试的事情之一,因为设置已经存在…

我是否需要手动递归所有子对象及其子对象,查找显示对象并手动更新其宽度/高度/x/y?这就是我希望它能够工作的方式。我认为缩放本质上是放大/缩小。它不会更改组件的坐标系,也不会更改组件或组件子级的大小。这只会改变他们的感知大小。我不确定我是否理解你所说的-我已经尝试了所有导致这些问题的场景。让开发人员的工作更轻松,因为您不必遍历所有的子对象并重新调整它们的宽度/高度/x/y事实上,您只需这样做,因为仅Flash zoom的子对象不会更改诸如x、y、宽度等属性。为什么要手动更改它们的坐标和尺寸?当然,您可以这样做,不使用scale,而是修改父对象的大小,并且必须递归地重新计算子对象的大小并重新定位它们。但在我看来,这似乎是一种复杂的方式。您可能会遇到需要这样做的场景,但我现在想不出任何方案……一个原因可能是需要调整svg图像的大小,根据我的经验,svg图像在Flex中的伸缩性不好。