如何获取一列的所有值并计算总计

时间:2013-08-14 10:11:27

标签: actionscript-3 flex flex4.5 flash-builder4.5

我正在制作一个人们可以创建自己的食物计划的计划。 我还想计算每种食物计划的卡路里总量。

首先,人们可以将项目添加到列表中,这些项目保存在arraycollection中:

    <s:List includeIn="State2" x="12" y="533" width="428" height="157" dataProvider="{acKoop}"
            enabled="true" change="totalcal(event)">
        <s:itemRenderer>
            <fx:Component>
                <mx:Label text="{data.Type} {data.Kcal}" />
            </fx:Component>
        </s:itemRenderer>
    </s:List>

我想要一个函数来检索data.Kcal的所有值,然后对它进行求和。

public function totalcal(event:Event):void{
            var price:Number=acKoop[event.columnIndex].Kcal;
            total += price;

        }

1 个答案:

答案 0 :(得分:0)

此处我发送了 link 的代码,可能会有用:

<?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" creationComplete="init()">

    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.controls.Alert;
            [Bindable]
            private var acKoop:ArrayCollection = null;

            public function init():void{
                var arr:ArrayCollection = new ArrayCollection();
                var obj:Object = new Object();
                obj.Type = "TYPE1";
                obj.Kcal = 10;
                arr.addItem(obj);
                obj = new Object();
                obj.Type = "TYPE2";
                obj.Kcal = 50;
                arr.addItem(obj);
                acKoop = arr;
            }

            public function totalcal(event:Event):void{
                var i:Number = 0;
                for each(var obj:Object in ArrayCollection(List(event.currentTarget).dataProvider)){
                    i = i + obj.Kcal;
                }
                Alert.show("Total of Kcal = " + i.toString());
            }
        ]]>
    </fx:Script>

    <s:List dataProvider="{acKoop}"
            enabled="true" change="totalcal(event)">
        <s:itemRenderer>
            <fx:Component>
                <mx:Label text="{data.Type} {data.Kcal}" />
            </fx:Component>
        </s:itemRenderer>
    </s:List>
</s:Application>

基本上,在更改事件上,我从事件中获取数据提供者信息,并使用每个循环的计算TOTAL。我希望这会有用。