2016-06-06 8 views
0

Ich bin versucht, die Farbe von mehreren Anzeigeobjekten zu ändern, aber mit colortransform kann sie nicht arbeiten -Ändern Anzeigeobjektfarbe

private function getChildren(mc:DisplayObjectContainer):Array { 
     var children:Array = []; 
     for (var i:int = 0; i < mc.numChildren; i++) { 
      var child:DisplayObject = mc.getChildAt(i); 
      if(child.name == "color1"){ 
       children.push(child); 
      } else if(child.name == "color2"){ 
       children.push(child); 
      } 
      if (child is DisplayObjectContainer) { 
       var childChildren:Array = getChildren((child as DisplayObjectContainer));   
       children = children.concat(childChildren); 
      } 
     } 
     return children; 
    } 

und in meinem eingeben Bühnenereignis:

var mychildren:Array = getChildren(this.spartan); 

     for each(var child:DisplayObject in mychildren) { 
      if(child.name == "color1"){ 
       child.transform.colorTransform = _colorTransform1; 
      } 
      trace(child.name); 

Ich habe die Farbe als _colorTransform1.color = 0xCCFF00
erklärt Mein Charakter besteht aus mehreren Movieclips, die derzeit entweder Instanzen von color1: rot oder color2: grün sind. Als neuer Programmierer frage ich mich, ob ich mit einer anderen Methode hätte fortfahren sollen?

trace(child.name) 
      if(child.name == "color1"){ 
       trace("found color!") 
      } 
+0

Verwenden Sie keinen Namen als MC-Kennung. IIRC Flash toleriert nicht zwei verschiedene MCs mit demselben Namen, daher haben Ihre On-Screen-Instanzen möglicherweise nicht den Namen 'color1' oder' color2'. – Vesper

+0

Was sollte ich stattdessen verwenden? Das Programm wird korrekt ausgeführt und die Movieclips werden zum Array hinzugefügt. Es ist nur so, dass ihre Farben nicht von colorTransform beeinflusst werden. – MadMan

+0

Hmmm. Wahrscheinlich verfolgen Sie '_colorTransform1', wo Sie es einem MC zuweisen, wahrscheinlich ist es null. Wenn es null ist, wird jede auf das Objekt angewendete Farbtransformation gelöscht. – Vesper

Antwort

1

Okay, ich fühle mich irgendwie ein wenig dumm gerade jetzt, weil die Antwort so verdammt offensichtlich war ... Bei dem Versuch, die Farbe des Movieclips zu ändern, die ich vergessen hatte, dass die MovieClip- selbst noch nicht geladen war. Um dieses Problem zu beheben, musste ich nur den Filmclip aufrufen, BEVOR ich die Farbe änderte.