【问题标题】:Scale from center point with Tween Class AS3使用 Tween Class AS3 从中心点缩放
【发布时间】:2012-12-14 20:02:41
【问题描述】:

我需要使用 Tween 类 AS3 从其中心点缩放动态文本框。

基本上,我需要在 300 毫秒左右缩小到 50%……完成后我想再次放大到 100% 并停止动画。

我尝试将中心点设置为文本框的中心,但它总是从左侧缩放。

好吧,我一直在努力学习 Tween 类的基础知识,但我相信它缺少一些好的属性和方法,比如 greensock!

谢谢。

title_txt.text = "Text";

var textScaleX:Tween;
var textScaleY:Tween;

title_txt.addEventListener(MouseEvent.MOUSE_OVER, scaleObj(1,2, 1));

function scaleObj(startUp:int, endUp:int, duration:int){
    textScaleX = new Tween(title_txt, "scaleX", Strong.easeInOut, startUp, endUp, duration, true);
    textScaleY = new Tween(title_txt, "scaleY", Strong.easeInOut, startUp, endUp, duration, true);
}

【问题讨论】:

  • 将文本字段放在影片剪辑中,并将影片剪辑中的文本字段居中。然后在该影片剪辑而不是文本字段之间进行补间
  • 好吧,我明白了,但我有一个问题,文本字段的文本来自一个 xml,并在这样的 for 循环中分配:for(...){this.[" textbox"+0] = list.parent.child.text()[i];} 如何在 for 循环中将列表文本值分配给影片剪辑? for(...){this.["mcname"+i]} 到这里没问题,但我怎样才能到达 for 循环内的影片剪辑内的文本字段?

标签: actionscript-3 apache-flex flash-cs5


【解决方案1】:

文本字段的来源总是在左上角。但是,您可以计算左上角在比例尺的 50% 处以及 x 和 y 位置的补间以及 scaleX 和 scaleY 值。

50% x 和 y 的快速计算如下:

50% x = 100% x 位置 + (100% 文本字段宽度)/4

50% y = 100% y 位置 + (100% 文本字段高度)/4

编辑:以下是代码中的计算方式:

var targetScale:Number = .5;    //scale 50% but any other scale would work here as well
var targetX:Number = title_txt.x + (title_txt.width - title_txt.width * targetScale) / 2;
var targetY:Number = title_txt.y + (title_txt.height - title_txt.height * targetScale) / 2;

我使用自己的补间类,因此我不确定如何使用 Adob​​e 补间类或 TweenLite 类来实现这一点,但如果您将这些数字粘贴在任何补间类中,则文本字段(或任何其来源的对象左上角)将围绕中心点进行缩放。

【讨论】:

  • 你能给我一个AS3代码的真实例子吗?非常感谢您的帮助。
  • 我在答案中放了一个例子..希望它有所帮助。
【解决方案2】:

补间的第一个技巧:

  • 不要使用 adobe 补间类:它们的功能不够好。

使用 TweenLite:它更易于使用且功能更多。

我知道这并不是你问题的真正答案,但其他人已经涵盖了这一点。

【讨论】:

  • 非常感谢您的帮助。但我真的找不到解决方案。我知道 tweenmax 有一种从中心缩放的方法,但我买不起。我还尝试添加文本字段作为精灵的孩子更改了精灵的注册点并且仍然从左侧缩放:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
  • 2013-08-31
  • 2018-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多