ActionScript 3:调整UIComponent中的图像大小

时间:2011-08-26 08:33:38

标签: actionscript-3 actionscript

我有一个UIComponent,在里面我放了一个加载器(加载一个图像文件)。

问题: 即使我调整UIComponent(到一个正方形)的大小,它仍将遵循加载器中图像的大小。但是当我在装载机中调整图像大小时,它会变得拉长。我想要做的是拥有一个具有固定方形大小的容器(UIComponent),并且在加载图像之后,它将恰好适合容器的尺寸而不会被拉伸。任何人都可以帮我怎么做?

2 个答案:

答案 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。