Zugriff auf MovieClip in Hauptebene funktioniert nicht

klaustaler

Grünschnabel
Hallo alle!

Hab wirklich schon ne weile im Forum gesucht und auch vieles gefunden (Renas schönen Pathfinder zum Beispiel), aber nix hat mir zur Lösung verholfen.

Ich hab einen Button in einem MovieClip eingelagert. Auf diesem Button liegt folgendes script:

PHP:
on(release) {
	_root.loadMovie("images/"+this._name+".jpg", "pic_full");
	}

Sinn der Sache soll sein, dass ich auf meiner Hauptbühne mehrere Instanzen dieses MovieClips lege und den Instanzen Namen gebe, über welche dann in einem weiteren (anfangs leeren) MovieClip auf der Hauptbühne JPGs geladen werden.

Das Skript funktioniert soweit, dass das richtige Bild gefunden und auch geladen wird, sobald man auf einen der Buttons klickt. Allerdings wird das Bild nicht in den gewünschten MovieClip geladen ("pic_full"), sondern einfach als neue Hauptbühne...

Wie kann ich denn im skript (welches also auf einem Button innerhalb eines MCs liegt) ausdrücken, dass ich das JPG in einen MC laden will, dessen Instanz auf der Hauptbühne liegt und "pic_full" benamst ist?

Danke für Antworten!
der flo.
 
so vielleicht..?
PHP:
on(release) { 
    _root.pic_full.loadMovie("images/"+this._name+".jpg"); 
    }
 
Hi,

entweder, Du gibst - wie umlart korrekt angegeben hat - den Zielpfad als Objekt vor der loadMovie-Aktion (loadMovie-Methode des MovieClip-Objekts kennt auch nur einen Parameter) an, oder Du verwendest loadMovie nicht als Objektmethode, sondern als eigenständige Aktion - dann kennt er auch den zweiten Parameter:
Code:
on(release) {
    loadMovie("images/"+this._name+".jpg", pic_full);
}

Gruß
.
 
ok prima, das funktioniert jetzt *freu*
habs jetzt folgendermaßen gelöst. Auf dem Button liegt das hier:

PHP:
on(release){
	url = "images/"+this._name+".jpg";
	_root.pic_full.loadImage(url);
}

und im MovieClip "pic_full" habe ich die funktion loadImage(URL) erstellt:

PHP:
function loadImage(url) {
	// hier wird nun das Bild korrekt geladen
	loadMovie(url, _root.pic_full);

	// Nun soll es noch in einem Bereich von 350px zentriert werden
	rand =  Math.round((350 - this._width) / 2);
	this._x += rand;
}

BEVOR das erstemal ein Bild geladen ist liegt in pic_full ein gezeichneter Rahmen, quadratisch, 350px. Dadurch ist pic_full 350px breit. Innerhalb dieses Bereiches soll das geladene JPG (das ja dann den Rahmen ersetzt) zentriert werden

Also dachte ich mir, ich ziehe die Breite des geladenen JPGs von den 350px ab, und teile den Rest durch 2, damit ich den jeweils linken und rechten Rand fürs Zentrieren erhalte. das Ergebnis addiere ich dann dem aktuellen x-Wert hinzu.

Komischerweise gibt er aber auch NACH dem Laden des JPGs bei einem trace(this._width) 350px aus. Obwohl das JPG deutlich dünner ist...?

Ich habe noch folgendes Script versucht:

PHP:
function loadImage(url) {

	url.onLoad = function(success) {
		if (success) {
			trace("OK"); // Hier dann zentrieren lassen
		} else {
			trace("Not OK");
		}
	};
		
	loadMovie(url, _root.pic_full);
}

aber auch das hatte keine wirkung...?

ideen?
danke!
 
Hi,

1.
ok prima, das funktioniert jetzt *freu*
habs jetzt folgendermaßen gelöst. Auf dem Button liegt das hier:

PHP:
on(release){
    url = "http://www.tutorials.de/forum/images/"+this._name+".jpg";
    _root.pic_full.loadImage(url);
}

und im MovieClip "pic_full" habe ich die funktion loadImage(URL) erstellt:

PHP:
function loadImage(url) {
    // hier wird nun das Bild korrekt geladen
    loadMovie(url, _root.pic_full);

    // Nun soll es noch in einem Bereich von 350px zentriert werden
    rand =  Math.round((350 - this._width) / 2);
    this._x += rand;
}
Macht in sofern keinen Sinn, als dass der MC "pic_full" durch die loadMovie-Aktion überschrieben wird, und kein Code, der nach dem loadMovie notiert ist, ausgeführt wird. Entweder legst Du im MC "pic_full" einen eigenen Container für das Bild an, oder Du steuerst das Laden von aussen.

2. Es dauert - auch beim Test auf dem lokalen System - immer ein paar Augenblicke, bis die Datei geladen ist. Wenn Du direkt nach der loadMovie-Aktion die Maße testest, bekommst Du immer die Größe vor dem Laden.

Dein Versuch mit "onLoad" ist hier müßig, da das String-Objekt (url ist hier ja ein String mit dem Pfad zur Datei) keine onLoad-Methode kennt. die onLoad-Methode des MovieClip-Objekts bezieht sich nicht auf per loadMovie geladene Daten.

Du kannst entweder die MovieClipLoader-Klasse verwenden (siehe Flashreferenz), oder Du wartest z.B. per onEnterFrame darauf, dass das Bild komplett geladen ist:
Code:
// Code auf der Hauptzeitleiste:

function loadImage(destination, url) {
    // hier wird nun das Bild korrekt geladen
    destination.loadMovie(url);
    this.onEnterFrame = function() {
        var cur = destination.getBytesLoaded();
        var max = destination.getBytesTotal();
        if (cur > 10 && max > 10) {
            if (cur >= max) {
                rand =  Math.round((350 - destination._width) / 2);
                destination._x += rand;
                delete this.onEnterFrame;
            }
        }
    }
}

loadImage(pic_full, "pfad/zum/bild");

Gruß
.
 
@umlart:
denke ich auch, aber andernfalls wär die antwort ja zu perfekt gewesen ;)

@tobias:
hab denk ich alles verstanden, danke! werds gleich mal ausprobieren.



edit: klappt :D
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück