在AS3中禁用自动缩放

时间:2012-02-28 17:47:45

标签: actionscript-3 layout accordion scaling tweenlite

我正在开发一个AS3项目,其中元素需要在悬停时展开(向下)。问题是我无法弄清楚如何在没有AS3自动缩放所有内容的情况下扩展元素。

例如(thisSprite):

private function expand(event:Event):void {
  TweenLite.killTweensOf(this);
  TweenLite.to(this, .2, {
    height: _dimensions.tall_height
  });
  return;
}

将自动培养this的所有孩子以填充可用空间。我希望禁用此功能,将以前可见的内容保留在原位,以便我可以使用新空间显示其他内容。在scaleY语句中使用TweenLite似乎无能为力。

这对我来说没有任何意义,为什么这是默认行为,但我来自HTML(想想“盒子模型”)布局思维模式,所以我认为这让我陷入困境。

也许我完全错误的想法 - 是否有更适合AS3的方法来“扩展”this来揭示额外的内容?

2 个答案:

答案 0 :(得分:1)

不要扩展Sprite本身,而是扩展其背景元素,希望能够启用9个切片缩放。

听起来也许你正在使用掩码来隐藏其他内容。你可以考虑简单地改变面具的高度。

答案 1 :(得分:1)

好的,所以你不能在Flash中“禁用”缩放。如果你只想显示一个对象的一部分,你将不得不使用所谓的掩码。

假设您有一个对象box(Sprite),并且您只想显示此对象的前200px:

var m:Sprite = new Sprite();

var g:Graphics = m.graphics;
g.beginFill(0);
g.drawRect(0, 0, box.width, 200);
g.endFill();

// Apply mask
box.mask = m;

现在稍后当您想要显示整个对象时,您只需重绘面具:

var m:Sprite = Sprite(box.mask);

// Redraw mask, now 400px
var g:Graphics = m.graphics;
g.beginFill(0);
g.drawRect(0, 0, box.width, 400);
g.endFill();

// Reapply mask
box.mask = m;

等等。

如果你正在使用AS3项目(不是Flex),你几乎可以忘记设置宽度/高度。