Flex在运行时更改css属性
我正在用flex开发一个仪表板应用程序,它是。这里有多个显示不同内容的面板。我想要的是,每当用户点击任何特定的面板时,比如说“年收入”,那么我只想突出显示该特定面板 因此,基本上所有处于初始状态的面板都将处于“非活动”状态,但一旦用户单击它,它将变为活动状态,从而为用户提供更好的体验,让用户知道他正在使用“xyz”面板,其余面板将处于非活动状态 所以我所说的“活动”和“非活动”状态的意思是,在任何HTML页面中,当我们将鼠标悬停在任何超链接上时,它会变成“蓝色”(例如),所以我将其称为活动和非活动 现在,谈谈小组 面板具有定义其布局的蒙皮。为了满足我的要求,我尝试将“css”应用于面板。现在我以这种方式应用了cssFlex在运行时更改css属性,css,apache-flex,flex-spark,spark-skinning,Css,Apache Flex,Flex Spark,Spark Skinning,我正在用flex开发一个仪表板应用程序,它是。这里有多个显示不同内容的面板。我想要的是,每当用户点击任何特定的面板时,比如说“年收入”,那么我只想突出显示该特定面板 因此,基本上所有处于初始状态的面板都将处于“非活动”状态,但一旦用户单击它,它将变为活动状态,从而为用户提供更好的体验,让用户知道他正在使用“xyz”面板,其余面板将处于非活动状态 所以我所说的“活动”和“非活动”状态的意思是,在任何HTML页面中,当我们将鼠标悬停在任何超链接上时,它会变成“蓝色”(例如),所以我将其称为活动和非活
public class Pod extends Panel
{
...properties
public function init():void
{
setStyle('styleName',"panelOff");
}
}
现在,在这个类中,我处理面板上的“点击”。因此,在点击事件中,我所做的基本上是
setStyle('styleName',"panelOn");
由于面板已应用蒙皮,我需要更改蒙皮中包含的组件的属性。因此,我必须能够访问皮肤中的css属性
在皮肤文件中,我正在做类似的事情
override protected function updateDisplayList(unscaledWidth:Number,
unscaledHeight:Number):void
{
setStyle('border-alpha', hostComponent.getStyle('border-alpha'));
}
所以我的问题是,这是满足我要求的正确方式吗
如何访问皮肤中hostcomponent的css属性
上课
在我的main.mxml中,我定义了样式文件。所以如果
样式文件包含一个名为“panelOn”的样式类,如果我给出
类访问面板,以便它能够访问关联的样式
跟那个班
请不要建议使用面板的setStyle方法放置每个css属性,因为这样对我来说使用css文件没有好处,而且css样式也不好
如果有其他更好的解决方案,请分享您的观点。我希望我明白了。任何形式的帮助都将不胜感激。满足您需求的最佳方式-使用spark states。面板组件和Mxml蒙皮有两种状态:活动和非活动(或新状态)。面板组件具有设置当前蒙皮状态的逻辑。如果您想使用css来保存属性,每个州都会为皮肤应用自己的样式名 主要用途:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
xmlns:classes="classes.*">
<fx:Style>
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";
@namespace classes "classes.*";
classes|Pod
{
skinClass : ClassReference("skins.PodSkin");
}
.active
{
backgroundColor: #ff0000;
}
.inactive
{
backgroundColor: #00ff00;
}
</fx:Style>
<classes:Pod x="800" width="300" height="300" />
</s:Application>
以及为每个状态设置样式名的PodSkin mxml skin的一部分:
<s:SparkSkin
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
blendMode="normal" mouseEnabled="false"
styleName.active="active" styleName.inactive="inactive"
minWidth="131" minHeight="127" alpha.disabled="0.5" alpha.disabledWithControlBar="0.5">
<s:states>
<s:State name="normal" />
<s:State name="active" />
<s:State name="inactive" />
<s:State name="disabled" />
<s:State name="normalWithControlBar" stateGroups="withControls" />
<s:State name="disabledWithControlBar" stateGroups="withControls" />
</s:states>
享受Flex这有点难理解-您是否在问如何访问主类中存储的样式信息?或者如何使用类选择器?嘿,谢谢你的回复。在我的mxml文件中,我没有直接创建Pod类的任何实例(我没有为此编写标记)。我正在以编程方式创建所需的POD,mxml中有一个组件是视图堆栈。因此,如果我按照您的方式操作,pod组件是否能够找到我们在块中定义的“活动”和“非活动”样式?@llya Z:非常感谢……)是的,你是对的,我编辑答案。使用mxml或as3创建组件并不重要。您应该在应用程序中加载的主应用程序类或css文件(最佳方式)中声明样式。@llya Z:“[SkinState(name=“active”)]”必须在Pod类中。
<s:SparkSkin
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
blendMode="normal" mouseEnabled="false"
styleName.active="active" styleName.inactive="inactive"
minWidth="131" minHeight="127" alpha.disabled="0.5" alpha.disabledWithControlBar="0.5">
<s:states>
<s:State name="normal" />
<s:State name="active" />
<s:State name="inactive" />
<s:State name="disabled" />
<s:State name="normalWithControlBar" stateGroups="withControls" />
<s:State name="disabledWithControlBar" stateGroups="withControls" />
</s:states>