1

我想在短圆角矩形和高圆角矩形之间进行补间。(我只想处理高度 - 没有其他参数)。我正在使用 actionscript 3 进行编程。我的补间引擎是 TweenLite。

我一直在补间一个包含圆角矩形的精灵。补间精灵会产生失真。我想我一直在缩放原始图像,而不是圆角矩形的高度?

这是我的代码的一个简单示例:

-

绘制圆角矩形:

圆形矩形 = 新精灵();
roundRect.graphics.beginFill(0x000000);
roundRect.graphics.drawRoundRect(0,0,50,15,4,4); //原始高度:15
roundRect.graphics.endFill();
addChild(roundRect);

然后我在圆角矩形上监听鼠标点击事件。

鼠标事件触发一个函数,代码如下:

TweenLite.to(this.roundRect, 1, {height:120}); //最终高度:120

-

我想补间圆角矩形本身的高度。我希望这不会产生不必要的失真。有什么办法可以做到这一点?

谢谢你。

4

2 回答 2

2

这可以通过“9 片缩放”来实现。

下面是关于如何设置 Movieclip 以使用 9 切片指南的两个教程,一个通过 IDE(使用指南)完成,另一个通过代码完成(通过定义一个名为 grid 的矩形并将其分配给动画剪辑的 scale9Grid 属性) .

http://www.sephiroth.it/tutorials/flashPHP/scale9/

http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001003.html

正确分配 scale9Grid 属性后,您可以按预期缩放(和补间)影片剪辑,而不会产生任何失真。

它也可能值得一读:http : //www.odiudiac.ro/blog/2009/05/scale9grid-work-and-fail/ 描述了 scale9grid 工作和不工作的各种场景。(主要与在网格内嵌套子级和非矢量图形有关)。

希望这可以帮助。

于 2009-07-15T09:24:13.020 回答
0

作为替代方案,由于它只是一个圆角矩形,您还可以执行以下操作:

var rectHeight = 15;
var roundRect = new Sprite();
addChild(roundRect);
updateRect();

function updateRect() {
    roundRect.graphics.clear();
    roundRect.graphics.beginFill(0x000000);
    roundRect.graphics.drawRoundRect(0,0,50,rectHeight,4,4);
    roundRect.graphics.endFill();
}

roundRect.addEventListener("click", click);
function click(e) {
    TweenLite.to(this, 1, {rectHeight:120, onUpdate:updateRect});
}
于 2009-07-27T19:17:06.160 回答