Movieclip in Schaltfläche laden

shuriken

Grünschnabel
variables Bild in Schaltfläche laden

Hallo zusammen!

Ich möchte einen Flash-Button machen, wo das Bild variabel ist.
Also hab ich eine Schatlfläche (btn1) gemacht, in diese Schaltfläche einen MovieClip (mc1) für die Animation getan und in diesen MovieClip nochmals einen MovieClip (thumb1) wo das variable Bild sein soll.
Im thumb1 ist ein leeres Schlüsselbild.
Wenn ich jetzt
PHP:
thumb1.loadMovie("thumbnails/img_007.jpg");
in den ersten Frame, wo der Button ist, einfüge, passiert aber nichts.
Nur wenn ich thumb1 aus der Bibliothek direkt auf die Bühne ziehe kommt das Bild, aber in der Schaltfläche ist es nicht zu sehen.

Kann mir bitte jemand bei dem Problem helfen!!

mfg Shuriken
 
Zuletzt bearbeitet:
Hi und willkommen im Forum,

Schaltflächenobjekte verfügen gegenüber MovieClips über eine sehr eingeschränkte Funktionalität (insbesondere was das Ausführen von Code betrifft), und kommen daher in der Regel nicht mehr zum Einsatz (es sei denn, Du willst sehr einfache Buttons ohne ActionScript erstellen).

Verwende statt dessen lieber ausschließlich MovieClips und arbeite mit den Mausereignissen der MovieClip-Klasse (onRollOver, onPress, onRelease usw.), um das Verhalten umzusetzen.

Gruß
.
 
Danke erstmal für die schnelle Antwort!

Leider funktioniert es auch dann nicht wenn ich nur MovieClips benutze...
Ich hab thumb1 in mc1 gesetzt, dort animiert (das Bild wird kleiner), dann das Bild aus thumb1 gelöscht und wieder versucht es mit obigen ActionScript zu laden.

Aber es wird nur dann geladen wenn es direkt auf der Bühne ist.

mfg Shuriken
 
Hi,

es wird sich um ein Pfadproblem handeln. Poste bitte mal Deine fla, damit ich mir das Problem im Original ansehen kann.

Gruß
.
 
Aus einem mir unerklärlichen Grund ist die Datei über 150kb groß, deswegen musste ich sie in eine zip-datei tun.

Das Bild das laden soll befindet sich in mc1>Ebene Thumb.


mfg Shuriken
 

Anhänge

  • test.zip
    96,5 KB · Aufrufe: 15
Hi,

im Anhang findest Du eine modifizierte Version.

Du kannst generell keine MovieClips adressieren, die sich in Schaltflächenobjekten befinden - abgesehen davon müsstest Du dem Button und dem dort enthaltenen MC einen Instanznamen geben, und den Zielclip (von der Hauptzeitleiste aus) in etwa so adressieren:
Code:
_root.instanznameDerSchaltfläche.instanznameDesMovieClips.thumb1.loadMovie("dasbild.jpg");

Dann hättest Du aber immer noch das Problem, dass sich im "Darüber"-Frame der Schaltfläche eine neue Instanz eines MC befindet, in deren Container das Bild nicht geladen wurde (und Du kannst dort auch nicht hineinladen, solange dieser Frame nicht angezeigt wird).

Ich habe die Schaltfläche in einen MovieClip umgewandelt, der die rollOver-Animation direkt auf seiner Zeitleiste enthält (beim rollOut wird die Zeitleiste einfach rückwärts abgespielt).

um für die verschiedenen Zustände (Normal, darüber, gedrückt usw.) unterschiedliche Animationen abzuspielen, packt man heute keine MovieClips mehr in die Frames einer Schaltfläche, sondern setzt einen MovieClip ein, auf dessen Zeitleiste man sich (ausgelöst durch verschiedene Mausereignisse) hin und her bewegt.

Gruß

P.S.: Wenn eine Datei durch mehrmaliges Importieren und Löschen von Objekten übermäßig groß geworden ist, hilft die Option "Speichern und komprimieren" im "Datei"-Menü, mit der Du das Dokument quasi defragmentieren kannst.
.
 

Anhänge

  • test2.zip
    8,6 KB · Aufrufe: 19
Vielen Dank :)

Ich hatte leider keine Ahnung wie man einen MovieClip rückwärts abspielt deswegen konnt ich mir nur mit dem Button helfen.

!! Danke !!
 
Hi,

auch dann kannst Du die Animationen für "vorwärts" und "rückwärts" einfach auf der Zeitleiste des MovieClips hintereinander setzen:
Code:
this.onRollOver = function() {
  gotoAndPlay(Framenummer_der_Over_Animation);
}

this.onRollOut = function() {
  gotoAndPlay(Framenummer_der_Out_Animation);
}
;)

Gruß
.
 
so ähnlich hatte ichs schon versucht...

PHP:
on(RollOver) {
gotoAndPlay(1);
}
on(RollOut) {
gotoAndPlay(10);
}
so in etwa ^^ kanns net auswendig

und im movieclip dann noch stop();

Das klappte aber immer nur beim ersten mal, beim zweiten mal wo ich die Maus drüber gezogen hab ist er nur noch zum Frame hingesprungen ohne es abzuspielen.

Naja egal :rolleyes:
 
Zurück