Переместить приложение без окон на перетаскивание в flex 4
Я реализовал приложение без окна Chrome в Flex 4. Но при этом я заметил, что все функции максимизации, минимизации и даже перетаскивания окна исчезли. Мне нужна возможность перетаскивать окно. Я много гуглил и ничего не смог придумать. Может ли кто-нибудь PLZ указать мне в правильном направлении.
Заранее спасибо.
1 ответ
Вам нужно будет создать собственный скин для вашего WindowedApplication. Если вы посмотрите в код WindowedApplication, вы найдете это:
[SkinPart (required="false")]
public var titleBar:TitleBar;
Это означает, что вы можете добавить TitleBar к скину, но это не обязательно. На самом деле, WindowedApplicationSkin по умолчанию не имеет заголовка заголовка.
Включение титульной строки в пользовательский скин автоматически даст вам возможность перетаскивания. По умолчанию TitleBarSkin поставляется с обычными кнопками окна (свернуть, развернуть, закрыть), так что вы можете также создать свой собственный скин. Один без кнопок, если они вам не нужны.
Вот урезанный пример.
Пользовательский скин для WindowedApplication (только белый фон и панель заголовка):
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" >
<fx:Metadata>[HostComponent("Object")]</fx:Metadata>
<s:states>
<s:State name="normal" />
<s:State name="disabled" />
<s:State name="normalAndInactive" />
<s:State name="disabledAndInactive" />
</s:states>
<s:Rect id="backgroundRect" left="0" right="0" top="0" bottom="0" >
<s:fill>
<s:SolidColor id="backgroundFill" color="0xffffff" />
</s:fill>
</s:Rect>
<s:TitleBar left="0" right="0" top="0" height="24"
skinClass="skin.TitleBarSkin" />
<s:Group id="contentGroup" left="0" right="0" top="25" bottom="0" />
</s:Skin>
Пользовательский скин для вашего TitleBar (только градиентный фон и кнопка закрытия):
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
minHeight="24" >
<fx:Metadata>
[HostComponent("spark.components.windowClasses.TitleBar")]
</fx:Metadata>
<s:states>
<s:State name="normal" />
<s:State name="disabled" />
<s:State name="normalAndMaximized" />
<s:State name="disabledAndMaximized" />
</s:states>
<s:Rect id="background" left="0" right="0" top="0" bottom="0">
<s:fill>
<s:LinearGradient rotation="90">
<s:GradientEntry color="0xFFFFFF" />
<s:GradientEntry color="0xBABABA" />
</s:LinearGradient>
</s:fill>
</s:Rect>
<s:Button id="closeButton" label="close" right="0" verticalCenter="0" />
</s:Skin>
По-видимому, требуется closeButton, поэтому вам придется включить его в скин. Но если вы все еще хотите избавиться от него, просто установите для его свойств visible и includeInLayout значение false.