Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Как правильно наследовать spark контейнеры? (http://www.flasher.ru/forum/showthread.php?t=177870)

il phoenix 10.04.2012 16:28

Как правильно наследовать spark контейнеры?
 
Сделал класс BaseWindow наследник от SkinnableContainer и BaseWindowSkin.
BaseWindowSkin содержит фон и кнопку Close.
BaseWindow умеет закрываться при нажатии на Close.
Делаю наследника от BaseWindow - ErrorWindow, но при добавлении в него контролов они не отображаются. Помогите разобраться чего не хватает.

Window
Код AS3:

public class BaseWindow extends SkinnableContainer
        {
                public function BaseWindow()
                {
                        super();                       
                        ...                       
                        setStyle('skinClass', Class(BaseWindowSkin));                       
                        addEventListener(MouseEvent.CLICK, onClick, false, 0, true);
                }
 
                private function onClick(event:MouseEvent):void
                {
                        ...
                }

BaseWindowSkin
Код AS3:

<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">
        <!-- host component -->
        <fx:Metadata>
                [HostComponent("windows.BaseWindow")]
        </fx:Metadata>
        <fx:Script>
                <![CDATA[
                        import embed.WindowsEmbed;
                ]]>
        </fx:Script>
        <s:states>
                <s:State name="normal" />
                <s:State name="disabled" />
        </s:states>
        <s:Image id="bg" source="{WindowsEmbed.bg}" />       
        <b:CloseButton id="close" x="465" y="25" />
</s:Skin>

ErrorWindow
Код AS3:

<w:BaseWindow xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:w="windows.*"
                xmlns:s="library://ns.adobe.com/flex/spark"
                xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300"
                skinClass="candyland.view.windows.WindowSkin">
        <fx:Declarations>
                <!-- Place non-visual elements (e.g., services, value objects) here -->
        </fx:Declarations>
        <s:Button />
</w:BaseWindow>

Добавлено через 34 минуты
Попробовал унаследовать Window от Panel, и WindowSkin сделать на основе PalelSkin. Столкнулся с обратной ситуацией, контролы в ErrorWindow добавляются, но Кнопка Close, которая расположена в WindowSkin не рендерится, пробовал ее распологать по разному. Чего ему надо не понятно

alatar 10.04.2012 23:59

Group с id contentGroup в скин добавьте. Ему же детей некуда складировать.


Часовой пояс GMT +4, время: 10:22.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.