Просмотр полной версии : Изменение 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 происходит одноразовое мерцание заднего плана, но цвет не меняется.
Помогите разобраться.
Не меняется только цвет или и другие свойства тоже?
А что будет если через setStyle() то же самое сделать?
ЗЫ. В АС3 имена функций могут начинаться с заглавной только если это имена топ-левел глобальных функций, или это конструктор - StyleHandler ни тем и не другим не является.
Tim SharK
05.04.2009, 16:06
setstyle ведет себя так-же
насчет заглавных букв в начале имен функций скажу, что это не оказывает никакого влияния.
Добавлено через 20 минут
поправка: setStyle красит задний фон в черный цвет
var fgh:Array = new Array("#FF0000" , "#e0e0e0");
this.setStyle("backgroundGradientColors", fgh);
>> насчет заглавных букв в начале имен функций скажу, что это не оказывает никакого влияния.
На самом деле вы глубоко заблуждаетесь, особенно, если речь идет о 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.
<?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
спасибо !!!!!!!!!!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.