我有一个UIComponent,在里面我放了一个加载器(加载一个图像文件)。
问题: 即使我调整UIComponent(到一个正方形)的大小,它仍将遵循加载器中图像的大小。但是当我在装载机中调整图像大小时,它会变得拉长。我想要做的是拥有一个具有固定方形大小的容器(UIComponent),并且在加载图像之后,它将恰好适合容器的尺寸而不会被拉伸。任何人都可以帮我怎么做?
答案 0 :(得分:2)
我一直在使用此功能调整图像大小,同时保留纵横比:
public function constraintResize(iSourceWidth:*, iSourceHeight:*, iTargetWidth:*, iTargetHeight:*, iFitSmallerDimension:*):* {
if (iFitSmallerDimension == undefined) iFitSmallerDimension = false;
if (iTargetWidth == 0 || iTargetHeight == 0) return;
if (iSourceWidth == 0 || iSourceHeight == 0) return;
var newWidth:*;
var newHeight:*;
var targetRatio:*;
var sourceRatio:*;
var output:* = { width:iSourceWidth, height:iSourceHeight };
if (iSourceWidth <= iTargetWidth && iSourceHeight <= iTargetHeight) {
if (iFitSmallerDimension) {
targetRatio = iTargetWidth / iTargetHeight;
sourceRatio = iSourceWidth / iSourceHeight;
if (sourceRatio < targetRatio) {
newHeight = iTargetHeight;
newWidth = newHeight * sourceRatio;
} else {
newWidth = iTargetWidth;
newHeight = newWidth / sourceRatio;
}
output.width = newWidth
output.height = newHeight
}
} else {
targetRatio = iTargetWidth / iTargetHeight
sourceRatio = iSourceWidth / iSourceHeight
if (sourceRatio < targetRatio) {
newHeight = iTargetHeight
newWidth = newHeight * sourceRatio
} else {
newWidth = iTargetWidth
newHeight = newWidth / sourceRatio
}
output.width = newWidth
output.height = newHeight
}
return output
}
该功能将为您提供适合source
target
的理想尺寸。因此,在您的情况下,您可以这样使用它:
var s:* = constraintResize(loader.contentWidth, loader.contentHeight, yourSquare.width, yourSquare.height);
loader.width = s.width;
loader.height = s.height;
答案 1 :(得分:1)
使用UILoader组件并在组件检查器wondow中设置scaleContent = true。