Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-05-2007, 03:18   #1 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 11
Thumbs up Array-Eintrag bei removeMovieClip() löschen

Hi zusammen,

ich hab folgendes Problem:
Über ein Eingabefeld kann ich beliebig viele MC's erzeugen. Diese werden
in einem Array hinterlegt. Wenn ich jetzt einzelne MC's über hitTest() wieder
lösche, soll auch der entsprechende Eintrag im Array gelöscht werden. Dazu
gibt es wohl die Funktion array.splice(), aber so richtig funktioniert das bei
mir nicht. Liegt wohl an meine mangelnden Programmierkenntnisse
Wäre nett, wenn mir jemand helfen könnte!

Quellcode:
Zitat:
function removeContext() {
_root.remove_mc.onEnterFrame = function() {
for (l = 0; l < max; l++) {
var hit = this.hitTest(_root["context_mc" + l]);
if (hit == true) {
_root["context_mc" + l].removeMovieClip();
distanzX_ary.splice(l,1);
distanzY_ary.splice(l,1);
distanz_ary.splice(l,1);
context_ary.splice(l,1);
trace("d: " + distanz_ary.length);
trace("c: " + context_ary.length);
updateAfterEvent();
}
}
}
};

Geändert von aoki (22-05-2007 um 03:25 Uhr)
aoki ist offline   Mit Zitat antworten
Alt 23-05-2007, 09:49   #2 (permalink)
Webverwickler
 
Benutzerbild von wanst
 
Registriert seit: May 2005
Beiträge: 327
soweit vollkommen richtig

was genau funktioiniert denn nicht? wird das element nicht gelöscht, stimmt die Array-Länge danach nicht, passen die Elemente nicht mehr zu den MCs, ... ?
__________________
Gruß
Wanst

Reden ist Silber, Schweigen ist Gold! ... Meistens
wanst ist offline   Mit Zitat antworten
Alt 23-05-2007, 12:50   #3 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 11
Leider funktioniert die Array.splice() Methode nicht so wie sie es sollte.
Wenn ein MovieClip gelöscht wird, sollen auch die entsprechenden
Einträge in den Arrays gelöscht werden. Im einen Array ist der Name
des MC's und im anderen der Abstand zur Mitte hinterlegt. Wenn z.B.
das MC "context_mc2" gelöscht wird, sollen auch die Einträge an zweiter
Position im Array gelöscht werden. Das klappt allerdings nur beim ersten
Löschen des MC's, danach entweder gar nicht (beim distanz_ary) oder
nur teilweise (beim context_ary). Also die Arraylänge stimmt nicht!
Gibt es evtl. Probleme mit der splice() Methode? Evtl. andere Lösungen?
Oder liegt es vielleicht an meinem Code!?

Ich danke schon mal im voraus für Hilfestellungen!

Geändert von aoki (23-05-2007 um 12:56 Uhr)
aoki ist offline   Mit Zitat antworten
Alt 23-05-2007, 14:08   #4 (permalink)
Webverwickler
 
Benutzerbild von wanst
 
Registriert seit: May 2005
Beiträge: 327
Ok, ist vielleicht eine dumme Frage, aber für welche Informationen brauchst du dieses Array, was du nicht auch den MCs selbst als Wert mitgeben könntest?
Beispiel: Steck deine "context"-MCs in einen eigenen MC (nicht in _root), dann:
PHP-Code:
for (i in cont_mc) {
    if (
i.indexOf("context")>-1) {
        
context_mc[i].distanzX = ...; // hier Berechnung einfügen
        // ... usw.
    
}

Dann genügt es, den MC zu löschen...
__________________
Gruß
Wanst

Reden ist Silber, Schweigen ist Gold! ... Meistens
wanst ist offline   Mit Zitat antworten
Alt 23-05-2007, 14:22   #5 (permalink)
Spieler
 
Registriert seit: Feb 2003
Ort: Hamburg/Elmshorn
Beiträge: 297
meine vermutung: du löscht movieclips, die durchnummeriert sind (z.b. 0-9). dazu greifst du jeweils auf den "index" des mc zu. kann das in etwa sein?

splice entfernt nämlich ganze elemente aus dem array, d.h., alles hinter dem gelöschten rückt quasi nach... wenn du 10 mal index 0 löscht, dann ist das array danach leer und hat nach jedem durchgang eine länge weniger, also 9, 8, 7, ...

kann hier dein denkfehler liegen?
__________________
MfG,
FastEddie

Kunde: „Alles prima, wir hätten da aber noch eine Textkorrektur in den Groblayouts. Bitte Lorem ipsum anstatt Lorem Ipsum.“ Geliehen von http://kunden.ausderhoelle.de
FastEddie ist offline   Mit Zitat antworten
Alt 23-05-2007, 20:58   #6 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 11
Danke für die Antworten

Aber so wirklich helfen sie mir auch nicht weiter.

Ich brauche die Arrays, da die MC's später über eine XML-Datei dynamisch
von einem Systemframework erstellt und ggf. geänderten Daten
(Contextname und die Distanz) wieder zurückgeschickt werden sollen.
Es ist gewollt, wenn ein Context-MC gelöscht wird, dass auch das
entsprechende Element im Array gelöscht werden soll.

Die MC's werden nach dem removeMovieClip() beim Tracen,
trace(["context_mc" + l]), immer noch Ausgegeben, also muss die Instanz
immer noch existieren, auch wenn sie auf der Bühne nicht mehr sichtbar ist.
Das darf natürlich auch nicht sein, aber vielleicht liegt es auch daran!?

Geändert von aoki (23-05-2007 um 21:00 Uhr)
aoki 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 10:41 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele