![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Вкратце обрисую суть проблемы. Есть проект сделанный в Flash CS6, с графикой, текстфилдом и присвоенным классом (в котором минимум кода), этот проект компилится в swc. swc подключаю к flex проекту и делаю на его основе UIComponent таким образом:
package as3comps { import flash.events.MouseEvent; import mx.core.UIComponent; import as3.FlashTextInputComp; public class FlexTextInput extends UIComponent { private var _input:FlashTextInputComp; public function FlexTextInput() { super(); _input = new FlashTextInputComp(); } override protected function createChildren():void { //здесь создаем статические свойства вокуг динамических (маски, окантовки и т.д.) addChild(_input); super.createChildren(); } override protected function measure():void { this.minHeight = 40; this.minWidth = 437; super.measure(); } override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { super.updateDisplayList(unscaledWidth, unscaledHeight); } } } Чтение доков на тему жизненного цикла компонентов ситуацию не прояснило. Конечно буду копать сам, и отпишу если что найду, но интересует быстрое и легкое решение, не переделывая флешевый компонент. Добавлено через 1 час 22 минуты Уточню вопрос, это понятно что присвоение длинны и высоты компоненту происходит, - как правильно менять длину и высоту флешевого ребенка этого компонента? Добавлено через 2 часа 2 минуты И да, через as3 я добился нужного эффекта, но меня интересует именно правильный с точки зрения flex подход :-) |
|
|||||
|
насколько помню, в updateDisplayList() и меняете размеры своего чайлда
|
|
|||||
|
Насчет updateDisplayList() я рекомендаций в инете не встречал, тем более что туда передаются анскейлд параметры - это смущает, у меня получилось добиться нужного эффекта через setActualSize, но размер удается менять только через as3 код, через mxml процентные размеры не работают, поэтому и не уверен, что сделал правильно
|
|
|||||
|
PainKiller, перенесите создание FlashTextInputComp из конструктора в createChildren(), он для этого и создавался.
Размеры FlashTextInputComp, как вам и сказал ShockWave512, меняйте в updateDisplayList. Цитата:
1. createChildren — создаются дочерние компоненты. 2. measure — расчитываюся размеры по-умолчанию (measuredWdth, measuredHeight). 2. commitProperties — пересчитываются зависимые свойства. 3. updateDisplayList — обновляется отображение компонета, дочерние компоненты расставляются по своим местам и меняются их размеры в соответствии с расчитанными размерами компонента (unscaledWidth, unscaledHeight). Цитата:
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
Цитата:
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { //trace ("updateDisplayList: unscaledWidth = " + unscaledWidth + " unscaledHeight = " + unscaledHeight); _input.width = unscaledWidth; _input.height = unscaledHeight; if(_input.scaleX != _input.scaleY) { var max:Number = Math.max(_input.scaleX, _input.scaleY); _input.scaleX = max; _input.scaleY = max; } trace("_input.scaleX = " + _input.scaleX); trace("_input.scaleY = " + _input.scaleY); super.updateDisplayList(unscaledWidth, unscaledHeight); } Последний раз редактировалось PainKiller; 27.06.2014 в 12:10. |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|