1
votes

I'm using several custom MXML components in my Flex 4.5 application.

They all use absolute coordinates to place Image, Label, Line, etc. components and are currently based on a spark.components.BorderContainer:

<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer
    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="160" height="140" borderWeight="0" 
    creationComplete="init(event)">

    <s:layout>
        <s:BasicLayout />
    </s:layout>

    <s:Image id="_avatar" x="0" y="0" width="160" height="120" />
    <s:Label id="_username" x="1" y="122" width="80" /> 
    <s:Label id="_bid" x="80" y="122" width="40" textAlign="center" /> 
    <s:Label id="_trix" x="120" y="122" width="36" textAlign="right" />
        .... and so on: Images, Labels, Paths, Lines, Rects .... 
</s:BorderContainer>

Then I've realized, that I probably don't have to use BorderContainer, because I don't draw/need any borders around my custom components.

But I don't know, what to take instead of it.

I've tried taking <mx:UIComponent> (and removing <s:Layout> tag above), but then I get the error:

'Image' declaration must be contained within the <Declarations> tag since it does not implement 'mx.core.IUIComponent'.
'Label' declaration must be contained within the <Declarations> tag since it does not implement 'mx.core.IUIComponent'.

Any suggestions please? Is there some simplest possible spark "container"? And do I need a "container" at all if I use (and want to use) absolute coordinates?

1
What is the code that gives you that error?JeffryHouser
@www.Flextras.com UIComponent hasn't DefaultProperty metatag declaration so if you're inherited your MXML component from UIComponent in Flex >= 4 it can't handle MXML children properly. To handle them properly as properties Flex compiler requires put them in Declarations tag. I see no problems here.Constantiner

1 Answers

4
votes

I recommend you to use s:Group. And you can omit layout declaration as far as BasicLayout is default layout.

UIComponent isn't container so it hasn't default placeholder for children to add them with MXML.