flex4皮肤
1.都继承SparkSkin类 2.都要指定HostComponet[] 3.Group绝对定位来层叠显示 4.描述边框: <s:Rect id="tbHilite" left="0" right="0" top="0" bottom="0"> ?<s:Rect id="border" left="0" right="0" top="0" bottom="0"> 5.描述填充: <s:Rect id="tbFill" left="20" right="20" top="20" bottom="20"> ?<s:Rect id="tbDiv" left="0" right="0" bottom="0" height="1"> 6.设置矩形投影(阴影): <s:RectangularDropShadow id="dropShadow" left="0" right="0" top="0" bottom="0" alpha="0.32" 7. ?设置状态: <s:states> 那么如何通过设置组件的状态来改变皮肤的显示呢? 下面举个例子: TextInput 组件的enabled设置方法源码: ?override public function set enabled(value:Boolean):void ? ? { ? ? ? ? var showPromptWhenFocused:Boolean = getStyle("showPromptWhenFocused"); ? ? ? ?? ? ? ? ? if ((showPromptWhenFocused ||? ? ? ? ? ? ? focusManager && focusManager.getFocus() != focusManager.findFocusManagerComponent(this)) &&? ? ? ? ? ? ? prompt != null && prompt != "") ? ? ? ? { ? ? ? ? ? ? if (text.length == 0) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? if (enabled && skin && skin.hasState("normalWithPrompt")) ? ? ? ? ? ? ? ? ? ? return "normalWithPrompt"; ? ? ? ? ? ? ? ? if (!enabled && skin && skin.hasState("disabledWithPrompt")) ? ? ? ? ? ? ? ? ? ? return "disabledWithPrompt"; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? return enabled ? "normal" : "disabled"; ? ? } getCurrentSkinState ?enabled属性应该是绑定好的,而这个方法也可能是绑定好的,一旦属性变化,就会调用此方法。 可以看出组件的属性变动,会修改相应的状态,而状态的变动则会影响皮肤的显示 8.皮肤中的文本域通常由如下组件实现: <s:RichEditableText id="textDisplay" TextArea组件跟TextInput组件的区别就是在这个文本域上加了个Scroller (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |