0

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

例如(this是一个Sprite):

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

将自动增长所有子节点this以填充可用空间。我希望禁用此功能,将以前可见的内容留在原地,以便我可以在新空间中显示其他内容。scaleY在声明中玩弄TweenLite似乎没有任何作用。

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

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

4

2 回答 2

1

与其展开 Sprite 本身,不如展开它的背景元素,希望能够启用 9 切片缩放。

听起来您可能正在使用掩码来隐藏其他内容。您可以考虑简单地更改蒙版的高度。

于 2012-02-28T18:47:07.367 回答
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),您几乎可以忘记设置宽度/高度。

于 2012-02-28T20:24:27.417 回答