나는 Spark 버튼을위한 Flex 4 스킨을 구축하려고 시도했다. 도트 선택기를 사용하여 다른 상태에서 다른 색상을 지정하는 등 색상 및 기타 스타일을 원하는대로 조정했습니다. 그러나 단추를 사용할 수 없으면이 단추는 모두 무시됩니다. 무능력 상태에서, 내가하는 일에 관계없이, 제 버튼은 항상 잘못된 색을 가지며 0.5로 알파 화됩니다 (심지어 alpha.disabled = "1"로 명시되어 있더라도). 다른 모든 피부 상태는 예상대로 작동합니다. 여기서 무슨 일이 일어나고있는거야?플렉스 4 버튼 스킨 비활성화 알파 설정이 무시 되었습니까?
이것은 내 맞춤 피부입니다. 제대로 작동했다면 그림자 나 강조 표시가없고 그라디언트 회색이됩니다. 대신, 그것은 업 상태 (반짝이는 초록색)의 50 % 알파 버전으로 나타납니다.
<?xml version="1.0" encoding="utf-8"?>
<s:SparkButtonSkin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
minWidth="21" minHeight="21" alpha.disabled="1">
<fx:Metadata>
<![CDATA[
[HostComponent("spark.components.Button")]
]]>
</fx:Metadata>
<s:states>
<s:State name="up" />
<s:State name="over" />
<s:State name="down" />
<s:State name="disabled" />
</s:states>
<s:Rect id="backgroundAndShadow" left="0" right="0" top="0" bottom="0" radiusX="5" radiusY="5">
<s:filters>
<s:DropShadowFilter blurX="5" blurY="5" blurX.down="3" blurY.down="3" alpha="0.5" distance="1" distance.down="0" angle="90" excludeFrom="disabled" />
</s:filters>
<s:fill>
<s:LinearGradient rotation="90">
<s:GradientEntry color.up="#00AD00" color="#007A00" color.disabled="#cccccc" />
<s:GradientEntry color.up="#29FF29" color="#00F500" color.disabled="#bbbbbb" />
</s:LinearGradient>
</s:fill>
</s:Rect>
<s:Rect id="highlight" left="1" right="1" top="1" height="50%" topLeftRadiusX="4" topLeftRadiusY="4" topRightRadiusX="4" topRightRadiusY="4" excludeFrom="disabled">
<s:fill>
<s:LinearGradient rotation="90">
<s:GradientEntry color="#ffffff" alpha="0.8" />
<s:GradientEntry color="#ffffff" alpha="0.3" />
</s:LinearGradient>
</s:fill>
</s:Rect>
<s:Label id="labelDisplay"
textAlign="center"
horizontalCenter="0" verticalCenter="1" verticalAlign="middle"
color="#ffffff" color.disabled="#555555"
fontWeight="bold"
left="2" right="2" top="2" bottom="2">
<s:filters>
<s:DropShadowFilter blurX="3" blurY="3" alpha="0.5" distance="1" distance.down="0" angle="90" excludeFrom="disabled" />
</s:filters>
</s:Label>
</s:SparkButtonSkin>
Flash Builder의 스킨 만들기 마법사/대화 상자를 사용하여 자동으로 생성 된 Button 용 스킨에서도이 작업을 수행했습니다. 그렇더라도, 특히 비활성화 모드에서 알파를 1로 설정해도 효과가 없습니다.
_action1Button = new Action1Button();
view.actionGroup.addElement(_action1Button);
_action1Button.enabled = false;
오류가 _action1Button 오히려, 그것은 버튼의 컨테이너의 실제 버튼 아니라고했다 :
편집
이 버튼을 생성하고 해제하는 데 사용되는 코드입니다. 도! _action1Button.actionButton.enabled = false;
으로 전환하면 문제가 해결됩니다.
가! 나는 이것이 이처럼 어리 석을 것이라고 생각했습니다. 나는 스킨 클래스를 올바르게 설정하고 있었지만, 나는 (컨스트럭션시 Actionscript에서) 버튼 자체가 아니라 컨테이너의 활성화 된 설정을 설정했다. 위의 편집에서 관련 코드를 게시했습니다. 그것을 들여다 주셔서 감사합니다! – Dwight