Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash CS3 Professional

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-04-2010, 12:43   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2010
Beiträge: 27
Dynamisch erstellten MC Instanznamen vergeben und ansprechen ???

Hallo,

ich erstelle auf der Bühne dynamisch 8 Movieclips und gebe ihnen einen Instanznamen. Das Funktioniert wunderbar und sieht so aus:

Code:
var movieClip:MovieClip = new MovieClip();
movieClip.addChild(loadedObject);
	
movieClip.x = 0;
movieClip.y = 140 + categoryloaded * 100;
	
movieClip.name = String(categorydescription[categoryloaded]);
		
addChild(movieClip);
Die Instanznamen sind zum Beispiel:

1. tee
2. kaffee
3. usw....

Jetzt möchte ich gerne wenn ich auf einen anderen Button drücke das der Movieclip mit dem Instanznamen tee auf alpha 0.5 und der Movieclip kaffee auf der x Achse verschoben wird. Eigentlich müßte das ja dann so in der funktion des Button aussehen:

Code:
function buttonClick(evt:MouseEvent):void {
	tee.alpha = 0.5;
kaffee.x = 120;
};
aber das Funktioniert so nicht. Es wäre super nett wenn mir jemand sagen könnte wie das geht!!!

Vielen Dank!!!
Flashy12356 ist offline   Mit Zitat antworten
Alt 20-04-2010, 13:07   #2 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.163
Der "name" eines DisplayObjects hat in AS3 nichts mehr mit dem Namen der Eigenschaft zutun unter des in seinem "parent" gespeichert ist.

Du kannst die Instanzen also entweder in einer Variable mit einem dynamischen Variablennamen speichern:

Code:
this[ String(categorydescription[categoryloaded]) ] = new MovieClip();
entsprechende feste Variablen-Namen vergeben;

Code:
var tee:MovieClip = new MovieClip();
oder aber alles so lassen wie Du es jetzt hast und Dir die Instanzen später per Code raussuchen:

