我正在开发一个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
来揭示额外的内容?
答案 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),你几乎可以忘记设置宽度/高度。