2016-03-24 3 views
0

Die Aufgabe ist die Spawn mehrere helle und dunkle Federn nach Punkten aus einem Quiz. Die hellen Federn symbolisieren die richtigen Punkte (light_feather), und die dunkle Feder sind die falschen Punkte (dark_feather) (Jeder wird verfolgt). Alle Federn sollen sich auf einer Linie aufreihen, also erste helle Federn, gefolgt von den dunklen Federn. Ich habe die Quiz-Dynamik herausgefunden, und die Funktion, die ich hier gepostet habe, ist nur für, wenn sie Ende Quiz drücken.Hinzufügen von X Menge von addChild pro maxvalue in Schleife

var light_feather:LightFeather = new LightFeather(); 
var dark_feather:DarkFeather = new DarkFeather(); 

var good_answers:uint = 0; 
var bad_answers:uint = 0; 

function avsluttFunc (evt:MouseEvent) 
{ 
    var sum_LightFeatherX:Number = 0; 
    for (var i = 0; i < good_answers; i++) { 
     addChild(light_feather); 
     light_feather.x += 12 + (i*16); 
     light_feather.y = 0; 
     trace("Lys X-verdi: " + light_feather.x); 
     sum_LightFeatherX += Number(light_feather.x); 
     return sum_LightFeatherX; 
    } 
    trace(sum_LightFeatherX); 

    dark_feather.x += sum_LightFeatherX; 
    for (var j = 1; j <= bad_answers; j++) { 
     addChild(dark_feather); 
     dark_feather.x += 12 + (j*16); 
     dark_feather.y = 0; 
     trace("Mørk X-verdi: " + dark_feather.x); 
    } 

    /* 
     //Resetter poengsummen 
     good_answers = 0; 
     bad_answers = 0; 
    */ 
} 
+0

Ich habe versucht, Ihren Code mit besser lesbaren Namen zu vereinfachen. – akmozo

Antwort

0

Sie können tun, was Sie für die Verwendung von nur einer for-Schleife suchen, werfen Sie einen Blick:

var good_answers:uint = 2; 
var bad_answers:uint = 4; 

function avsluttFunc(evt:MouseEvent) 
{   
    for (var i:int = 0; i < good_answers + bad_answers; i++) { 
     var feather:DisplayObject = i < good_answers ? new LightFeather() : new DarkFeather(); 
      feather.x += 12 + i * (feather.width + 1); 
      feather.y = 0; 
     addChild(feather);   
    } 
} 

Dieses Codebeispiel 4 DarkFeather Instanzen neben 2 LightFeather diejenigen schaffen.

Edit:

Wie Sie Ihre Objekte zu einem Array hinzufügen?

// feathers array should be accessible for both codes (adding and removing objects) 
var feathers:Array = []; 

for (var i:int = 0; i < good_answers + bad_answers; i++) { 
    var feather:DisplayObject = i < good_answers ? new LightFeather() : new DarkFeather(); 
    addChild(feather); 
    feathers.push(feather); 
} 

sie dann von der Bühne zu entfernen, können Sie beispielsweise tun können:

for (var i:int = 0; i < feathers.length; i++) { 
    var feather:DisplayObject = DisplayObject(feathers[i]); 
     feather.parent.removeChild(feather); 
} 

Hoffnung, die helfen können.

+0

Danke! Das war genau das, wonach ich suchte! – ripsraps

+0

Schnelle Frage: Ich finde, wenn ich das Quiz mehrmals wiederhole, verweilen die Federn vom letzten Quiz. Hast du irgendeine Methode, sie zu entfernen, wenn ich eine Taste, um das Quiz erneut zu starten? – ripsraps

+0

@ripsrpas Sie können alle Ihre Objekte zu einem Array hinzufügen, dann können Sie eine for-Schleife verwenden, um sie später zu entfernen. – akmozo