Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-12-2004, 21:35   #1 (permalink)
destruction tour 2004
 
Benutzerbild von antistyles
 
Registriert seit: Feb 2003
Ort: Göttingen
Beiträge: 220
dynamisch erzeugte mcs entfernen

hey, vielleicht ann mir hier jemand helfen, wäre sehr nett von euch.
also ich erzeuge über

Code:
_root.attachMovie("target", "kate"+i+"_mc", i, {_x:10, _y:110+i*30});
mcs. diese will ich jetzt über


Code:
_root["kate"+i+"_mc"].onRelease = function() {
wieder entfernen aber irgendwie klappt es weder mit removeMovieClip noch mit unloadMovie. muss ich da erst über as instanznamen vergeben für die einzelnen mcs um die zu entfernen?

hier mal der ganze code:

Code:
onEnterFrame = function () {
	// erste xml datei verarbeiten
	for (i=0; i<anzahl; i++) {
		_root.attachMovie("target", "kate"+i+"_mc", i, {_x:10, _y:110+i*30});
		_root["kate"+i+"_mc"].createTextField("text_txt", i, 0, 0, 230, 30);
		_root["kate"+i+"_mc"].text_txt.htmlText = anz[i];
		_root["kate"+i+"_mc"].text_txt.autoSize = false;
		_root["kate"+i+"_mc"].text_txt.wordWrap = true;
		_root["kate"+i+"_mc"].text_txt.multiline = true;
		_root["kate"+i+"_mc"].text_txt.html = true;
		_root["kate"+i+"_mc"].text_txt.selectable = false;
		_root["kate"+i+"_mc"].text_txt.embedFonts = true;
		_root["kate"+i+"_mc"].text_txt.setTextFormat(mF);
		_root["kate"+i+"_mc"].onRollOver = function() {
			this.text_txt.textColor = 0xFF3301;
		};
		_root["kate"+i+"_mc"].onMouseDown = function() {
			// action action action
			this.kls1._visible=false;
		};
__________________
deconstruction desinformation antistyles

Geändert von antistyles (07-12-2004 um 21:50 Uhr)
antistyles ist offline   Mit Zitat antworten
Alt 07-12-2004, 21:50   #2 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Lass dir mal was tracen. Dann kannst du prüfen, ob sie richtig angesprochen wurden. Wenn ja einfach.

PHP-Code:
_root["xyxy"+yxyx].onRelease = function {
  
trace("Hallo, dein Code ist richtig und ich bin jetzt weg");
  
this.removeMovieClip();

__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 07-12-2004, 21:58   #3 (permalink)
destruction tour 2004
 
Benutzerbild von antistyles
 
Registriert seit: Feb 2003
Ort: Göttingen
Beiträge: 220
hm ich glaub das liegt an dem onEnterFrame da er ja im nächsten frame alles wieder lädt wie muss ich das (onEnterFrame) denn ersetzen damit das klappt?
__________________
deconstruction desinformation antistyles
antistyles ist offline   Mit Zitat antworten
Alt 07-12-2004, 22:01   #4 (permalink)
User
 
Benutzerbild von jeypack
 
Registriert seit: Sep 2003
Ort: Essen
Beiträge: 616
also so funktioniert das mit dem Löschen einwandfrei...


PHP-Code:
stop();
for (var 
0i<=11i++) {
    var 
mc _root.attachMovie("test_mc""test_mc"+ii+10, {_x:20+i*20_y:20});
    
mc.onRelease = function() {
        
this.removeMovieClip();
    };


aber dies:
Zitat:
_root["kate"+i+"_mc"].onMouseDown = function() {
// action action action
this.kls1._visible=false;
};
bringt gar keinen Sinn, weil das machen dann ja alle Instanzen auf einmal.
Also wenn schon, dann onPress und onRelease.
Oder du müsstest noch ein

PHP-Code:
if(this.hitTest(.... 

einfügen.
Ist ja wohl zu umständlich, oder?


Zitat:
hm ich glaub das liegt an dem onEnterFrame da er ja im nächsten frame alles wieder lädt wie muss ich das (onEnterFrame) denn ersetzen damit das klappt?
...hab ich nicht gelesen...

wenn sich das Script auf einem Frame befindet, einfach weglassen, das onEnterFrame...
dann wirds nur einmal ausgeführt

Geändert von jeypack (07-12-2004 um 22:04 Uhr)
jeypack ist offline   Mit Zitat antworten
Alt 07-12-2004, 22:03   #5 (permalink)
destruction tour 2004
 
Benutzerbild von antistyles
 
Registriert seit: Feb 2003
Ort: Göttingen
Beiträge: 220
ja es sollen ja alle instanzen auf einmal gelöscht werden das ist schon richtig. was mich nur noch beschäftigt ist wie man das onEnterFrame am besten ersetzt
__________________
deconstruction desinformation antistyles
antistyles ist offline   Mit Zitat antworten
Alt 07-12-2004, 22:06   #6 (permalink)
User
 
Benutzerbild von jeypack
 
Registriert seit: Sep 2003
Ort: Essen
Beiträge: 616
Zitat:
Zitat von antistyles
ja es sollen ja alle instanzen auf einmal gelöscht werden das ist schon richtig. was mich nur noch beschäftigt ist wie man das onEnterFrame am besten ersetzt

Also wie schon gesagt, wenn es nur einmal ausgeführt werden soll, brauchst Du ja gar kein clipEvent.
Dann leg das Script einfach an die entsprechende Stelle in ein Frame.
jeypack ist offline   Mit Zitat antworten
Alt 07-12-2004, 22:13   #7 (permalink)
destruction tour 2004
 
Benutzerbild von antistyles
 
Registriert seit: Feb 2003
Ort: Göttingen
Beiträge: 220
Red face

cool danke
wenn ich das so

PHP-Code:
 var XMLdaten = new XML();
XMLdaten.ignoreWhite true;
XMLdaten.load("textfelder_daten.xml");
XMLdaten.onLoad = function(status) {
    if (
status && this.loaded) {
        
anzahl XMLdaten.firstChild.childNodes.length;
        
anz = [];
        for (var 
0i<anzahli++) {
            
anz[i] = XMLdaten.firstChild.childNodes[i].attributes.anzeige;
            
anz[i] = anz[i].toUpperCase();
        }
    }
    for (
i=0i<anzahli++) {
        
_root.attachMovie("target""kate"+i+"_mc"i, {_x:10_y:110+i*30});
        
_root["kate"+i+"_mc"].createTextField("text_txt"i0023030);
        
_root["kate"+i+"_mc"].text_txt.htmlText anz[i];
        
_root["kate"+i+"_mc"].text_txt.autoSize false;
        
_root["kate"+i+"_mc"].text_txt.wordWrap true;
        
_root["kate"+i+"_mc"].text_txt.multiline true;
        
_root["kate"+i+"_mc"].text_txt.html true;
        
_root["kate"+i+"_mc"].text_txt.selectable false;
        
_root["kate"+i+"_mc"].text_txt.embedFonts true;
        
_root["kate"+i+"_mc"].text_txt.setTextFormat(mF);
        
_root["kate"+i+"_mc"].onRollOver = function() {
            
this.text_txt.textColor 0xFF3301;
        };
        
_root["kate"+i+"_mc"].onRollOut = function() {
            
this.text_txt.textColor 0x000000;
        };
        
_root["kate"+i+"_mc"].onRelease = function() {
            
this.removeMovieClip();
        };
    };
}; 
mache wird sogar immer nur die instanz entfernt.

mh noch was:
kann ich aus der instanz heraus den parent mc löschen? der wurde nicht über attachmc geladen sondern liegt von anfang an auf der bühne. geht sowas?
__________________
deconstruction desinformation antistyles
antistyles ist offline   Mit Zitat antworten
Alt 07-12-2004, 22:24   #8 (permalink)
destruction tour 2004
 
Benutzerbild von antistyles
 
Registriert seit: Feb 2003
Ort: Göttingen
Beiträge: 220
ja blöd, jetzt hab ich das so gemacht und will alle isnatnzen löschen, aber über

_root["kate"+i+"_mc"].onRelease = function() {
_root.kl._visible=false;
_root["kate"+i+"_mc"].removeMovieClip();
};

geht das nicht. warum?
__________________
deconstruction desinformation antistyles
antistyles ist offline   Mit Zitat antworten
Alt 07-12-2004, 22:33   #9 (permalink)
User
 
Benutzerbild von jeypack
 
Registriert seit: Sep 2003
Ort: Essen
Beiträge: 616
Zitat:
Zitat von antistyles
ja blöd, jetzt hab ich das so gemacht und will alle isnatnzen löschen, aber über

_root["kate"+i+"_mc"].onRelease = function() {
_root.kl._visible=false;
_root["kate"+i+"_mc"].removeMovieClip();
};

geht das nicht. warum?

mmhhh...da komm ich aber ein bisschen durcheinander jetzt...

Also das mit den einzelnen Instanzen löschen, müsste ja jetzt funktionieren, bei Dir.
Wenn Du den Clip löschen willst, erzeugst Du ihn vorher am besten auch per Scipt, wenn das möglich ist. Ungefähr so:

PHP-Code:
_root.createEmptyMovieClip("holder"5);
for (var 
0i<=11i++) {
    var 
mc holder.attachMovie("test_mc""test_mc"+ii+10, {_x:20+i*20_y:20});
    
mc.onRelease = function() {
        
holder.removeMovieClip();
    };

Ansonsten eben einfach dem übergeordneten MC einen Instanznamen geben (wenn er keinen hat) und _visible auf false stellen.
jeypack ist offline   Mit Zitat antworten
Alt 07-12-2004, 22:38   #10 (permalink)
destruction tour 2004
 
Benutzerbild von antistyles
 
Registriert seit: Feb 2003
Ort: Göttingen
Beiträge: 220
den parent mc kann ich auf visible=false stellen, das klappt, jedoch sind die einzelnen instanzen dann immer noch zu sehen (liegt wohl am xml object oderso).
über this.removeMovieClip(); kann ich ja auch eine einzelne instanz löschen, aber was ist wenn ich alle instanzen auf einmal löschen will? die hab ich ja vorher auch immer über _root["kate"+i+"_mc"] referenziert aber so

PHP-Code:
 _root["kate"+i+"_mc"].onRelease = function() {
            
_root.kl._visible=false;
            
_root["kate"+i+"_mc"].removeMovieClip();
        }; 
geht das nicht und ich weiss nicht warum
__________________
deconstruction desinformation antistyles
antistyles ist offline   Mit Zitat antworten
Alt 07-12-2004, 22:53   #11 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
"i" hat außerhalb der for-schleife einen wert.
bei:

for(var i=0;i<5;i++)....

hat i den wert 5.
du hast aber keinen mc mit diesem wert.


edit:beispiel

PHP-Code:
for(i=0;i<5;i++){}
trace(i

Geändert von warrantmaster (07-12-2004 um 22:54 Uhr)
warrantmaster ist offline   Mit Zitat antworten
Alt 07-12-2004, 22:56   #12 (permalink)
destruction tour 2004
 
Benutzerbild von antistyles
 
Registriert seit: Feb 2003
Ort: Göttingen
Beiträge: 220
aber wenn ich das so schreibe:

PHP-Code:
 for (i=0i<anzahli++) {
        
_root.attachMovie("target""kate"+i+"_mc"i, {_x:10_y:110+i*30});
        
_root["kate"+i+"_mc"].createTextField("text_txt"i0023030);
        
_root["kate"+i+"_mc"].text_txt.htmlText anz[i];
        
_root["kate"+i+"_mc"].text_txt.autoSize false;
        
_root["kate"+i+"_mc"].text_txt.wordWrap true;
        
_root["kate"+i+"_mc"].text_txt.multiline true;
        
_root["kate"+i+"_mc"].text_txt.html true;
        
_root["kate"+i+"_mc"].text_txt.selectable false;
        
_root["kate"+i+"_mc"].text_txt.embedFonts true;
        
_root["kate"+i+"_mc"].text_txt.setTextFormat(mF);
        
_root["kate"+i+"_mc"].onRollOver = function() {
            
this.text_txt.textColor 0xFF3301;
        };
        
_root["kate"+i+"_mc"].onRollOut = function() {
            
this.text_txt.textColor 0x000000;
        };
        
_root["kate"+i+"_mc"].onRelease = function() {
            
this.removeMovieClip();
        };
    }; 
liegt das ja noch in der for schleife.
und wenn nicht, wie kann ich die einzelnen instanzen sonst referenzieren?

//edit:

ich hab das jetzt einfach durchnummeriert, also _root.kate0_mc usw.
geht das auch einfacher, also 0-4 in einer zeile?
__________________
deconstruction desinformation antistyles

Geändert von antistyles (07-12-2004 um 22:59 Uhr)
antistyles ist offline   Mit Zitat antworten
Alt 07-12-2004, 23:00   #13 (permalink)
User
 
Benutzerbild von jeypack
 
Registriert seit: Sep 2003
Ort: Essen
Beiträge: 616
Zitat:
Zitat von antistyles
den parent mc kann ich auf visible=false stellen, das klappt, jedoch sind die einzelnen instanzen dann immer noch zu sehen (liegt wohl am xml object oderso).
über this.removeMovieClip(); kann ich ja auch eine einzelne instanz löschen, aber was ist wenn ich alle instanzen auf einmal löschen will? die hab ich ja vorher auch immer über _root["kate"+i+"_mc"] referenziert aber so

PHP-Code:
 _root["kate"+i+"_mc"].onRelease = function() {
            
_root.kl._visible=false;
            
_root["kate"+i+"_mc"].removeMovieClip();
        }; 
geht das nicht und ich weiss nicht warum

ne, ne

bei meiner Variante sind die mc's ja in dem übergeordneten MC.
Du hingegen machst ja _root.attacheMovie...
d.h. deine mc's befinden sich alle einzeln auf _root.

Mach einfach, wie beschrieben. Erzeuge einen leeren mc mit _root.createEmptyMovieClip...wie im Beispiel. Attache die mc's in diesen MC.
Dann werden auch alle Instanzen gelöscht, wenn du den übergeordneten MC löscht.


Man du bist ja schneller als die Polizei erlaubt.

Aber es bleibt dabei.

Geändert von jeypack (07-12-2004 um 23:03 Uhr)
jeypack ist offline   Mit Zitat antworten
Alt 07-12-2004, 23:08   #14 (permalink)
destruction tour 2004
 
Benutzerbild von antistyles
 
Registriert seit: Feb 2003
Ort: Göttingen
Beiträge: 220

ja jetzt hab ichs was du meintest,
hab es über _root.kl.blabbla gelöst, dh alle isntanzen sind nicht mehr aufm root sondern in dem mc kl.
herzlichen dank
__________________
deconstruction desinformation antistyles
antistyles ist offline   Mit Zitat antworten
Alt 07-12-2004, 23:42   #15 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
btw, wo hast du ein verständnisproblem?
bei deinem letzten script passiert genau das, was du willst:

bei klick auf den erstellten mc wird dieser removed.



wenn du alle bei klick auf einen(!) removen willst, dann mußt du das auch so sagen.
warrantmaster 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 08:05 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele