SOLVED: Composite skinning


as far know there 2 ways skin custom components:

 

1) copy , paste base skin (spark.skins.spark.titlewindow etc.) , modify it;

2) create composite skin.

 

i have 1) working little large , looking cut down on size of skin. read post on extending skins suggested possible:

 

-- start: dialognoteskin.mxml --

 

<?xml version="1.0" encoding="utf-8"?>

<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/halo"

        xmlns:skins="spark.skins.spark.*">

 

    <fx:metadata>[hostcomponent("view.dialognote")]</fx:metadata>

 

    <fx:script>

        <![cdata[

            import spark.components.group;

            import spark.skins.spark.titlewindowskin;

 

            public function contentgroup():group {

                return titlewindowskin.contentgroup;

            }

 

        ]]>

    </fx:script>

 

    <s:states>

        <s:state name="normal" />

        <s:state name="inactive" />

        <s:state name="disabled" />

        <s:state name="normalwithcontrolbar" />

        <s:state name="inactivewithcontrolbar" />

        <s:state name="disabledwithcontrolbar" />

        <s:state name="closed" />

    </s:states>

 

    <skins:titlewindowskin id="titlewindowskin" left="0" right="0" top="0" bottom="0" />

 

</s:skin>

 

-- end: dialognoteskin.mxml --

 

where skins:titlewindowskin is included in dialognoteskin.mxml. end title window has black content area, , not draggable either:

 

dialog-note-skin.gif

 

know why doesn't work?

my original question hasn't been answered, have solution problem trying solve. thought composite skinning easiest way extend mxml component, saying goodbye templates , hello mxmlcontent has better answer. me 'trick' getting solution working open titlewindow , have base component starting s:group allows extended. base component added titlewindow. provided override public function set mxmlcontent function needs go mycontainer object , not mysubcontainer object tried @ first.

 

my working solution below, , won't long before flex mxml has extend keyword because find painful!

 

--- main.mxml ---

 

<?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"

               xmlns:view="view.*">

 

    <fx:script>

        <![cdata[

 

            import mx.managers.popupmanager;

            import view.mytitlewindow;

 

            private var mytitlewindow:mytitlewindow;

 

            private function eventhandlerbuttonclick():void {

                mytitlewindow = popupmanager.createpopup(this , mytitlewindow) mytitlewindow;

                mytitlewindow.title = "my title window";

                mytitlewindow.width = 300;

                mytitlewindow.height = 300;

                popupmanager.centerpopup(mytitlewindow);

            }

        ]]>

    </fx:script>

 

    <s:button label="open title window" click="eventhandlerbuttonclick()" />

 

</s:application>

 

 

--- mytitlewindow.mxml ---

 

<?xml version="1.0" encoding="utf-8"?>

<s:titlewindow xmlns:fx="http://ns.adobe.com/mxml/2009"

               xmlns:s="library://ns.adobe.com/flex/spark"

               xmlns:mx="library://ns.adobe.com/flex/halo"

               xmlns:view="view.*">

 

    <s:vgroup paddingtop="10" paddingright="10" paddingbottom="10" paddingleft="10">

        <view:mysubcontainer width="300" height="300" />

    </s:vgroup>

 

</s:titlewindow>

 

 

--- mycontainer.mxml ---

 

<?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/halo"

                xmlns:view="view.*">

 

    <fx:script>

        <![cdata[

            /**

             * add child components component.

             */

            public override function set mxmlcontent(value:array):void {

                var len:int = super.numelements;

                (var i:int = len - 1 ; >= 0;  --i) {

                    value.unshift(super.getelementat(i));

                }

                super.mxmlcontent = value;

            }

        ]]>

    </fx:script>

 

    <s:layout>

        <s:verticallayout/>

    </s:layout>

    <s:label text="my container text" />

 

</s:group>

 

--- mysubcontainer.mxml ---

 

<?xml version="1.0" encoding="utf-8"?>

<view:mycontainer    xmlns:fx="http://ns.adobe.com/mxml/2009"

                    xmlns:s="library://ns.adobe.com/flex/spark"

                    xmlns:mx="library://ns.adobe.com/flex/halo"

                    xmlns:view="view.*">  

 

    <s:label text="mysubcontainer text 1" />

    <s:label text="mysubcontainer text 2" />

 

</view:mycontainer>



More discussions in Flex (Read Only)


adobe

Comments

Popular posts from this blog

How to change text Component easybook reloaded *newbee* - Joomla! Forum - community, help and support

After Effect warning: A problem occurred when processing OpenGL commands

Preconditions Failed. - Joomla! Forum - community, help and support