Probleme mit startDrag

ksk

Erfahrenes Mitglied
Hallo zusammen!

Ich möchte eine Karte (Plan) in einem MovieClip hin und her verschieben können.
Dieses habe ich mit
Code:
var mcl:MovieClipLoader = new MovieClipLoader();
mcl.loadClip("../../images/plan.jpg", plan_mc)
var listenerObject:Object = new Object();
listenerObject.onLoadInit = function(target_mc) {
	target_mc._x = '-560';	// x-Position 
	target_mc._y = '-250';	// y-Position
 target_mc.onPress = function() {
 startDrag(this,false,'-850','-340','0','0');
 };
 target_mc.onRelease = function() {
 stopDrag();
 };
};
mcl.addListener(listenerObject);
gelöst.

Doch leider, wenn ich die swf in meine Seite einbinden möchte, sehe ich alles bis auf das Bild welches hinein geladen werden soltle. Ich habe dann das Bild direkt in Flash importiert und es so auf die Bühne eingefügt.
So wird es auf der ASP-Seite angezeigt, allerdings funktioniert der Code nicht mehr, sprich das Verschieben.
ich würde gerne den Code so ändern das in dem MovieClip das Bild von der Bibliothek angezeigt wird oder wenn ich das Bild direkt in den MovieClip hinein gebe. Da die Dynamisch geladenen Bilder von flash, in ASP nicht angezeigt werden.
Warum auch immer.
Ich wäre daher sehr dankbar für jede hilfe
 
Hi,

füge bitte mal Deine .fla als Anhang mit ein, damit ich mir ein Bild von der Situation machen kann.

Doch leider, wenn ich die swf in meine Seite einbinden möchte, sehe ich alles bis auf das Bild welches hinein geladen werden soltle.
Nun, der Inhalt von "plan_mc" wird durch das Einladen ersetzt. Ist es das, was Du meinst?

So wird es auf der ASP-Seite angezeigt, allerdings funktioniert der Code nicht mehr, sprich das Verschieben.
Wie sieht denn der Code fürs Verschieben in der Version ohne externe Inhalte aus?

Da die Dynamisch geladenen Bilder von flash, in ASP nicht angezeigt werden.
Ich verstehe nicht, was ASP (serverseitig) damit zu tun haben soll. :confused:

Gruß
.
 
Der Code ohne externe, bin ich noch am tüffteln. Statt einen MCLoader probiere ich irgendwie mit
Code:
var mcl:MovieClip = plan_mc();
einem MC-Objekt den ich auf den MC auf der Bühne verweise. Dort habe ich das Bild direkt in die plan_mc eingefügt.
Der rest vom Code sollte auch hier passen.

Zum ersten Zitat: Die im Anhang enthaltene Datei funktioniert wunderbar, aber wenn ich die swf in der ASP-Seite einbinde, sehe ich nur das Bild welches vom Flash geladen werden sollte nicht. Der blaue Rahmen ist sichtbar.
 
Hi,

Dein Code funktioniert - von einigen Details abgesehen - korrekt. Statt der startDrag-Methode absolute Werte mitzugeben, könntest Du die Maske ebenfalls in einen MovieClip umwandeln und die Grenzkoordinaten fürs Verschieben aus den Maßen des geladenen Bildes und der Maske berechnen. Dann kannst Du Bilder unterschiedlicher Größe einladen, ohne den Quelltext ändern zu müssen. Zudem solltest Du die stopDrag-Aktion nicht nur bei onRelease, sondern auch bei onReleaseOutside ausführen, da Du den Clip ansonsten nicht "los wirst", wenn Du die Maus weiter ausserhalb des Maskenbereichs loslässt.

Dass Dein Bild nicht geladen wird, sobald Du es in Deine Webseite einbindest (ob diese serverseitig per ASP, JPS, PHP etc. zusammengebaut wird, spielt keine Rolle), könnte daran liegen, dass die html-Seite und die Flashdatei nicht im selben Verzeichnis liegen. Flash referenziert Pfade (also auch den zur Bilddatei) immer vom Verzeichnis der Seite aus, in der die Seite (und nicht unbedingt die SWF) liegt.

var mcl:MovieClip = plan_mc();
Das kann nur funktionieren, wenn "plan_mc" eine Funktion ist, die ein Objekt von Typ MovieClip zurückgibt. Handelt es sich um einen MovieClip, ist der Code syntaktisch falsch.

Gruß
.
 
Statt der startDrag-Methode absolute Werte mitzugeben, könntest Du die Maske ebenfalls in einen MovieClip umwandeln und die Grenzkoordinaten fürs Verschieben aus den Maßen des geladenen Bildes und der Maske berechnen

Mir geht es hauptsächlich darum das die Karte beim Start an einer bestimmten Position ist.
Allerdings sollte das Bild nur bis zum rand von jeder ecke verschoben werden.
Um ehrlich zu sein habe ich eine Weile gebraucht bis ich das so halbwegs hinbekommen habe, das ein bestimmter platz in der Mitte vom MC angezeigt wird und das Verschieben bis zum rand.
Gibt es schon einen Beitrag diesbezüglich, wo ich auf einfache Art und Weise das bewerkställigen kann. Wenn nicht könntest du mir ein Beispiel posten wenn´s keine Umstände macht. Wäre sehr dankbar dafür.
Flash referenziert Pfade (also auch den zur Bilddatei) immer vom Verzeichnis der Seite aus, in der die Seite (und nicht unbedingt die SWF) liegt.
Ich werde mich mal um dies kümmern.

p.s.
In dem Beispiel im Anhang, hat das Bild eine größe von 800x600 und das Originale 1024x768. weils nicht anders mit dem Uploaden ging.
 
Hi,

schau mal in das Beispiel im Anhang. Die Karte wird nach dem Laden per Script unter der Maske zentriert. Du kannst die Größe der Maske (und die Größe des JPGs) beliebig ändern, ohne dass die Funktionalität eingeschränkt wird.

Gruß
.
 

Anhänge

  • plan2.zip
    7,3 KB · Aufrufe: 21
Ich habe mich daweil um das Problem gekümmert.
Du hast recht damit, das die Datein im gleichen Verzeichniss liegen muss.
Wenigstens passt das jetzt halbwegs. Nur mit der Zeit wird es dann bisschen unübersichtlich. Naja, egal.

Ich werde mir ds bespiel jetzt mal anschauen. Danke für deine Hilfe.


Gruß
 
Du hast recht damit, das die Datein im gleichen Verzeichniss liegen muss.
Nicht unbedingt, aber Du musst beim Einladen den Pfad zum Bild relativ zum Pfad der Seite angeben: Angenommen, die SWF und das Bild liegen im Unterverzeichnis "flash", dann muss der Pfad so aussehen:
Code:
meinLoader.loadClip("flash/meinbild.jpg", target_mc);
Die Dateien können auch in verschiedenen Verzeichnissen liegen (man hats ja gerne übersichtlich und daher vielleicht einen Ordner für SWFs und einen für Bilder):
Code:
meinLoader.loadClip("images/meinbild.jpg", target_mc);

Gruß
.
 
Danke für die Tipps.
Aber um eine letzte Frage muss ich dich noch quälen.
Da es wichtig ist das der Plan an einer bestimmten position angezeigt wird, habe ich versucht die Werte einzugeben, aber dies funkt nicht. Kann ich das jetzt nicht mehr angeben?
Code:
this.startDrag(false,'-850','-340','0','0');
 

Neue Beiträge

Zurück