PDA

Просмотр полной версии : Тень у Label в RadioButton


ShockWave512
18.08.2010, 00:56
понадобилось прицепить тень на текст у радио-кнопки
именно на текст, на сам переключатель - категорически не нужно!

пробовал через override свойств/методов: set Label() / createChildren()
почему то не видно было фильтра

сработало таким вот изгибом, (подписался на updateComplete, пробежался по детям, нашел текстФилд, приклеил тень)
protected function radiobutton1_updateCompleteHandler(event:FlexEvent):void
{
if (!shadowedLabel) return;

for( var i:uint = 0; i < this.numChildren; i++ )
{
var item:Object = this.getChildAt(i);
if (item is UITextField)
{
var textField:UITextField = item as UITextField;
var fs:Array = new Array();
var shadow:DropShadowFilter = new DropShadowFilter(2, 45, 0x000000, 1, 1, 1);
fs.push(shadow);
textField.filters = fs;
}
}
}
почему не сработало в первых методах/сеттерах ?
как правильно ?

alatar
18.08.2010, 14:08
Какой SDK? Какой компонент mx или spark?

ShockWave512
18.08.2010, 14:21
3.5
mx

alatar
18.08.2010, 15:28
почему не сработало в первых методах/сеттерах ?
Потому что textField создается дважды.

createChildren:
// Create a UITextField to display the label.
if (!textField)
{
textField = IUITextField(createInFontContext(UITextField));
textField.styleName = this;
addChild(DisplayObject(textField));
}

commitProperties:
// if the font changed and we already created the textfield, we will need to
// destory it so it can be re-created, possibly in a different swf context.
if (hasFontContextChanged() && textField != null)
{
removeChild(DisplayObject(textField));
textField = null;
}

// Create a UITextField to display the label.
if (!textField)
{
textField = IUITextField(createInFontContext(UITextField));
textField.styleName = this;
addChild(DisplayObject(textField));

enabledChanged = true;
toggleChanged = true;
}

Соответственно тень необходимо применять в обоих методах.

ShockWave512
18.08.2010, 15:33
ясно, спасибо

а через стили, не правильней будет ? технически оно к стилям относится

alatar
18.08.2010, 16:38
Можно и через стили, но т.к. стиля такого нет, то все равно прийдется его прикручивать. Переходите на SDK 4.х и будет вам счастье, там достаточно в скине добавить.

ShockWave512
18.08.2010, 17:00
размер проекта не позволит перейти на 4.х