2010-01-26 22 views
0

我遇到了我的Swf中的Movieclips問題,因爲它調整了錯誤的尺寸。我目前正在每半秒追蹤違規剪輯的寬度,並且我可以在日誌輸出中的某個時間間隔內將值更改爲不正確的大小。我真的想看看哪些代碼正在改變寬度。我的計劃是擴展Movieclip,覆蓋設置寬度屬性,並在設置值太低時轉儲堆棧跟蹤。然而,這並不那麼簡單。 Flash正在抱怨未定義的參考Movieclip fla上的UI組件。找出內置類型的屬性何時變爲某個特定值的最簡單方法是什麼?

是否有一個簡單的方法來找出何時/爲什麼這個值改變?我不能使用調試器。

編輯:

我不能只是延長影片剪輯是因爲我用的是裝載機後,讓我從Event.currentTarget.content MovieClip對象的原因。我無法將我的Test(擴展MovieClip)對象指向此返回值,因爲這樣做是非法的。

我會再解釋一下這個問題,也許有人會有另一個想法。我有一個有很多不同窗口的應用程序。他們都打開到750x570左右的大小。其中一個窗口包含一個FusionChart。當我加載這個時,根據我的跟蹤,我使用的背景Swf更改爲約2712x1930的尺寸。這對我來說沒有意義,因爲它看起來和以前一樣大小,在這些尺寸下它甚至不會接近我的屏幕。如果我關閉窗口並打開另一個窗口,則新窗口很小,但表示它與原始窗口(750x570)尺寸相同。

這就好像窗口縮放到巨大的2712x1930而沒有顯示大小的變化,然後將下一個窗口(750x570)顯示爲相對於巨大窗口的大小。如果這是有道理的...

+0

你是什麼意思,「Flash是抱怨未定義的參考到在Movieclip fla UI組件。」? 除此之外,你的想法是絕對正確的解決方案... – back2dos 2010-01-26 19:13:26

回答

1

也許使用Proxy

Proxy類允許您覆蓋對象上ActionScript操作的默認行爲(如檢索和修改屬性)。

+0

好想法,但這不會在我的情況。代碼基數很大,而且這個對象遍佈整個地方,所以所有代碼都需要一個'Movieclip'對象,而不是'Proxy'對象。 – Erix 2010-01-26 15:53:34

0

如果你可以看到你正在做的痕跡和使用Flash播放器的調試版本,嘗試overrideError對象中要檢查的財產和trace調用棧棧:

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()); 
} 
} 
0

你是什麼意思?「Flash抱怨未定義的MovieClip fla上的UI組件。」?

你的想法是絕對正確的解決方案一般... ...假設的財產,當談到寬度不從運行時(這是罕見的,除非這些屬性計算)之內改變...

和高度,它們是Flash播放器API中兩個最差的屬性...對於閱讀,它們是通過父對象座標空間中DisplayObject所需的空間來計算的(如果旋轉DisplayObject,則會比這些屬性更改)。對於寫作,他們實際上轉向scaleX和scaleY ...

+0

查看我的編輯 – Erix 2010-01-26 19:26:27

相關問題