2011-05-23 40 views
0

我正在使用Flex 4進行開發,並且在皮膚中有提示問題。在sparkskin中使用工具提示

我想定義皮膚(或其他組件)中textinput的工具提示行爲。

我創建了一個新的皮膚,並嘗試工具提示attriute添加到直接 的<s:sparkskin>並向<s:RichEditableText>

但提示不顯示。

  • 第一:是否可以在皮膚中定義工具提示?如果不是,爲什麼?
  • 第二:如果有可能,爲什麼不它的工作原理

感謝您的幫助

工具提示工作時的TextInput是啓用的,但不是當禁用

<?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"> 
<fx:Declarations> 
    <!-- Place non-visual elements (e.g., services, value objects) here -->  
</fx:Declarations> 

<fx:Style> 
    @namespace s "library://ns.adobe.com/flex/spark"; 
    @namespace mx "library://ns.adobe.com/flex/mx"; 

    s|TextInput.withToolTip 
    { 
     skin-class: ClassReference("skins.TextInputToolTipSkin"); 
    }  
</fx:Style> 

<s:layout> 
    <s:VerticalLayout /> 
</s:layout> 

<s:TextInput styleName="withToolTip" enabled="true" /> 
<s:TextInput styleName="withToolTip" enabled="false" /> 
</s:Application> 

我的皮膚

<?xml version="1.0" encoding="utf-8"?> 
<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" alpha.disabled="0.5" blendMode="normal" 
toolTip="Tooltip Test on Skin"> 

<fx:Metadata> 
<![CDATA[ 
    /** 
    * @copy spark.skins.spark.ApplicationSkin#hostComponent 
    */ 
    [HostComponent("spark.components.TextInput")] 
]]> 
</fx:Metadata> 

<fx:Script fb:purpose="styling"> 
    private var paddingChanged:Boolean; 

    /* Define the skin elements that should not be colorized. */ 
    static private const exclusions:Array = ["background", "textDisplay"]; 

    /** 
    * @private 
    */ 
    override public function get colorizeExclusions():Array {return exclusions;} 

    /* Define the content fill items that should be colored by the "contentBackgroundColor" style. */ 
    static private const contentFill:Array = ["bgFill"]; 

    /** 
    * @private 
    */ 
    override public function get contentItems():Array {return contentFill}; 

    /** 
    * @private 
    */ 
    override protected function commitProperties():void 
    { 
     super.commitProperties(); 

     if (paddingChanged) 
     { 
      updatePadding(); 
      paddingChanged = false; 
     } 
    } 

    /** 
    * @private 
    */ 
    override protected function initializationComplete():void 
    { 
     useChromeColor = true; 
     super.initializationComplete(); 
    } 

    /** 
    * @private 
    */ 
    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void 
    { 
     if (getStyle("borderVisible") == true) 
     { 
      border.visible = true; 
      shadow.visible = true; 
      background.left = background.top = background.right = background.bottom = 1; 
      textDisplay.left = textDisplay.top = textDisplay.right = textDisplay.bottom = 1; 
     } 
     else 
     { 
      border.visible = false; 
      shadow.visible = false; 
      background.left = background.top = background.right = background.bottom = 0; 
      textDisplay.left = textDisplay.top = textDisplay.right = textDisplay.bottom = 0; 
     } 

     borderStroke.color = getStyle("borderColor"); 
     borderStroke.alpha = getStyle("borderAlpha"); 

     super.updateDisplayList(unscaledWidth, unscaledHeight); 
    } 

    /** 
    * @private 
    */ 
    private function updatePadding():void 
    { 
     if (!textDisplay) 
      return; 

     // Push padding styles into the textDisplay 
     var padding:Number; 

     padding = getStyle("paddingLeft"); 
     if (textDisplay.getStyle("paddingLeft") != padding) 
      textDisplay.setStyle("paddingLeft", padding); 

     padding = getStyle("paddingTop"); 
     if (textDisplay.getStyle("paddingTop") != padding) 
      textDisplay.setStyle("paddingTop", padding); 

     padding = getStyle("paddingRight"); 
     if (textDisplay.getStyle("paddingRight") != padding) 
      textDisplay.setStyle("paddingRight", padding); 

     padding = getStyle("paddingBottom"); 
     if (textDisplay.getStyle("paddingBottom") != padding) 
      textDisplay.setStyle("paddingBottom", padding); 
    } 

    /** 
    * @private 
    */ 
    override public function styleChanged(styleProp:String):void 
    { 
     var allStyles:Boolean = !styleProp || styleProp == "styleName"; 

     super.styleChanged(styleProp); 

     if (allStyles || styleProp.indexOf("padding") == 0) 
     { 
      paddingChanged = true; 
      invalidateProperties(); 
     } 
    } 
</fx:Script> 

<fx:Script> 
    <![CDATA[ 
    /** 
    * @private 
    */  
    private static const focusExclusions:Array = ["textDisplay"]; 

    /** 
    * @private 
    */ 
    override public function get focusSkinExclusions():Array { return focusExclusions;}; 
    ]]> 
</fx:Script> 

<s:states> 
    <s:State name="normal"/> 
    <s:State name="disabled"/> 
</s:states> 

<!-- border --> 
<!--- @private --> 
<s:Rect left="0" right="0" top="0" bottom="0" id="border"> 
    <s:stroke>  
     <!--- @private --> 
     <s:SolidColorStroke id="borderStroke" weight="1" /> 
    </s:stroke> 
</s:Rect> 

<!-- fill --> 
<!--- Defines the appearance of the TextInput component's background. --> 
<s:Rect id="background" left="1" right="1" top="1" bottom="1"> 
    <s:fill> 
     <!--- @private Defines the background fill color. --> 
     <s:SolidColor id="bgFill" color="0xFFFFFF" /> 
    </s:fill> 
</s:Rect> 

<!-- shadow --> 
<!--- @private --> 
<s:Rect left="1" top="1" right="1" height="1" id="shadow"> 
    <s:fill> 
     <s:SolidColor color="0x000000" alpha="0.12" /> 
    </s:fill> 
</s:Rect> 

<!-- text --> 
<!--- @copy spark.components.supportClasses.SkinnableTextBase#textDisplay --> 
<s:RichEditableText id="textDisplay" 
      verticalAlign="middle" 
      widthInChars="10" 
      fontStyle.disabled="italic" 
      left="1" right="1" top="1" bottom="1" 
      toolTip="ToolTip Test on Editor"/> 

</s:SparkSkin> 
+0

你們是不是要在您的文本標記一樣大膽** **或*斜體*? – 2011-05-23 15:45:00

+0

顯示您的代碼。你試過了什麼? – JeffryHouser 2011-05-23 15:50:15

回答

0
<s:TextInput tooltip="WEEE!" /> 

我看不出是什麼問題...

編輯: 在你的皮膚:

<s:TextInput id="input" toolTip="{input.text}" /> 
+0

我使用樣式表在textinput上設置skinclass。對於這個樣式名的所有文本輸入,我想要一個工具提示的特定行爲(重複textinput中的文本) – Yves 2011-05-24 12:51:01

+0

請參閱我的編輯。 – 2011-05-24 13:08:16

+0

這適用於textinput啓用時,但不啓用時禁用。任何想法也許?在問題 – Yves 2011-05-24 13:22:15