0

我在将我的 Swf 中的 Movieclips 调整为错误的尺寸时遇到问题。我目前每半秒跟踪一次有问题的剪辑的宽度,我可以在记录的输出中看到值在某个时间间隔内更改为不正确的大小。我真的很想看看是什么代码改变了宽度。我的计划是扩展 Movieclip,覆盖设置的宽度属性,并在设置的值太低时转储堆栈跟踪。然而这并不是那么简单。Flash 抱怨对 Movieclip fla 上的 UI 组件的未定义引用。

有没有一种简单的方法来找出这个值何时/为什么会改变?我不能使用调试器。

编辑:

我不能仅仅扩展 MovieClip 的原因是因为我在使用 Loader 后从 Event.currentTarget.content 中获取了我的 Movieclip 对象。我不能将我的测试(扩展电影剪辑)对象指向这个返回值,因为这样做是非法的。

我会再解释一下这个问题,也许有人会有另一个想法。我有一个有很多不同窗口的应用程序。它们都打开到大约 750x570 的大小。其中一个窗口包含一个 FusionChart。当我加载这个时,根据我的跟踪,我使用的背景 Swf 更改为大约 2712x1930 的尺寸。这对我来说没有意义,因为它看起来和以前一样大小,而且在那些尺寸上它甚至不会接近我的屏幕。如果我然后关闭窗口并打开另一个窗口,新窗口很小,但说它与原始窗口具有相同的尺寸(750x570)。

就好像窗口正在缩放到巨大的 2712x1930 而不显示大小变化,然后将下一个窗口 (750x570) 显示为相对于巨大窗口看起来的大小。如果这有意义...

4

3 回答 3

1

也许使用代理

Proxy 类允许您覆盖对象上的 ActionScript 操作(例如检索和修改属性)的默认行为。

于 2010-01-26T14:41:12.577 回答
0

如果您可以看到您正在执行的跟踪并使用 Flash 播放器的调试版本,请尝试override检查您要检查的属性和对象trace内的调用堆栈堆栈Error

public class Test extends Sprite() {
 // property to watch
 override public function set x(value:Number):void{
  super.x=value;
  // trace the calling stack work only in the flash debug player
  trace((new Error()).getStackTrace());
 }
}
于 2010-01-26T18:06:52.937 回答
0

“Flash 抱怨对 Movieclip fla 上的 UI 组件的未定义引用”是什么意思?

一般来说,您的想法绝对是正确的解决方案......假设属性在运行时内没有改变(这种情况很少见,除非计算出这些属性)......

当涉及到宽度和高度时,它们是 Flash 播放器 API 中最糟糕的两个属性......对于阅读,它们是由父坐标空间中的 DisplayObject 所需的空间计算的(如果旋转 DisplayObject,则这些属性会发生变化)。对于写作,他们实际上转发到 scaleX 和 scaleY ...

于 2010-01-26T19:19:45.983 回答