Как проще всего узнать, когда свойство встроенного типа изменяется на определенное значение? - PullRequest
0 голосов
/ 26 января 2010

У меня проблема с Movieclips внутри моего Swf, изменяющая размеры в неправильные размеры. В настоящее время я отслеживаю ширину обидного клипа каждые полсекунды и вижу, как значение изменяется на неправильный размер через некоторый интервал в зарегистрированном выводе. Я действительно хочу увидеть, какой код меняет ширину. Мой план состоял в том, чтобы расширить Movieclip, переопределить свойство set width и создать дамп трассировки стека, если набор значений слишком мал. Это не так просто, однако. Flash жалуется на неопределенную ссылку на компоненты пользовательского интерфейса, которые есть во флаке Movieclip.

Есть ли простой способ узнать, когда / почему это значение изменяется? Я не могу использовать отладчик.

редактирование:

Причина, по которой я не могу просто расширить MovieClip, заключается в том, что я получаю свой объект Movieclip из Event.currentTarget.content после использования Loader. Я не могу указать свой объект Test (extends MovieClip) на это возвращаемое значение, потому что это запрещено.

Я объясню проблему немного больше, и, возможно, у кого-то возникнет другая идея. У меня есть приложение с множеством разных окон. Все они открыты для размера около 750x570. Одно из этих окон содержит FusionChart. когда я загружаю это, согласно моей трассировке, фон Swf, который я использую, изменяется в размере около 2712x1930. Это не имеет смысла для меня, потому что он выглядит того же размера, что и раньше, и в этих размерах он даже не подходит к моему экрану. Если я затем закрою окно и открою другое, новое окно будет маленьким, но оно будет иметь те же размеры, что и исходные окна (750x570).

Это почти как если бы окно масштабировалось до огромных 2712x1930, не показывая изменения в размере, а затем показывая следующее окно (750x570) как размер относительно того, как будет выглядеть огромное окно. Если это имеет смысл ...

Ответы [ 3 ]

1 голос
/ 26 января 2010

Может быть, используя Proxy ?

Класс Proxy позволяет переопределить поведение по умолчанию операций ActionScript (таких как получение и изменение свойств) над объектом.

0 голосов
/ 26 января 2010

что вы имеете в виду под "Flash жалуется на неопределенную ссылку на компоненты пользовательского интерфейса, которые есть в FL Movieclip."изменить в среде выполнения (что редко, если только эти свойства не рассчитаны) ...

, если говорить о ширине и высоте, это два худших свойства в API Flash Player ... для чтения, они рассчитываются по пространству, необходимому DisplayObject в родительском координатном пространстве (если вы поворачиваете DisplayObject, эти свойства изменяются).для записи они на самом деле перенаправляют на scaleX и scaleY ...

0 голосов
/ 26 января 2010

Если вы видите трассировку, которую делаете, и используете отладочную версию флэш-плеера, попробуйте 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());
 }
}
...