【发布时间】:2013-04-08 19:03:31
【问题描述】:
我正在尝试将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)
【问题讨论】:
-
tweenW, tweenH, tweenX...它们是全局变量还是函数级变量?我问是因为看起来垃圾收集器在完成工作之前正在从内存中删除这些补间对象。确保在这些补间对象完成之前保持对它们的引用。这是来自fl包的补间引擎的常见问题。 -
我使用嵌套函数。补间总是在完成,
HTMLLoader似乎跟不上。private function SetupResize(/*vars*/) {/* ... */ var tweenX:Tween; /* .. */ function DoTween(t:Number) { /* tweens here */ } }
标签: actionscript-3 flash air tween