Проблема с глубиной между двумя компонентами в flex - PullRequest
0 голосов
/ 06 сентября 2011

Я знаю, что я собираюсь спросить, может быть слишком просто, но я не смог найти решение своей проблемы.

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

Кроме того, у меня есть пользовательский компонент с именем 'header', который выполняет рисование нескольких заголовков таблицы.

Теперь, если я добавлю заголовок как <ui:header width="100%" and height="40"\> в скины сразу после растрового изображения, тогда заголовок отобразится так, как и должно быть.Но, если я поместил заголовок в окно приложения, то он отобразится под битмапизображением, которое невозможно увидеть, пока битмапайм не будет удален.

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

Если у вас есть идея, пожалуйста, помогите мне.Спасибо

Вот биты кода

`

<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"    xmlns:s="library://ns.adobe.com/flex/spark"                         xmlns:mx="library://ns.adobe.com/flex/mx"                           skinClass="ui.uiskin"
height = "728" width="910"                     
xmlns:ui="ui.*">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <ui:header x="0" y="{.0258*height}" depth="0"
               height="{0.0774*height}" width="100%"/>
</s:WindowedApplication>

`

uiskin

`

<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:ui="com.youspin.components.ui.*"
        depth="-10">
    <!-- host component -->
    <fx:Metadata>
        [HostComponent("spark.components.WindowedApplication")]
    </fx:Metadata>

    <fx:Script>
        <![CDATA[

        ]]>
    </fx:Script>
    <!-- states -->
    <s:states>
        <s:State name="disabledAndInactive" />
        <s:State name="normalAndInactive" />
        <s:State name="disabled" />
        <s:State name="normal" />
    </s:states>

    <s:BitmapImage source="@Embed('../../images/ui/background.png')" depth="-10"/>

    <s:TitleBar left="0" right="0" top="1" 
                height="{0.0258*height}" 
                skinClass="titleSkin"/>

    <ui:header x="0" y="{.0258*height}" depth="0"
               height="{0.0774*height}" width="100%"/>  

</s:Skin>

`

и заголовок

`

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx"
         width="100%" height="100%"
         >
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <s:Rect width="100%" height="{.04*height}">
        <s:fill>
            <s:SolidColor color="black"/>
        </s:fill>
    </s:Rect>

    <s:Rect width="100%" height="100%"
            left="0" top="2"
            alpha=".2"
            >
        <s:fill>
            <s:SolidColor color="black"/>
        </s:fill>
    </s:Rect>

    <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
             xmlns:s="library://ns.adobe.com/flex/spark" 
             xmlns:mx="library://ns.adobe.com/flex/mx"
             width="100%" height="100%"
             top="2" left="0"
             id="headingsGroup"
             >
        <mx:Image source="@Embed('../../images/header/logo.png')" 
                  width="{0.2*headingsGroup.width}"
                  left="{0.015*headingsGroup.width}" top="{0.04*headingsGroup.height}"/>

        <!-- left line drop -->
        <s:Rect left="{.25*headingsGroup.width}" top="0"
                width="2" height="{.23*headingsGroup.height}">
            <s:fill>
                <s:SolidColor color="black"/>
            </s:fill>
        </s:Rect>

        <!-- middle line drop -->
        <s:Rect left="{.50*headingsGroup.width}" top="0"
                width="2" height="{.23*headingsGroup.height}">
            <s:fill>
                <s:SolidColor color="black"/>
            </s:fill>
        </s:Rect>
        <!-- side line drop -->
        <s:Rect left="{.75*headingsGroup.width}" top="0"
                width="2" height="{.23*headingsGroup.height}">
            <s:fill>
                <s:SolidColor color="black"/>
            </s:fill>
        </s:Rect>

        <s:Label text="artist"
                 top="{0.06*headingsGroup.height}"
                 horizontalCenter="{-0.125*headingsGroup.width}"
                 styleName="balonez"/>
        <s:Label text="song"
                 top="{0.06*headingsGroup.height}"
                 horizontalCenter="{0.125*headingsGroup.width}"
                 styleName="balonez"/>
        <s:Label text="album"
                 top="{0.06*headingsGroup.height}"
                 horizontalCenter="{0.375*headingsGroup.width}"
                 styleName="balonez"/>

        <!-- bottom line -->
        <s:Rect left="{.25*headingsGroup.width}" top="{.22*headingsGroup.height}"
                width="{.75*headingsGroup.width}" height="2">
            <s:fill>
                <s:SolidColor color="black"/>
            </s:fill>
        </s:Rect>
    </s:Group>


    <fx:Style>
        @font-face {
            src:url("../../fonts/balonez fantasia.ttf");
            fontFamily: myFontFamily;
            advancedAntiAliasing:true;
        }

        .balonez{
            font-family:myFontFamily;
            font-size:25;
        }
    </fx:Style>
</s:Group>

`

Некоторые части кода здесь не показаны, но я думаю,вышеприведенное должно дать вам представление о том, что я пытаюсь сделать.

То, что я пытался сделать, - это то, что у моего windowedapplication есть свой собственный скин, т.е. uiskin.А также есть отдельный компонент, который называется «заголовок».В uiskin.mxml я добавил bitmapimage, чтобы использовать его в качестве фона окна приложения.И в оконном приложении я добавил заголовок.Это заставляет заголовок появляться позади изображения.

Пока что я добавил заголовок внутри uiskin после растрового изображения.Теперь это заставляет заголовок отображаться над битмапизображением.Но я на самом деле хочу поместить заголовок в окно приложения, а не в пользовательский скин.Есть ли способ сделать это.

Ответы [ 3 ]

1 голос
/ 15 сентября 2011

Я нашел ответ на свой вопрос. Все, что было нужно, это групповой тег, чтобы содержимое оконного приложения отображалось над изображением, установленным в скине оконного приложения.

<s:Group id="contentGroup" left="0" top="0" right="0" bottom="0" />

Позаботьтесь также о сохранении идентификатора, у меня не получилось, когда я удалил идентификатор. Также, вот ссылка , если кому-то это нужно.

1 голос
/ 06 сентября 2011

Можете ли вы показать нам код?Поскольку при добавлении компонентов в список отображения с использованием MXML важен порядок их записи.Например, следующий код добавит метку , а затем изображение.Если координаты двух компонентов перекрываются, изображение будет покрывать метку.Часть mxml гибкого компонента перебирается сверху вниз.Видите?

<s:Label
    id="labelContent"
    width="100%" height="100%"/>
<s:Image id="imageContent" horizontalCenter="0" verticalCenter="0"/>
0 голосов
/ 06 сентября 2011

Я понимаю некоторые вещи, опубликованные вами.Если вы поместите изображение, а затем заголовок, заголовок скрывает изображение.мое решение заключается в следующем:

имеет H-группу со 100% шириной 100%

<s:HGroup width="100%" height="100%">
     <ui:header width="100%" height="40"\>
     <s:Image width="100%" height="60%"\>
</s:HGroup>
...