Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-07-2010, 10:54   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2010
Beiträge: 15
Verschiedene MC's aus Array anzeigen

Hallo, hab da ein problem, mit dem ich nciht weiterkomme. Hab leider auch noch nichts gefunden...

Also es geht um folgendes: ich erstelle dynamisch felder, die einen Mouse-Over-Listener erhalten. Die ausgelöste Funktion soll dann ein passendes Textfeld anzeigen, das dann bei Mouse-Out wieder verschwindet. Die Position des Feldes, sowie des Textfeldes sind in einem Array gespeichert(bzw. daraus berechnet). Jetzt habe ich das problem, dass immer nur der letzte Eintrag des Arrays genutzt wird.

Ich habe mir daher überlegt, ein zusätzliches Array zu erstellen, in dem die Instanzen des Textfeldes mit dem jeweiligen Inhalt gespeichert werden. Die können dann bei Bedarf mit dem Mouse-Over geholt und angezeigt werden. Klappt aber nicht. Und ich weiss nicht warum. Vielleicht ha von euch ja jemand eine Idee.

Der Code, mit dem die Felder und Textfelder erstellt werden sollen(das ganze ist Teil einer größeren Funktion, innerhalb derer auch eine for-schleife ist, die Variable i und die anderen Variablen sind definiert):

Code:
		
var tag_inst = new parla_mc();
tag_inst.x = jahres_pxl + pos_tag;
tag_inst.y = 162;
tag_inst.addEventListener(MouseEvent.MOUSE_OVER, eing1_func);
tag_inst.addEventListener(MouseEvent.MOUSE_OUT, eing1_1_func);
addChild (tag_inst);
			
var eing1_arr:Array = new Array();

eing1_arr.push(new textfeld_mc);
eing1_arr[i].x = (jahres_pxl + pos_tag)-7;
eing1_arr[i].y = 100-((jahres_pxl + pos_tag)/500)*75;
eing1.feld.text = veroeffentl_arr[durchlauf].ereignis;
eing1.feld.wordWrap = true;
addChild(eing1_arr[i]);

function eing1_func(e:MouseEvent):void{
addChild(eing1_arr[i]);}
function eing1_1_func(e:MouseEvent):void{
removeChild(eing1);}
Ich hoffe, es ist einigermaßen klar geworden, was ich damit meine. Vielleicht kann jemand helfen und mein Brett vorm Kopf abnehmen.

