Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-03-2006, 08:51   #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);
Die definierte Funktion soll hier weiter unten aufgerufen werden und die entsprechende Frabe ändern. Das geht auch. Aber leider sofort wenn der Film geladen wird und nicht - wie ich erwartet habe - wenn man auf das Element draufklickt. Wieso?

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);
}
Für jeden Tipp wäre ich sehr dankbar.
easterbunny ist offline   Mit Zitat antworten
Alt 20-03-2006, 08:56   #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);
}
gibt zudem noch
Code:
_level0
aus.

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);
}
andert zwar entsprechende Blöcke. Allerdings auf einmal und gibt bei einem beliebigen Klick in den Film gleich zwei bestätigte Funktionsaufrufe aus.
_level0.Block2_0
_level0.Block1_0

Kann mir jemand helfen?
easterbunny ist offline   Mit Zitat antworten
Alt 20-03-2006, 11:44   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2006
Beiträge: 6
Solved.

Die Lösung findet sich hier:
Farben ändern durch Funktion

Vielen Dank an agedoubleju!
easterbunny ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 09:44 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele