我的条形图彼此重叠。需要帮助来解决它

时间:2016-03-13 15:16:33

标签: actionscript-3 actionscript diagram

我正在编写一个代码,我的屏幕上有一个输入字段和一个按钮。在下面的代码中,btnLeggTil(挪威语)会在输入字段中添加您编写的数字。它决定了条的高度。我的代码应该让用户添加他/她喜欢的高度的栏。正如您所看到的,我已将很多代码放入循环中。代码的问题在于它产生的条纹彼此重叠。我需要在每个酒吧之间留一个空间,但不知道怎么做。提前致谢!您可以自己测试代码并查看(只需记住创建一个名称为btnLeggTil和txtInn的按钮和输入字段。

(“høyde”表示身高)(“bredde”表示宽度)(“verdier”表示值)抱歉,所有挪威语

var verdier:Array = new Array();

btnLeggTil.addEventListener(MouseEvent.CLICK, leggtil);
function leggtil (evt:MouseEvent)
{
    verdier.push(txtInn.text);
    var totHøyde:int = 200; //total height on diagram
    var totBredde:int = 450; //total width on diagram
    var antall:int = verdier.length;

    var xv:int = 50; 
    var yb:int = 350;
    var bredde:int = (totBredde/antall) * 0.8;
    var mellom:int = (totBredde/antall) * 0.2;
    var maksHøyde:int = maksVerdi(verdier);

    function maksVerdi(arr:Array):Number //finds the biggest value in the array
    {
        //copies to not destroy the order in the original
        var arrKopi:Array = arr.slice();

        arrKopi.sort(Array.NUMERIC|Array.DESCENDING);
        return arrKopi[0];
    }

    for(var i:int = 0; i < verdier.length; i++)
    {
        graphics.lineStyle(2, 0x000000); 
        graphics.beginFill(0x00ff00); 
        graphics.drawRect(xv + (bredde+mellom)*i, yb, bredde, -verdier[i] * (totHøyde/maksHøyde));
        graphics.endFill();

        var txtTall = new TextField();
        txtTall.x = xv + (bredde+mellom)*i + 5;
        txtTall.y = yb - verdier[i] - 10;
        txtTall.type = "dynamic";
        txtTall.text = verdier[i];
        addChild(txtTall);
    }
}

1 个答案:

答案 0 :(得分:0)

您需要稍微修改for循环,

graphics.clear();
graphics.lineStyle(2, 0x000000); 
graphics.beginFill(0x00ff00); 
for(var i:int = 0; i < verdier.length; i++)
{

    graphics.drawRect(xv + (bredde+mellom)*i, yb, bredde, -verdier[i] * (totHøyde/maksHøyde));


    var txtTall = new TextField();
    txtTall.x = xv + (bredde+mellom)*i + 5;
    txtTall.y = yb - verdier[i] - 10;
    txtTall.type = "dynamic";
    txtTall.text = verdier[i];
    addChild(txtTall);
}
graphics.endFill();