PDA

Просмотр полной версии : применение стиля к StyleableTextField


djyamato
28.04.2014, 16:52
Здравствуйте
Я слеп или действительно только после override protected function layoutContents применится стиль к StyleableTextField ?

К примеру кусок скина

override protected function createChildren():void
{
super.createChildren();

background = new SpriteVisualElement();
labelDisplay = StyleableTextField(createInFontContext(StyleableTextField));

addChild(background);

background.addChild(arrowDisplay);

addChild(labelDisplay);

labelDisplay.selectable = false;
labelDisplay.editable = false;
labelDisplay.mouseEnabled = false;
labelDisplay.multiline = true;
labelDisplay.wordWrap = true;
labelDisplay.autoSize = TextFieldAutoSize.CENTER;

tf.align = TextFormatAlign.CENTER;
labelDisplay.setTextFormat(tf);
}


В таком случае пока я не вызову layoutContents, стиль к текст филду не применяется

Если же пишу

override protected function layoutContents(unscaledWidth:Number, unscaledHeight:Number):void
{
setElementPosition(labelDisplay,paddingLR,paddingTB + arrowYOffset);
}

К нему применяется стиль

вот стиль


@font-face {
src: url("assets/fonts/OpenSans_LightItalic.ttf");
fontFamily: openSansLightItalicNonCCFFont;
embedAsCFF: false;
}
skins|TextInputPopUpSmallTextSkin{
fontFamily:openSansLightItalicNonCCFFont;
color:#353434;
}

PainKiller
07.05.2014, 12:23
А где именно в скине происходит парсинг css? В тех скинах что я видел, это делается функцией

mx.core.UIComponent.getStyle(styleProp:String):*

в вашем коде я её не увидел

alatar
07.05.2014, 15:41
Здравствуйте
Я слеп или действительно только после override protected function layoutContents применится стиль к StyleableTextField ?
Необходимо вызвать labelDisplay.commitStyles() после изменений.
Создавать и применять TextFormat нет необходимости, после вызова commitStyles() свойство align будет взято из стилей.
После создания labelDisplay необходимо добавить:
labelDisplay.styleName = this;

djyamato
11.05.2014, 20:53
А где именно в скине происходит парсинг css? В тех скинах что я видел, это делается функцией

mx.core.UIComponent.getStyle(styleProp:String):*

в вашем коде я её не увидел

labelDisplay.styleName = this;
не дописал тут, а в коде скина это было, спасибо за интерес

Необходимо вызвать labelDisplay.commitStyles() после изменений.
Создавать и применять TextFormat нет необходимости, после вызова commitStyles() свойство align будет взято из стилей.
После создания labelDisplay необходимо добавить:
labelDisplay.styleName = this;
Спасибо, commitStyles, я как-то про это даже забыл
TextFormat это уже танцы с бубном я начинал