我正在尝试对MovieClip对象的width属性应用补间,但每次更改宽度和位置时,我都不希望这样。我想改变宽度,而不改变对象的x和y。
我尝试了两个并且他们给出了相同的结果。
var c:Tween = new Tween(left, "scaleX", Strong.easeOut, 1, 1.5,20,true);
var c:Tween = new Tween(left, "width", Strong.easeOut, 20, 200,20,true);
我认为它是根据影片剪辑的中心应用转换。但我不知道如何改变它。
任何帮助?
答案 0 :(得分:2)
你的问题是你没有正确地绘制你的影片剪辑而且它的边界框不能从x,y,0开始;
你可以做什么
1.修复影片剪辑以使图形处于0,0位置。
要么
2.将“左”对象放在位置0,0和比例位置的另一个对象内。
要么
3.在重新调整大小动画时,您也可以按比例移动x坐标
var c:Tween = new Tween(left, "width", Strong.easeOut, 20, 200,20,true);
var c1:Tween = new Tween(left, "x", Strong.easeOut, left.x, left.x+delta*200/(2*20),20,true);
其中delta是影片剪辑中的图像。
答案 1 :(得分:0)
首先,回避默认的Tween引擎。有更好的替代方案(这是主要原因,默认的Tween引擎在很长一段时间内没有得到平台开发人员的任何关注)。有些可能性可能是found here,也可能是网络上的。
是的,事实上,该对象在补间时改变位置,显示它的注册点不在相对于该对象的坐标0上。解决方案是:
如果有可能,请更改对象的注册点。也许通过Flash IDE或以编程方式放置组件,例如reg point将相对于对象为0。
每次迭代都将它向右移动一半的扩展值。
这个小片段解释说,将其翻译成补间应该很容易:
this.addEventListener(Event.ENTER_FRAME, _loop);
function _loop(event:Event):void
{
derp.width += 10; // every iteration makes width 10 px bigger
derp.x += 5; // 10 / 2 = 5; might want to calculate this dynamically.
}
请记住,如果注册点位于对象的死点(x轴上),这只能很好地工作。