Я поместил два пользовательских компонента в приложение flex 4
<preload:PreLoader horizontalCenter="0" verticalCenter="0" fontWeight="bold" fontSize="50" id="preLoader"/>
<util:Debug top ="0" right="0" id="debug"/>
В соответствии с компонентами заказа, добавленными в MXML, отладка останется на вершине.
Мое намерениевсегда держать компонент Debug сверху
компонент PreLoader имеет всю логику для инициализации приложения, включая создание экземпляров некоторых классов, в которых есть логика для добавления некоторых других элементов в приложение (как показано ниже)
FlexGlobals.topLevelApplication,addElement(someotherflexcomp);
Теперь, каждый раз, когда я добавляю элемент, нормальное поведение flex / AS заключается в том, что вновь добавленный элемент будет оставаться поверх displaylist.
Итак, я написалфункция в главном приложении, которая должна вызываться при добавлении компонента / элемента в главное приложение.
public function bringDebuggerFront():void{
if (numElements > 2){
swapElementsAt(numElements - 1,numElements - 2);
}
}
Идея здесь проста, поменять местами позицию отображения последнего N-го (последнего элемента)) элемент с элементом N-1, который будет компонентом Debug, если вызывается при каждом добавлении элемента.
Итак, мне нужно добавить дополнительную строку визмените положение вдовы отладчика следующим образом:
FlexGlobals.topLevelApplication,addElement(someotherflexcomp);
FlexGlobals.topLevelApplication.bringDebuggerFront();
Пока это не большая проблема, потому что, в настоящее время я добавляю только три компонента во время выполнения, но я мог бы добавить больше в будущем и больше, мне придетсяработайте больше (комментируйте или удаляйте этот код, разбросанный по нескольким местам), чтобы отключить эту функцию, которая предназначена только для отладки.
Чтобы избежать этого, я добавил add слушатель событий, который предполагается вызывать при каждом добавлении элемента в приложение, но кажется, что он вызывается только для двух компонентов, которыеЯ добавил в mxml, но не вызывается, когда элемент добавляется в приложение, используя addElement () метод
Вот полный код моего основного приложения
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:util="util.*" xmlns:preload="preload.*"
add="bringDebuggerFront()">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<preload:PreLoader horizontalCenter="0" verticalCenter="0" fontWeight="bold" fontSize="50" id="preLoader"/>
<util:Debug top ="0" right="0" id="debug"/>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
public function bringDebuggerFront():void{
if (numElements > 2){
swapElementsAt(numElements - 1,numElements - 2);
}
}
]]>
</fx:Script>
</s:Application>
Я даже пытался с добавлено событие, но я думаю, что это не правильно, так как вызывается так много раз, что, как я полагаю, вызывается для каждого внутреннего объекта отображения, а также выдает ошибки, которые я не сделалкопались в деталях
Заранее спасибо за помощь