Передача динамических значений в XML-файл - PullRequest
0 голосов
/ 18 марта 2011
<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx"
                  xmlns:components="com.fusionwidgets.components.*">

    <components:FusionWidgets FCChartType="AngularGauge" FCDataURL="data/energyMtd.xml"/>
</s:BorderContainer>

и файл energyMtd.xml как

<?xml version="1.0" encoding="UTF-8"?>
<chart decimals="2"  palette="2" autoScale="1" paletteThemeColor="BDBDBD" showBorder="0" basefontColor="000000" 
    toolTipBgColor="BFBFBF" gaugeFillMix="{dark-10},{light-70},{dark-10}" gaugeFillRatio="3" 
    pivotRadius="6" gaugeInnerRadius="60%" tickValueDistance="10" showTickValues="1" tickValueStep="2" 
    placeTicksInside="0" placeValuesInside="0" showToolTip="1" baseFontSize="9" adjustTM="0" 
    pivotFillColor="000000" dataStreamURL="" gaugeStartAngle="225" gaugeEndAngle="-45" 
    gaugeOriginX="100" gaugeOriginY="98" gaugeOuterRadius="75" numberSuffix="kW" upperLimit="100" 

lowerLimit="0">

  <colorRange>
    <color minValue="0" maxValue="100" code="bbbaba"/>
  </colorRange>

  <dials>
    <dial value="0" rearExtension="10" baseWidth="10" bgColor="000000"/>
  </dials>

</chart>  

как передать динамически значения upperLimit = "", dial value = "" и maxValue = "" со стороны flexRange. мне нужно, чтобы эти 3 значения были нанесены на график слияния угловых датчиков

Ответы [ 3 ]

1 голос
/ 21 марта 2011

Похоже, вам нужно немного изменить код.

fw.FCDataXML = xml.toString ();fw.FCRender ();

1 голос
/ 24 мая 2011

Угловой датчик принимает только данные XML. Не принимает ArrayCollection.

Пожалуйста, перед передачей проверьте, конвертируете ли вы XML в строку.

Также вы можете включить режим отладки датчика, чтобы увидеть более подробную информацию о проблеме

1 голос
/ 18 марта 2011

Я считаю, что это должно выглядеть примерно так:

<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx"
                  xmlns:components="com.fusionwidgets.components.*"
                  creationComplete="init();">

    <fx:Script>
        <![CDATA[
        import flash.events.Event;
        import flash.net.URLLoader;
        import flash.net.URLRequest;
        import mx.collections.ArrayCollection;

        protected var xmlLoader:URLLoader;
        [Bindable]
        protected var xml:XML;

        /**
         * 
         */
        protected function init():void
        {
            xmlLoader = new URLLoader();
            xmlLoader.addEventListener(Event.COMPLETE, parse);
            xmlLoader.load(new URLRequest("data.xml"));
        };

        /**
         * 
         * @param   event
         */
        protected function parse(event:Event):void
        {
            xml = event.target.data;
            xml.ignoreWhitespace = true;
            xml.ignoreComments = true;

            xml.chart.@upperLimit = 100;
            xml.chart.dials.dial.@value = 0;
            xml.chart.colorRange.color.@maxValue = 100;

            fw.dataProvider = new ArrayCollection(xml);
        };
        ]]>
    </fx:Script>

    <components:FusionWidgets id="fw" FCChartType="AngularGauge" />
</s:BorderContainer>

Я думаю, вам следует проверить документацию компонента для получения более подробной информации о том, как он обрабатывает поставщик данных.

Удачи, Rob

////////////////////////////////////

Привет,

после того, как вы загрузили файл XML в объект XML, вы можете установить значения атрибутов и элементов.

Например:

xml.chart.@upperLimit = 100;
xml.chart.dials.dial.@value = 0;
xml.chart.colorRange.color.@maxValue = 100;

Надеюсь, это то, что вам нужно, Rob

...