PDA

Просмотр полной версии : Изменение backgroundGradientColors в AIR-приложении после его инициализации


Tim SharK
05.04.2009, 14:02
Проблема у меня в том, что моя программа не меняет backgroundGradientColors после выбора элемента ComboBox'a (впринципе неважно какой эвент происходит)

вот отвечающие за это кусочки кода:

<mx:Style>
.s1Blue
{backgroundGradientColors: #31369c, #10102f;}
.s1Red
{backgroundGradientColors: #db0909, #390303;}
.s1White
{backgroundGradientColors: #ffffff, #ffffff;}
.s1Silver
{backgroundGradientColors: #db0909, #db0909;}

</mx:Style>

...

private function StyleHandler(event:ListEvent):void{
switch (event.target.selectedItem){
case "blue":
this.styleName="s1Blue";
break;
case "silver":
this.styleName="s1Silver";
break;
case "white":
this.styleName="s1White";
break;
case "red":
this.styleName="s1Red";
break;
}


<mx:ComboBox
enabled="true" dataProvider="{Themes}"
change="StyleHandler(event)" right="0" top="3" width="110"
toolTip="Choose style" >
</mx:ComboBox>

При выборе элемента ComboBox'a происходит одноразовое мерцание заднего плана, но цвет не меняется.

Помогите разобраться.

wvxvw
05.04.2009, 14:53
Не меняется только цвет или и другие свойства тоже?
А что будет если через setStyle() то же самое сделать?

ЗЫ. В АС3 имена функций могут начинаться с заглавной только если это имена топ-левел глобальных функций, или это конструктор - StyleHandler ни тем и не другим не является.

Tim SharK
05.04.2009, 16:06
setstyle ведет себя так-же

насчет заглавных букв в начале имен функций скажу, что это не оказывает никакого влияния.

Добавлено через 20 минут
поправка: setStyle красит задний фон в черный цвет
var fgh:Array = new Array("#FF0000" , "#e0e0e0");
this.setStyle("backgroundGradientColors", fgh);

wvxvw
05.04.2009, 18:44
>> насчет заглавных букв в начале имен функций скажу, что это не оказывает никакого влияния.

На самом деле вы глубоко заблуждаетесь, особенно, если речь идет о MXML'е. Тема неоднократно обсуждалась, и повторятся не вижу смысла.

Если вы используете setStyle, то нужно передавать не строковые представления в HTML нотации, а числа.

Tim SharK
07.04.2009, 15:27
var fgh:Array = new Array(#FF0000 , #e0e0e0);
this.setStyle("backgroundGradientColors", fgh);

1093: Syntax Error

Добавлено через 1 минуту
SetStyle () Constructor

public function SetStyle(target:IStyleClient = null, name:String = null, value:Object = null)

Constructor.

Parameters target:IStyleClient (default = null) — The object whose style is being set. By default, Flex uses the immediate parent of the State object.

name:String (default = null) — The style to set.

value:Object (default = null) — The value of the style in the view state.

GBee
07.04.2009, 16:27
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#FF0000, #FFFFFF]">
<mx:Button label="Green"
click="setStyle('backgroundGradientColors', [0x00FF00, 0xFFFFFF])"/>
<mx:Button label="Red"
click="setStyle('backgroundGradientColors', [0xFF0000, 0xFFFFFF])"/>
<mx:Button label="Blue"
click="setStyle('backgroundGradientColors', [0x0000FF, 0xFFFFFF])"/>
</mx:Application>


Все дело в волшебных пузырьках...

Добавлено через 45 минут
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
backgroundGradientColors="[0, 0]">
<mx:VSlider
id="uslider"
maximum="0xFFFFFF" minimum="0"
liveDragging="true"
change="setStyle('backgroundGradientColors', [uslider.value, dslider.value])">
</mx:VSlider>
<mx:Spacer height="100%"/>
<mx:VSlider
id="dslider"
maximum="0xFFFFFF" minimum="0"
liveDragging="true"
change="setStyle('backgroundGradientColors', [uslider.value, dslider.value])">
</mx:VSlider>
</mx:Application>

Вырвиглаз.

Tim SharK
08.04.2009, 09:33
спасибо !!!!!!!!!!