Показать сообщение отдельно
Старый 10.04.2012, 16:28
il phoenix вне форума Посмотреть профиль Отправить личное сообщение для il phoenix Найти все сообщения от il phoenix
  № 1  
Ответить с цитированием
il phoenix

Регистрация: Apr 2009
Сообщений: 77
По умолчанию Как правильно наследовать 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 не рендерится, пробовал ее распологать по разному. Чего ему надо не понятно