Apache flex 父子约束

Apache flex 父子约束,apache-flex,flash,matrix,transform,scale,Apache Flex,Flash,Matrix,Transform,Scale,例如: var circle1 :Canvas = new Canvas(); var circle2 :Canvas = new Canvas(); circle1.addChild( circle2 ) circle1.scaleX = 2; 在前面的示例之后,Flash将渲染circle2,因为它是circle1的子对象,所以它将缩放为。有没有一种方法可以在不影响circle2的情况下缩放circle1,或者如何处理circle2使其具有相同的缩放比例?这很简单,只是为了补偿您将父对象

例如:

var circle1 :Canvas = new Canvas();
var circle2 :Canvas = new Canvas();

circle1.addChild( circle2 )
circle1.scaleX = 2;

在前面的示例之后,Flash将渲染circle2,因为它是circle1的子对象,所以它将缩放为。有没有一种方法可以在不影响circle2的情况下缩放circle1,或者如何处理circle2使其具有相同的缩放比例?

这很简单,只是为了补偿您将父对象的大小增加了一倍的事实

var circle1 :Canvas = new Canvas();
var circle2 :Canvas = new Canvas();

circle1.addChild( circle2 )
circle1.scaleX = 2;
circle2.scaleX = .5; // Added
处理缩放问题的一个可能很方便的功能可能是:

function setParentOnlyScaleX(parent:Canvas, scale:Number):void {
    parent.scaleX = scale;
    for (var i = 0; i < parent.numChildren - 1; ++i) {
        var child:Canvas = circle1.getChildAt(i);
        child.scaleX  = 1 / scale;
    }
}

这很简单,只是补偿了你双倍于父母的事实

var circle1 :Canvas = new Canvas();
var circle2 :Canvas = new Canvas();

circle1.addChild( circle2 )
circle1.scaleX = 2;
circle2.scaleX = .5; // Added
处理缩放问题的一个可能很方便的功能可能是:

function setParentOnlyScaleX(parent:Canvas, scale:Number):void {
    parent.scaleX = scale;
    for (var i = 0; i < parent.numChildren - 1; ++i) {
        var child:Canvas = circle1.getChildAt(i);
        child.scaleX  = 1 / scale;
    }
}

可能会帮助您:

可能会帮助您:

这里的问题是,我在移动鼠标时缩放事件。因此,如果我在每次鼠标移动时使用父缩放来更改子缩放,它的值将是错误的。如果我能在渲染前捕捉到一个事件,然后更改子矩阵,再在渲染后将其更改回来。渲染完成后是否有事件?我修复了代码。但你认为错误的价值是什么意思?这样子精灵的大小将始终相同。这里的问题是我在鼠标移动时缩放事件。因此,如果我在每次鼠标移动时使用父缩放来更改子缩放,它的值将是错误的。如果我能在渲染前捕捉到一个事件,然后更改子矩阵,再在渲染后将其更改回来。渲染完成后是否有事件?我修复了代码。但你认为错误的价值是什么意思?这样子精灵将始终具有相同的大小。