调整HTMLLoader大小的大小落后于位置

时间:2013-04-08 19:03:32

标签: actionscript-3 flash air tween

我正在尝试调整HTMLLoader的大小和重新定位相同的数量,但HTMLLoader的大小始终落后于该位置至少一帧。位置和大小都改变了相同的数量。手动更改大小和使用补间时都会发生这种情况。我试图将控制位置的补间延迟到一个框架,这有时会有所帮助,但有时会使情况变得更糟。

代码:

// t is the time, 0.5 in this case
// ease is the easing function, I tried linear and Regular.easeInOut
tweenW  = new Tween(gallery.masker, "width", ease, gallery.masker.width, (full ? largeX : smallX), t, true);
tweenH  = new Tween(gallery.masker, "height", ease, gallery.masker.height, (full ? largeY : smallY), t, true);
tweenX  = new Tween(gallery.masker, "x", ease, gallery.masker.x, (full ? -posX : 0), t, true);
tweenY  = new Tween(gallery.masker, "y", ease, gallery.masker.y, (full ? -posY : 0), t, true);
tweenBX = new Tween(border, "x", ease, border.x, (full ? 0 : posX), t, true);
tweenBY = new Tween(border, "y", ease, border.y, (full ? 0 : posY), t, true);
tweenBW = new Tween(border, "width", ease, border.width, (full ? largeX * borderMultX : smallX * borderMultX), t, true);
tweenBH = new Tween(border, "height", ease, border.height, (full ? largeY * borderMultY : smallY * borderMultY), t, true);

HTMLLoader调整代码大小(Event.EXIT_FRAME):

loader.width = gallery.masker.width;
loader.height = gallery.masker.height;
loader.x = gallery.masker.x;
loader.y = gallery.masker.y;

显示时,gallery.masker的大小是正确的,但HTMLLoader仍然落后

示例:

HTML内容是一个空的绿色页面,gallery.masker是一个红色的形状,在HTMLLoader之上有50%的alpha值。补间已经完成了扩张的一半。

(它不允许我发布图片,有人可以编辑吗?http://img571.imageshack.us/img571/3699/resizeq.png

编辑:http://www.mediafire.com/?5c2zkhmb6v9b61u提供了一个最小的例子(包含CS6 .fla,所有来源,.swf和app.xml)

1 个答案:

答案 0 :(得分:0)

来自fl包的补间引擎已知问题,每个Tween对象的引用应该保留到完成,否则在大多数情况下,垃圾收集器会在完成继承人作业之前删除这些对象。因此,目标/补间对象的属性被冻结。

@Malik Drako在你的情况下你可以在全局Tween个对象上进行引用以保持它们的存活,或者更灵活的方式是采用一个Vector并为引用设置一些拉动机制,所以在第二种情况下,您不需要为每个Tween对象命名,同时您可以根据需要创建尽可能多的Tween