Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.08.2010, 12:47
britall вне форума Посмотреть профиль Отправить личное сообщение для britall Найти все сообщения от britall
  № 1  
Ответить с цитированием
britall

Регистрация: Aug 2010
Сообщений: 4
По умолчанию перевести из MXML в actionScript

Доброго времени суток.

Возникла задача сделать некую панель, на которой бы располагались элементы управления (кнопки, комбобоксы и т.д.). Панель не выполняет никаких функций кроме визуального оформления (закругленные края + фон).

Вопрос собственно в чем. Этот компонент предполагается использовать так:
Код AS3:
<Мой компонент>
     <s:Button label="xxx" />
     <s:Button label="xxx2" />
</Мой компонент>

Но сам компонент унаследован от SkinnableContainer, внутри которого есть
Код AS3:
public var container:HGroup;
в который должны вставляться кнопки из MXML-кода выше.

Сам вопрос в следующем: Какой метод вызывается у моего компонента при выполненнии такого кода:
Код AS3:
<Мой компонент>
     <s:Button label="xxx" />
</Мой компонент>
?

опытным путем выяснил что это не addElement и не addChild. Что это за метод?

Старый 30.08.2010, 14:59
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
В spark контейнерах вместо addChild используются методы addElement, removeElementAt и т.д. Все методы типа addChild переписаны и при вызове генерируют ошибку.

Цитата:
Какой метод вызывается у моего компонента при выполненнии такого кода
Вызывается свойство указанное в теге [DefaultProperty("property")]

Добавлено через 50 минут
Соотвестственно у SkinnableContainer вызывается mxmlContentFactory
По-сути достаточно знать, что в конце-концов все эти Button попадут в _mxmlContent собранными внутри Array, а после того как инстанцируется contentGroup будут добавлены в нее.


Последний раз редактировалось alatar; 30.08.2010 в 16:03.
Старый 30.08.2010, 17:43
britall вне форума Посмотреть профиль Отправить личное сообщение для britall Найти все сообщения от britall
  № 3  
Ответить с цитированием
britall

Регистрация: Aug 2010
Сообщений: 4
Спасибо, то что нужно
Все хорошо, но в конструкциях вида

Код AS1/AS2:
<Мой компонент>
     <s:Button label="xxx" />
     <s:Button label="xxx2" includein="mystate"/>
</Мой компонент>
свойство указанное в теге [DefaultProperty("property")] не вызывается, и следовательно, кнопка ххх2 не появляется. Вероятно в стэйтах реализован какой-то другой механизм...


Последний раз редактировалось britall; 01.09.2010 в 14:09.
Старый 01.09.2010, 14:25
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Вероятно в стэйтах реализован какой-то другой механизм...
Состояния это уже другая история. Вы лучше опишите чего конкретно вы пытаетесь добиться?
Цитата:
Панель не выполняет никаких функций кроме визуального оформления (закругленные края + фон).
Подобный функционал решается изменением скина для SkinnableContainer, без создания собственного компонента.

Старый 01.09.2010, 15:04
britall вне форума Посмотреть профиль Отправить личное сообщение для britall Найти все сообщения от britall
  № 5  
Ответить с цитированием
britall

Регистрация: Aug 2010
Сообщений: 4
Цитата:
Сообщение от alatar Посмотреть сообщение
Подобный функционал решается изменением скина для SkinnableContainer, без создания собственного компонента.
Пробую сделать вот так:

Реализация компонента:
Код AS1/AS2:
<?xml version="1.0" encoding="utf-8"?>
<s:SkinnableContainer 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="components.engine.skins.BarSkin"
					 >
<s:layout>
	<s:HorizontalLayout/>
</s:layout>
 
</s:SkinnableContainer>
Реализация скина:
Код AS1/AS2:
<?xml version="1.0" encoding="utf-8"?>
<s:SparkSkin 
	xmlns:fx="http://ns.adobe.com/mxml/2009" 
	xmlns:s="library://ns.adobe.com/flex/spark"  
	> 
 
	<fx:Metadata> 
		[HostComponent("spark.components.SkinnableContainer")] 
	</fx:Metadata> 
 
	<s:states> 
		<s:State name="enabled" /> 
		<s:State name="disabled" /> 
		<s:State name="normal" /> 
	</s:states>  
 
 
	<s:Rect x="0" y="0" 
			radiusX="8" radiusY="8" 
			height="100%" width="100%">
		<s:stroke>
			<s:LinearGradientStroke weight="1" scaleMode="normal">
				<s:GradientEntry color="0xCCCCCC"/>
			</s:LinearGradientStroke>
		</s:stroke>
		<s:fill>
			<s:LinearGradient>
				<s:entries>
					<s:GradientEntry color="0xEEEEEE"/>
				</s:entries>
			</s:LinearGradient>
		</s:fill>
	</s:Rect>
</s:SparkSkin >
Использование:
Код AS1/AS2:
<engine:Bar width="100%" height="32">
	<s:Button label="b1"/>
	<s:Button label="b2"/>
</engine:Bar>

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


Последний раз редактировалось britall; 01.09.2010 в 15:16.
Старый 01.09.2010, 15:25
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
в скин (в конец) добавьте:
Код AS3:
<s:Group id="contentGroup" left="0" right="0" top="0" bottom="0" minWidth="0" minHeight="0">
        <s:layout>
            <s:BasicLayout/>
        </s:layout>
    </s:Group>
в layout можете поставить любой какой вам нравится. Тогда можно будет на задавать layout для компонента.
Скин класс можно прописать в css.

Старый 01.09.2010, 16:17
britall вне форума Посмотреть профиль Отправить личное сообщение для britall Найти все сообщения от britall
  № 7  
Ответить с цитированием
britall

Регистрация: Aug 2010
Сообщений: 4
Помогло. Спасибо еще раз.

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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