Domanda

Sto provando a fornire la mia etichettaFunction per un CategoryAxis a livello di codice ma sono completamente sconcertato. Il modo normale è farlo nel tuo file MXML, ma voglio farlo nel mio file Actionscript.

Il modo normale di farlo è:

<mx:Script>
    <![CDATA[
       private function categoryAxis_labelFunc(item:Object, 
                prevValue:Object, 
                axis:CategoryAxis, 
                categoryItem:Object):String {
                return "Some String";
            }
      ]]>
</mx:Script>

<mx:CategoryAxis labelFunction="categoryAxis_labelFunc" />

Ma voglio ottenere la stessa cosa nella mia sottoclasse di CategoryAxis, qualcosa del tipo:

public class FauxDateAxis extends CategoryAxis {

    public function FauxDateAxis() {
        super();
        labelFunction = categoryAxis_labelFunc // Doesn't work of course.
    }

        private function categoryAxis_labelFunc(item:Object, 
                prevValue:Object, 
                axis:CategoryAxis, 
                categoryItem:Object):String {
            return "Another String";
    }   

}
È stato utile?

Soluzione

Beh, sono sconcertato dal tuo problema, perché funziona perfettamente per me.

Ho preso l'applicazione di esempio per CategoryAxis dal sito di Adobe Flex:      http: //livedocs.adobe.com/flex/3/langref/index.html?mx/charts/CategoryAxis.html&mx/charts/class-list.html , ha aggiunto il tuo codice alla lettera (anche tranne per l'aggiunta del pacchetto e importare statments), e ha funzionato proprio come lo desideri tu.

Nell'esempio ho modificato la riga

<mx:CategoryAxis id="haxis" categoryField="Date" title="Date"/>

da leggere

<local:FauxDateAxis id="haxis" categoryField="Date" title="Date"/>

e mostrava " Un'altra stringa " alla base di ogni colonna.

Sto usando Flex 3, se è importante.

Buona fortuna, Randy Stegbauer

Altri suggerimenti

Questa domanda mi ha incuriosito, quindi sono uscito e l'ho provato.

L'etichetta Funzione su CategoryAxis ha una firma leggermente diversa da quella che vedo qui. Per me, questo è ciò che funziona:

function(item:Object, field:String, index:int, pct:Number)

Non sono un mago dei grafici Flex, quindi forse sai qualcosa che io non so, ma quando uso quella firma in questa faccenda,

public function FauxDateAxis() {
    super();
    labelFunction = function(item:Object, field:String, index:int, pct:Number) {
       return "string";
    }
}

Funziona per me in Flex 3 Pro.

Vedo che l'esempio di codice che hai fornito assomiglia molto a http://blog.flexexamples.com/2007/11/16/creating-a-custom-label-function-on-a-flex- linechart-controls-category-axis / (ho provato a vedere se riuscivo a trovare un esempio della firma che hai fornito). Vedo che anche altre persone usano questa firma.

Questa non è una gran risposta; Non ricordo che questa parte dell'API dei grafici cambi tra Flex 2 e Flex 3, ma forse questo post ti aiuta a risolvere il tuo problema.

Solo che non penso che farà la differenza, ma forse cambierete l'ambito della funzione dell'etichetta in protetto piuttosto che privato ???

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top