create und remove Movieclip

suntrop

Erfahrenes Mitglied
Hallo,

ich habe in einem MC einen Button mit dem Code
PHP:
on (release) {
	//mc erstellen
	this.createEmptyMovieClip("images01a", 16000);
	//bild in neuen MC laden
	loadMovie("images01a_big.jpg", images01a);
	//mittig positionieren
	this.images01a._x = -30;
	this.images01a._y = -200;
	
	//drag funktion
	onPress = function () {
		startDrag(this.images01a);
	};
	onRelease = function () {
		stopDrag();
		removeMovieClip("images01a");
	};}

Wenn ich drauf klicke, dann wird ein MC erstellt, das Bild reingeladen
und auch die Drag-Funktion inkl. dem removeMovieClip funktioniert.
Leider geht das nur einmal. Wenn das Bild einmal weg ist, kann ich
es durch erneutes klicken nicht wieder öffnen.

Liegt wohl an dem removeMovieClip? Habe es auch schon mit
unloadMovie ausprobiert, nur habe ich dann das gleiche Problem.

Was muss ich ändern, damit es sich beim Klicken öffnet, beim Loslassen
des neuen MC wieder schließt und beim erneuten Klick auf den Button
wieder öffnet?

Danke euch


mfg suntrop
 
Hallo,

folgende Hinweise:

1. Der Container-MovieClip für das zu ladende Bild wird im Button selbst erstellt und nicht etwa eine Ebene höher (das gilt aber nur für den Fall, dass dein Button auch wirklich ein Button-Symbol ist).

2. Du überschreibst ja die Events deines Buttons auf onRelease. Ich behaupt nun mal einfach, die Event-Funktionen für on Press und onRelease, die du im Body der Button-Funktion definierst, sollen für das Bild gelten und nicht für den Button selbst. Du musst die Events also dem Bild auch zuordnen:
PHP:
on (release) {
    //mc erstellen
    var clip  = this.createEmptyMovieClip("images01a", 16000);
    //bild in neuen MC laden
    loadMovie("images01a_big.jpg", clip);
    //mittig positionieren
    clip._x = -30;
    clip._y = -200;
    
    //drag funktion
    clip.onPress = function () {
        this.startDrag();
    };
    clip.onRelease = function () {
        this.stopDrag();
        this.removeMovieClip();
    };
}

Ausserdem musst du die Pfade in den Event-Funktionen anpassen. Ich hab ausserdem nun den neu erstellten MovieClip in einer Variable zwischengespeichert, der Übersicht halber ;).

gruss
 
Danke für deine Antwort, nur leider habe ich sie nicht richtig verstanden.
Und es funktioniert auch nicht, bzw. nur teilweise. Der neue MC lässt
sich weder verschieben, noch schließen.

Zu 1. Das habe ich noch verstanden:-) Der neue MC wird im Button erstellt.
PHP:
this.createEmptyMovieClip("images01a", 16000);
, wobei sich das this. auf den Button bezieht(?).

Zu. 2. Was meinst du mit Body der Button-Funktion?
Du musst die Events also dem Bild auch zuordnen:
Ich dachte das hätte ich druch
onPress = function () {
startDrag(this.images01a);
};
gemacht.

Die Pfade sollten stimmen, aber manchmal habe ich echt keine Ahnung
von welcher Position aus ich gehen muss. Wenn dort steht:
PHP:
clip.onPress = function () {
        this.startDrag();
    };
bezieht sich das this. auf clip? Oder den Button?

Das ganze birngt mich jetzt total durcheinander. Ich dachte ich hätte
es solangsam begriffen.

Ich habe mal die >>fla<< hochgeladen. Wäre super wenn du dort mal reinschauen könntest.

Nochmals Danke für deine Hilfe.

mfg suntrop
 
Hallo,

der Body einer Funktion ist der Teil innerhalb der geschweiften Klammern, also die Anweisungen.

Dann zum Pfaden:

Wenn du innerhalb einer Event-Funktion (Funktionen die einem onRelease, onRollOver, onEnterFrames, alles Events also, zugewiesen sind, d.h. eim Eintreffen dieses Events ausgeführt werden) this benutzt, sprichst du damit den Event-Holder an, d.h. den MovieClip bzw das Objekt, dessen Event du einer Funktion zugewiesen hast:

PHP:
_root.createEmptyMovieClip("test", 0);
_root.test.onRelease = function () {
    trace (this);
}
//gibt _level0.test aus
Eine Ausnahme machen hier Button-Symbole. Setze folgenden Code mal auf einen Button und auf einen MovieClip und du wirst den Unterschied erkennen ;).

PHP:
on (release) {
    trace(this);
}

Nun hätt ich dir ja auch gerne was zu deinem eigentlichen Problem erzählt, aber deine *.fla kann ich so nicht öffnen. Erstell doch bitte ein zip-Archiv und lade die Datei als Anlage hoch.

gruss
 
hi,

ich habe den kleinen Test mal gemacht. Bei einem MC wird der Pfad inkl. Instanzname
ausgegebn, beim Button nur der Pfad/Ort wo sich der Button befindet. Ist schonmal
gut zuwissen, solche "Eigenarten" machen es einem am Anfang echt schwer.

Die fla ist als zip im Anhang.
 

Anhänge

Hallo,

kleines Versäumnis meinerseits. Auf Bildcontainer lassen sich keine Events setzen. Darum hab ich noch einen Container eingebaut:

PHP:
on (release) {
    //mc erstellen
    var container  = this.createEmptyMovieClip("ct", 16000);
	var clip  = ct.createEmptyMovieClip("images01a", 16000);
    //bild in neuen MC laden
    loadMovie("images01a.jpg", clip);
    //mittig positionieren
    ct._x = -60;
    ct._y = -240;
    
    //drag funktion
    ct.onPress = function () {
        this.startDrag();
    };
    ct.onRelease = function () {
        this.stopDrag();
        this.removeMovieClip();
    };
}

gruss
 
Zurück