Code:
getChildByName("tee").alpha = .5;
Ich persönlich würde Dir empfehlen mit sauber deklarierten Variblen zu arbeiten, weil das den Code lesbarer macht und Dir später eine Menge Ärger vom Hals hält.
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (20-04-2010 um 13:10 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 20-04-2010, 13:16   #3 (permalink)
Neuer User
 
Registriert seit: Apr 2010
Beiträge: 27
Hallo Martin,

vielen Dank für deine Hilfe!!!

Ich werde das später mal ausprobieren und werde dir mein Ergebnis mitteilen

Viele Grüße
Flashy12356 ist offline   Mit Zitat antworten
Alt 23-02-2011, 14:56   #4 (permalink)
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 67
Hallo zusammen.

Ich hab da ein ganz aehnliches Problem:
Code:
containerMc.getChildByName("name").innerMc.alpha = .5
Funktioniert nur leider nicht. Weiss jemand, wie ich den innerMc in einem dynamischen MC ansteuern kann?

Salu2
KaroAS ist offline   Mit Zitat antworten
Alt 23-02-2011, 15:00   #5 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.163
PHP-Code:
var mcName:String "testMc";
containerMc[mcName].innerMc.alpha .5 
?
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 23-02-2011, 15:21   #6 (permalink)
ING
whatever
 
Registriert seit: May 2008
Beiträge: 419
Zitat:
Zitat von KaroAS Beitrag anzeigen
Code:
containerMc.getChildByName("name").innerMc.alpha = .5
die name eigenschaft des gesuchten mc's ist "name"
ING ist offline   Mit Zitat antworten
Alt 23-02-2011, 16:08   #7 (permalink)
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 67
MartinKraft: Das hatte ich auch schon versucht, klappt aber leider nicht.

Hier mein Code:

var mcName:String = "page1";
pages_mc[mcName].image_mc.x = -50;

Und das kommt dabei raus:
"Ein Ausdruck ist nicht definiert oder hat keine Eigenschaften"

Hat noch jemand eine Idee oder hab ich einfach etwas vergessen?
KaroAS ist offline   Mit Zitat antworten
Alt 23-02-2011, 16:35   #8 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.163
Du könntest mal das hier versuchen:
PHP-Code:
containerMc.getChildByName("page1").getChildByName("innerMc").alpha .5
Bist Du sicher, dass pages_mc.page1.image_mc existiert?
Wenn ja, wie wird er erstellt? Per Script?

Die Eigenschaft name hat in AS3 nicht mehr zwangsläufig etwas mit dem Namen der Referenz auf das DisplayObject zutun. Deshalb sollte man auch von solangen Pfaden absehen und die Objekte stattdessen z.B. in ein Array schreiben!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (23-02-2011 um 16:37 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 24-02-2011, 08:48   #9 (permalink)
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 67
Das Script geht leider auch nicht - Fehlermeldung.
Der mc wird in einer for-Schleife erzeugt:

Code:
for (var i:uint = 0; i<xmlDaten.items.item.length(); i++) {
				page = new Page();
				pages_mc.addChild(page);
				var loadPage:Loader = new Loader();
				var reqPage:URLRequest = new URLRequest(xmlDaten.items.item[i].image);
				page.image_mc.addChild(loadPage);
				loadPage.load(reqPage);
				page.num = i;
				page.name = "page"+i;
			}
Wie meinst du das mit dem Namen in ein Array schreiben? Wie hab ich dann Zugriff darauf?

Danke fuer die Hilfe!
KaroAS ist offline   Mit Zitat antworten
Alt 16-03-2011, 19:20   #10 (permalink)
Neuer User
 
Benutzerbild von Opi3
 
Registriert seit: Dec 2010
Beiträge: 363
Zitat:
Wie meinst du das mit dem Namen in ein Array schreiben? Wie hab ich dann Zugriff darauf?
Zitat:
import flash.display.MovieClip;

var anzahleier:int = 3;
var ei:Array = [];
var yko:int = stage.stageHeight;// yko = y.Koordinate
var maxxko:int = stage.stageWidth;// maxxko = maximale x.Koordinate

neueEier();

function neueEier():void{
for (var i:int = 0; i < anzahleier; ++i){
if (ei[i] != null){
removeChild(ei[i]);
}

var object:MovieClip = new OsterEi();
ei[i] = object;
object.y = yko;
object.x = Math.random()* maxxko;
addChild(object);
}
}
Zitat:
Wie hab ich dann Zugriff darauf?
die antwort auf deine Frage habe ich rot markiert.
Viele Grüße Opi3
__________________
Es gibt 7 Milliarden Menschen und einer davon bin ich.

Eine Pizza mit r = z und dicke = a hat v = Pi*z*z*a;
Opi3 ist offline   Mit Zitat antworten
Alt 16-03-2011, 20:14   #11 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
Namen sind Schall und Rauch. (besonders solche wie "page1", "page2", ...)
schreib direkt eine Referenz auf die Page in das Array:

Array "global" definieren:
PHP-Code:
var pages:Array = []; 
pages erzeugen:
PHP-Code:
for (var i:uint 0i<xmlDaten.items.item.length(); i++) {
    
page = new Page();
    
pages_mc.addChild(page);
    var 
loadPage:Loader = new Loader();
        
loadPage.load(new URLRequest(xmlDaten.items.item[i].image));
    
page.image_mc.addChild(loadPage);
    
pages[i] = page;    //<---
//oder
//    pages.push(page);    //<---

    
//    obsolet:
//    page.num = i;    // var i:int = pages.indexOf(page);
//    page.name = "page"+i;

zugriff:
PHP-Code:
pages[i].image_mc.alpha .5;
//oder
var page:Page pages[i];
    
page.image_mc.alpha .5

und wenn du "Namen" statt Nummern verwenden willst, nimm statt des Arrays ein Dictionary:
PHP-Code:
var pages:Dictionary = new Dictionary(true);
//...
pages['name'] = new Page(); 
__________________
greetz Thomas

plz RTFM & Coding Conventions

Geändert von thomas_E (16-03-2011 um 20:20 Uhr)
thomas_E 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
dynamisch erstellten Movieclip ansprechen Dulla_Po Flash Einsteiger 6 27-11-2007 07:49
Instanznamen dynamisch vergeben labrar Flash MX 2004 2 06-06-2006 16:23
Instanznamen dynamisch vergeben und ansprechen stefank86 ActionScript 1 7 26-08-2004 18:42
instanznamen neu vergeben maxepopaxe ActionScript 1 1 16-01-2003 17:44
instanznamen, global vergeben? esia Flash 4 und Flash 5 10 04-02-2002 10:18


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele