| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Mar 2006
Beiträge: 6
| Farben von dynamisch erzeugten MovieClips ändern
Hallo, In meinem Skript definiere ich eine Funktion, die später über mehrere EventHandler aufgerufen werden soll. Alle Variablen sind an anderer Stelle definiert - daran liegts also nicht. In einer Schleife male ich Blöcke auf die Leinwand, die beim Draufklicken oder Drüberfahren die Frabe ändern sollen. Code: // function defs
function ChangeColor(item, color_value) {
trace("-> color at " + item + " changed to " + color_value + "!");
var color_instance = new Color(item);
color_instance.setRGB(color_value);
}
// ////////////////////////////////////////////////
// drawing a checked grid
for (x = 0; x < grid_size; x++) {
for (y = 0; y < grid_size; y++) {
color_flip++;
var block_name_short = "Block" + x + "_" + y;
block_name = _root.createEmptyMovieClip( block_name_short, depth );
with (_root.block_name) {
var x_pos = step * x;
var x_pos2 = step * x + x_pos;
var y_pos = step * y;
var y_pos2 = step * y + y_pos;
if (color_flip % 2 == 0) {
beginFill (0xDDDDDD, 100);
} else {
beginFill (0xEEEEEE, 100);
}
// drawing blocks
moveTo (x_pos, y_pos);
lineTo (x_pos + step, y_pos);
lineTo (x_pos + step, y_pos + step);
lineTo (x_pos, y_pos + step);
lineTo (x_pos, y_pos);
endFill();
}
depth++;
}
color_flip++;
}
// function calls
Block0_0.onMouseDown = ChangeColor (Block0_0, color_value); Wenn ich die Funktion so schreibe (also Aufruf und Definition kombinire s.u.), werden zwei Blöcke auf einmal geändert, und nicht - wie ich erwartet habe der erste beim ersten Draufklicken und der zweite beim zweiten Draufklicken. Seltsam. Code: Block0_0.onMouseDown = function() {
trace("-> color at " + item + " changed to " + color_value + "!");
var color_instance = new Color("Block0_0");
color_instance.setRGB(0x000000);
}
Block0_1.onMouseDown = function() {
trace("-> color at " + item + " changed to " + color_value + "!");
var color_instance = new Color("Block1_0");
color_instance.setRGB(0x000000);
} |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Mar 2006
Beiträge: 6
| Weitere Versuche
Im Einsteiger-Forum hat Holger vorgeschlagen die Funktion anders zu schreiben (s.u.), leider hat diese Variante auch nicht den gewünschten Effekt. Der Block0_0 wird geändert, egal auf welches Objekt ich klicke und nicht - wie es sein sollte - nur wenn er (selbst) angeklickt wird ... Code: onMouseDown = function(){
_level0.ChangeColor (Block0_0, color_value);
trace(this);
} Code: _level0 Irgendwie scheint die Funktion _level0 und nicht _level0.Block0_0 oder Block0_0 als das sensitive Objekt zu sehen. Auch dieser Versuch Code: _root.Block0_0.onMouseDown = function(){
_root.Block0_0.ChangeColor (_root.Block0_0, color_value);
trace(this);
}
_root.Block2_0.onMouseDown = function(){
_root.Block2_0.ChangeColor (_root.Block2_0, color_value);
trace(this);
} _level0.Block2_0 _level0.Block1_0 Kann mir jemand helfen? |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |