Могу ли я сделать свой компонент MXML синглтоном? - PullRequest
0 голосов
/ 16 декабря 2009

У меня есть компонент MXML на веб-сайте, который я повторно использую на нескольких разных экранах. В зависимости от того, что пользователь нажимает, компонент инициализирует несколько значений и начинает воспроизведение мультимедиа.

Теперь, если я нажимаю на сайте и воспроизводлю мультимедиа на экране 1, компонент хорошо инициализируется и воспроизводит мультимедиа.

Если затем перейти к экрану 2 и воспроизвести носитель, компонент будет инициализирован дважды. Один раз для первого экрана и один раз для второго экрана.

Когда я перехожу к третьему экрану, он начинает инициализацию три раза .. Итак, он создает новый экземпляр компонента MXML для каждого экрана !!

Как я могу убедиться, что компонент MXML инициализируется только для экрана, для которого он нужен для инициализации?

Что я действительно хочу, так это чтобы этот компонент всегда имел только один экземпляр во всем приложении. Можно ли превратить этот компонент MXML в синглтон, чтобы в моем приложении всегда был один экземпляр этого MXML?

Ответы [ 2 ]

2 голосов
/ 16 декабря 2009

Можете ли вы объяснить это немного глубже? Что вы подразумеваете под "экранами"? Похоже, ваш компонент вложен в какой-то вид стека, и что ваши экраны - это разные секции в стеке представлений, но здесь трудно сказать.

Несмотря на это, я думаю, что решение состоит в том, чтобы абстрагировать часть вашего компонента, которую вы хотите, чтобы она была единичной, от представления. Flex по умолчанию инициализирует объекты в стеках представления ленивым образом, но это можно переопределить с помощью свойства creationPolicy объекта ViewStack. Похоже, ваш creationPolicy инициализирует дочерние элементы при доступе к ним, и что-то в коде компонента заставляет другие экземпляры одного и того же объекта повторно запускать некоторый код инициализации при создании других (возможно, при экспериментировании для одноэлементного MXML.)

Чтобы по-настоящему достичь желаемого эффекта, вам, вероятно, следует просто написать небольшой код действия, который интеллектуально переопределяет экранный объект, который вы хотите создать только дважды. Идея «синглтона» не имеет особого смысла, когда мы говорим о просмотре объектов на экранах - чтобы отобразить его во многих местах, вам нужно много экземпляров, а процесс переучивания немного сложнее, чем шаблон синглтона, так что вам нужно немного поработать над этим.

Надеюсь, это поможет - снова, пожалуйста, не стесняйтесь размещать еще немного исходного кода, если вы хотите более конкретный ответ.

1 голос
/ 16 декабря 2009

Почему бы вам не превратить компонент в модуль и не использовать его таким образом. Вы загружаете и / или выгружаете модуль и используете его где угодно! просто называя это как один элемент! и у вас намного меньше накладных расходов в вашем приложении.

...