Gruß, Markus
Markr ist offline   Mit Zitat antworten
Alt 16-07-2010, 11:47   #2 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Am besten Du speicherst die Variable "i" für jedes Objekt.
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 16-07-2010, 16:15   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2010
Beiträge: 15
Hmm, ich weiss nicht genau, was ich dann machen soll? Ich krieg zwar die jeweilige Nummer des Durchlaufs mit einer Instanz zusammen in das Array, aber wie kann mir das dann weiterhelfen?
Markr ist offline   Mit Zitat antworten
Alt 16-07-2010, 16:24   #4 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hier mal ein einfaches Beispiel mit meinen bescheidenen AS 3.0 Kenntnissen zusammengeklöppelt:
PHP-Code:
var i:uint 1;
this["mc"+i]= new mc();
this["mc"+i].id i;
addChild(this["mc"+i]);
this["mc" i].addEventListener(MouseEvent.MOUSE_OVERfunc);
//
function func(e:MouseEvent) {
    
trace(e.target.id);

__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 16-07-2010, 17:09   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2010
Beiträge: 15
Hmm, also das war noch anders gemeint. Also ich erstelle erst ein Feld:
Code:
var tag_inst = new parla_mc();
tag_inst.x = jahres_pxl + pos_tag;
tag_inst.y = 162;
tag_inst.addEventListener(MouseEvent.MOUSE_OVER, eing1_func);
tag_inst.addEventListener(MouseEvent.MOUSE_OUT, eing1_1_func);
addChild (tag_inst);
Dann erstell ich ein Textfeld, das in ein Array gepackt wird:
Code:
eing1_arr.push(new textfeld_mc);
eing1_arr[i].x = (jahres_pxl + pos_tag)-7;
eing1_arr[i].y = 100-((jahres_pxl + pos_tag)/500)*75;
eing1_arr[i].feld.text = veroeffentl_arr[durchlauf].ereignis;
eing1_arr[i].feld.wordWrap = true;
Dann habe ich die Funktionen, die das Textfeld anzeigen/verschwinden lassen sollen:
Code:
function eing1_func(e:MouseEvent):void{
addChild(eing1_arr[i]);}
function eing1_1_func(e:MouseEvent):void{
removeChild(eing1_arr[i]);}
Das Problem ist jetzt, dass dies alles in einer Schleife stattfindet, und sobald ich ja das ganze starte, läuft die Schleife ja erst durch. Das ganze hatte ich erst so geplant, daher versuche ich es jetzt, wie oben beschrieben.

Code:
function tags_positionieren()
{
	for ( var i = 0; i<veroeffentl_arr.length; i++)
	{
		var durchlauf:int = i;
		var jahrestag:uint = new uint();
		var monat:int = new int();
		monat = veroeffentl_arr[i].monat ;
		jahrestag = monate_arr[monat-1].tage + veroeffentl_arr[i].tag;
	
		//Abschnitt bestimmen
		var dieses_jahr:int = veroeffentl_arr[i].jahr - heute_jahr + (jahre -1); 
		var jahres_pxl:uint = new uint();
		jahres_pxl = dieses_jahr*abschnitts_gr;
		
		//tagesposition bestimmen
		var hilf1:Number = new Number();
		hilf1 =(abschnitts_gr/365)*jahrestag;
		var pos_tag:uint = new uint();
		pos_tag = Math.round(hilf1);		
		
		//position in array eintragen
		var tag_position:uint = new uint();
		tag_position = pos_tag + jahres_pxl;
		zahlen_arr.push(tag_position);
		
		//objekte einfügen
		//****1.Parlament**** 
		if (veroeffentl_arr[i].institution == 1)
		{
var tag_inst1 = new parla_mc();
			tag_inst.x = jahres_pxl + pos_tag;
			tag_inst.y = 162;
			tag_inst.addEventListener(MouseEvent.MOUSE_OVER, eing2);
			tag_inst.addEventListener(MouseEvent.MOUSE_OUT, eing2_1);
			addChild (tag_inst1);
			
			var eingabe1 = new textfeld_mc();
			eingabe1.x = (jahres_pxl + pos_tag)-7;
			eingabe1.y = 100-((jahres_pxl + pos_tag)/500)*75;
			eingabe1.feld.text = veroeffentl_arr[durchlauf].ereignis;
			eingabe1.feld.wordWrap = true;
			function eing1(e:MouseEvent):void{
				addChild(eingabe1);
			}
			function eing2_1(e:MouseEvent):void{
				removeChild(eingabe1);
			}
			
			
		}
		//****2. Rat*****
		else if (veroeffentl_arr[i].institution == 2)
		{
			var tag_inst1 = new rat_mc();
			tag_inst1.x = jahres_pxl + pos_tag;
			tag_inst1.y = 162;
			tag_inst1.addEventListener(MouseEvent.MOUSE_OVER, eing2);
			tag_inst1.addEventListener(MouseEvent.MOUSE_OUT, eing2_1);
			addChild (tag_inst1);
			
			var eingabe2 = new textfeld_mc();
			eingabe2.x = (jahres_pxl + pos_tag)-7;
			eingabe2.y = 100-((jahres_pxl + pos_tag)/500)*75;
			eingabe2.feld.text = veroeffentl_arr[durchlauf].ereignis;
			eingabe2.feld.wordWrap = true;
			function eing2(e:MouseEvent):void{
				addChild(eingabe2);
			}
			function eing2_1(e:MouseEvent):void{
				removeChild(eingabe2);
			}
			
		}
		//*****Kommission*****
		else if (veroeffentl_arr[i].institution == 3)
		{
			var tag_inst2 = new comiss_mc();
			tag_inst2.x = jahres_pxl + pos_tag;
			tag_inst2.y = 162;
			tag_inst2.addEventListener(MouseEvent.MOUSE_OVER, eing3);
			tag_inst2.addEventListener(MouseEvent.MOUSE_OUT, eing3_1);
			addChild (tag_inst2);
			
			var eingabe3 = new textfeld_mc();
			eingabe3.x = (jahres_pxl + pos_tag)-7;
			eingabe3.y = 100-((jahres_pxl + pos_tag)/500)*75;
			eingabe3.feld.text = veroeffentl_arr[durchlauf].ereignis;
			eingabe3.feld.wordWrap = true;
			function eing3(e:MouseEvent):void{
				addChild(eingabe3);
			}
			function eing3_1(e:MouseEvent):void{
				removeChild(eingabe3);
			}
		}
	}
}
Markr ist offline   Mit Zitat antworten
Alt 19-07-2010, 17:26   #6 (permalink)
Neuer User
 
Registriert seit: Mar 2010
Beiträge: 15
Hmm, zu schwer verständlich, oder hab ich zu viel Code reingemacht. Ich suche im Prinzip nur nach ner Möglichkeit, Inhalte aus nem Array durch Mouseover anzeigen zu lassen. Und die Gibts da keine Möglichkeit? Und die Buttons, die das Mouseover beinhalten, sollen auch dynamisch aus dem Array erstellt werden. Hmm...
Markr ist offline   Mit Zitat antworten
Alt 19-07-2010, 18:04   #7 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.041
Man kann in Actionscript 3 auch Klassen erstellen.

Eine Klasse Feld erzeugt in sich ein Textfeld wenn sie überrollt wird.
in einer Schleife erstellst du dann alle Felder die du gern hättest.

fertig.
__________________
anbei Grüße vom milchreis: Viva la [Silb]

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist gerade online   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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Verschiedene Rechte in Array Darian ActionScript 3 1 27-08-2009 15:46
Verschiedene Videos im gleichen Player anzeigen Kangooroo Flash Einsteiger 0 08-06-2007 12:21
Verschiedene dynamische Inhalte anzeigen Patric Simon Flash MX 2004 5 09-07-2004 11:17
Array in verschiedene textfelder Phantomas ActionScript 1 6 17-09-2002 17:54
Verschiedene Variablen mit einem Textfeld anzeigen?? Rudi Ratlos ActionScript 1 8 07-08-2001 15:45


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele