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!")
}
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
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
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