2016-03-13 2 views
0

im, создающий код, где у меня есть поле ввода и кнопка на моем экране. В приведенном ниже коде 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); 
    } 
} 
+0

Вы Арент очистки графики, поэтому предыдущий рисунок будет всегда на странице –

ответ

0

Вы должны изменить Ваш цикл немного,

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(); 
Смежные вопросы