Flashhilfe.de - Flash Community

fremder Movieclip bewegen [Flash MX 2004]

 


AntwortenRegistrieren Seite1  

Chamelion#1
Benutzerbild von Chamelion
Beiträge: 9
Registriert: Jul 2004

25.07.2004, 14:49

Ich habe diesen Code geschrieben,
ist aus einem Buch,
funktioniert auch einwandfrei:

ActionScript:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//Methode: MovieClip.schiebeBis()
//Beschreibung: Schiebt einen Clip mit der angegebenen
//              Geschwindigkeit an den Punkt (koordX, koordY).
//Params: koordX  Die anvisierte X-Koordinate.
//        koordY  Die anvisierte Y-Koordinate.
//        geschwindigkeit    Bewegungsrate (Pixel pro Bild).
MovieClip.prototype.schiebeBis = function (koordX, koordY, geschwindigkeit){
   
   //Nur bewegen, wenn der Clip nicht schon am Ziel ist.
   if (this._x != koordX && this._y != koordY){
      
      //Erstelle verschachtelte Funktion und weise sie als
      //onEnterFrame()-Event-Handler des Clips zu.
      this.onEnterFrame = function () {
         
         //Ermittle Entfernung zwischen Clip und Ziel.
         //Die Parameter koordX und koordY werden über die
         //Geltungsbereichskette erreicht.
         var deltaX = this._x - koordX;
         var deltaY = this._y - koordY;
         var entfernung = Math.sqrt((deltaX * deltaX)+(deltaY * deltaY));
            
            //Weise Geschwindigkeit zwischen x- und y-Achse zu.
            var bewegeX = geschwindigkeit * (deltaX / entfernung);
            var bewegeY = geschwindigkeit * (deltaY / entfernung);
            
            //Ist der Clip schnell genug, um über das Ziel hinausfährt,
            //gehe nur zum Ziel. Andernfalls beweg dich mit der durch den
            //schiebeBis()-Parameter vorgegebenen Geschwindigkeit.
            if (geschwindigkeit >= entfernung) {
               this._x = koordX;
               this._y = koordY;
               //Da der Clip am Ziel ist. hör auf zu fahren.
               delete this.onEnterFrame;
            } else {
               this._x -= bewegeX;
               this._y -= bewegeY;
            }
      }
   }
   
}


in meinem MovieClip steht:

ActionScript:
1
2
3
onClipEvent(mouseDown){
   schiebeBis(50,50,5);
}


nun habe ich this mit Clip ersetzt,
dann steht das in meinem MovieClip

ActionScript:
1
2
3
onClipEvent(mouseDown){
   schiebeBis(50,50,5,Test);
}


wenn ich Test bewegen will,
mein Problem ist,
dass ich Test so nicht bewegen kann.

Kann mir jemand sagen wo der Fehler ist,
wäre echt dankbar.

Gruß


Sebastian#2
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6981
Wohnort: München
Registriert: Jan 2002

25.07.2004, 17:38

Hi,

der Prototype läßt nur 3 Parameter zu:
function (koordX, koordY, geschwindigkeit)

Ich nehm mal an das Test dein MC ist.

Dann nehm das Script und mach es einfach mal auf den MC Test:
ActionScript:
1
2
3
onClipEvent(mouseDown){
    schiebeBis(50,50,5);
}


Oder was ist dein Problem?

Grüsse,
Sebastian Wichmann

Flashhilfe.de Webmaster
http://www.flashhilfe.de
JavaScript & JavaFX Freelancer || Flashhilfe @ Twitter || XING Profil
Chamelion#3
Benutzerbild von Chamelion
Beiträge: 9
Registriert: Jul 2004

Themenautor/in

26.07.2004, 16:32

Das weiß ich,
habe nur diesen zwischenschritt nicht gepostet.

hier der zwischenschritt:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//Methode: MovieClip.schiebeBis()
//Beschreibung: Schiebt einen Clip mit der angegebenen
//              Geschwindigkeit an den Punkt (koordX, koordY).
//Params: koordX  Die anvisierte X-Koordinate.
//        koordY  Die anvisierte Y-Koordinate.
//        geschwindigkeit    Bewegungsrate (Pixel pro Bild).
MovieClip.prototype.schiebeBis = function (koordX, koordY, geschwindigkeit, Clip){
   
   //Nur bewegen, wenn der Clip nicht schon am Ziel ist.
   if (Clip._x != koordX && Clip._y != koordY){
      
      //Erstelle verschachtelte Funktion und weise sie als
      //onEnterFrame()-Event-Handler des Clips zu.
      Clip.onEnterFrame = function () {
         
         //Ermittle Entfernung zwischen Clip und Ziel.
         //Die Parameter koordX und koordY werden über die
         //Geltungsbereichskette erreicht.
         var x = 10
         for (var i = 0; i <=20; i++){
                  
            //Weise Geschwindigkeit zwischen x- und y-Achse zu.
            var bewegeX = (koordX - 1)* geschwindigkeit;
            var bewegeY = (Math.sqrt(100-(pow(x,2))))*geschwindigkeit;
                                     
            var x = x - 1 ;
            
            //Ist der Clip schnell genug, um über das Ziel hinausfährt,
            //gehe nur zum Ziel. Andernfalls beweg dich mit der durch den
            //schiebeBis()-Parameter vorgegebenen Geschwindigkeit.
            if (geschwindigkeit >= entfernung) {
               Clip._x = koordX;
               Clip._y = koordY;
               //Da der Clip am Ziel ist. hör auf zu fahren.
               delete CliponEnterFrame;
            } else {
               Clip._x -= bewegeX;
               Clip._y -= bewegeY;
            }
      }
   }
   }
}


dann müsste wenn ich für den Movieclip

ActionScript:
1
2
3
onClipEvent(mouseDown){
   schiebeBis(500,50,Chapter02);
}


Wenn der MovieClip Chapter02 auf der Hauptbühne liegt.

Warum geht das nicht?

Gruß

Sebastian#4
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6981
Wohnort: München
Registriert: Jan 2002

26.07.2004, 16:35

Weil das Ziel wahrscheinlich falsch angegeben ist:
ActionScript:
1schiebeBis(500,50,_parent.Chapter02);


Die Funktion kannste dann auch so schreiben:
ActionScript:
1schiebeBis = function (koordX, koordY, geschwindigkeit, Clip){

Den Prototype bentötigst du mit deiner Variante nicht.
Einfacher ist es aber du läßt die Methode wie sie war, und rufst sie dann so auf:
ActionScript:
1_parent.Chapter02.schiebeBis(500,50);


Grüsse,
Sebastian Wichmann

Flashhilfe.de Webmaster
http://www.flashhilfe.de
JavaScript & JavaFX Freelancer || Flashhilfe @ Twitter || XING Profil
Geändert von Sebastian am 26.07.04 um 16:37 Uhr
Chamelion#5
Benutzerbild von Chamelion
Beiträge: 9
Registriert: Jul 2004

Themenautor/in

08.08.2004, 12:54

ich war im Urlaub,

danke für die Antwort,
aber es geht bei mir leider noch nicht wirklich.

Ich habe nun den Script im ersten Frame in der ersten Bildebene auf der Hauptbühne

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//Methode: MovieClip.schiebeBis()
//Beschreibung: Schiebt einen Clip mit der angegebenen
//              Geschwindigkeit an den Punkt (koordX, koordY).
//Params: koordX  Die anvisierte X-Koordinate.
//        koordY  Die anvisierte Y-Koordinate.
//        geschwindigkeit    Bewegungsrate (Pixel pro Bild).
MovieClip.prototype.schiebeBis = function (koordX, koordY, geschwindigkeit){
   
   //Nur bewegen, wenn der Clip nicht schon am Ziel ist.
   if (this._x != koordX && this._y != koordY){
      
      //Erstelle verschachtelte Funktion und weise sie als
      //onEnterFrame()-Event-Handler des Clips zu.
      this.onEnterFrame = function () {
         
         //Ermittle Entfernung zwischen Clip und Ziel.
         //Die Parameter koordX und koordY werden über die
         //Geltungsbereichskette erreicht.
         var deltaX = this._x - koordX;
         var deltaY = this._y - koordY;
         var entfernung = Math.sqrt((deltaX * deltaX)+(deltaY * deltaY));
            
            //Weise Geschwindigkeit zwischen x- und y-Achse zu.
            var bewegeX = geschwindigkeit * (deltaX / entfernung);
            var bewegeY = geschwindigkeit * (deltaY / entfernung);
            
            //Ist der Clip schnell genug, um über das Ziel hinausfährt,
            //gehe nur zum Ziel. Andernfalls beweg dich mit der durch den
            //schiebeBis()-Parameter vorgegebenen Geschwindigkeit.
            if (geschwindigkeit >= entfernung) {
               this._x = koordX;
               this._y = koordY;
               //Da der Clip am Ziel ist. hör auf zu fahren.
               delete this.onEnterFrame;
            } else {
               this._x -= bewegeX;
               this._y -= bewegeY;
            }
      }
   }
}


und in meinem Movieclip Chaptor02 steht.

ActionScript:
1
2
3
4
onClipEvent(mouseDown){
   _parent.Chaptor01.schiebeBis(500,50);

}


aber der erste Movieclip Namens Chaptor01 bewegt sich nicht,
kann auch das ganze mal als Datei schicken falls das was helfen würde.

Gruß Daniel

umlart#6
Benutzerbild von umlart
Beiträge: 6212
Wohnort: Berlin
Registriert: Nov 2002

08.08.2004, 13:03

onClipEvent(mouseDown){
    _parent.Chaptor01.schiebeBis(500,50);

}

und wie schnell soll es sich bewegen..???


*Man muß nicht wissen wie es geht,
man muß nur wissen wo es steht.*
*Man muß nicht wissen wie es geht,
man muß nur wissen wo es steht.*

Chamelion#7
Benutzerbild von Chamelion
Beiträge: 9
Registriert: Jul 2004

Themenautor/in

08.08.2004, 14:04

ich habe jetzt noch als geschwindigkeit 5 hineingeschrieben sprich es hat sich folgendes geändert,

ActionScript:
1
2
3
onClipEvent(mouseDown){
   _parent.Chaptor01.schiebeBis(500,50,5);
}


Bewegen tut sich aber trotzdem nichts.

umlart#8
Benutzerbild von umlart
Beiträge: 6212
Wohnort: Berlin
Registriert: Nov 2002

08.08.2004, 14:48

na dann pack mal alles in eine zip ,
jag es auf deine space und poste mal den link hierher..
so kann man nicht sagen wo es hackt


*Man muß nicht wissen wie es geht,
man muß nur wissen wo es steht.*
*Man muß nicht wissen wie es geht,
man muß nur wissen wo es steht.*

Chamelion#9
Benutzerbild von Chamelion
Beiträge: 9
Registriert: Jul 2004

Themenautor/in

08.08.2004, 20:28

Ich brauche dringend eine Lösung für mein Problem,
kann die datei gezipt an E-mail schicken.

Wenn mir jemand helfen könnte muss er nur seine E-mail sagen,
habe auch icq 199329945.

da kann man sich schneller unterhalten.

Gruß Daniel

H@ilo#10
Benutzerbild von H@ilo
Beiträge: 15261
Wohnort: Bremen
Registriert: Jan 2002

08.08.2004, 20:36

Das hier ist aber ein Forum und kein Einzelunterricht.

Wo ist das Problem, die Datei auf einer Server zu laden und den Link hier zu posten?

Wenn du noch den Parameter für die Geschwindigkeit angibst, funktioniert dein obiges Script ganz wunderbar - zumindest in MX.

Allerdings kann es sein, dass Prototypes von Vorgängerversionen - so sieht das Script eigentlich aus - nicht laufen, wenn sie als AS 2.0 veröffentlicht werden.
Du solltest dir mal aktuelle Lektüre besorgen.

Und wozu eigentlich das mouseDown? Die Funktion wird - egal, wohin man klickt - aufgerufen.

Und noch eine - eventuell entscheidende - Kleinigkeit:
Chaptor01 != Chapter01

H@ilo
Freizeitflasher
H@ilo
Freizeitflasher
Geändert von H@ilo am 08.08.04 um 20:41 Uhr
Chamelion#11
Benutzerbild von Chamelion
Beiträge: 9
Registriert: Jul 2004

Themenautor/in

08.08.2004, 20:57

Hier ist die Datei
ich will wenn ich über einen Movieclip drüberfahre,
dass alle anderen an bestimmte Punkte fahren

der link:

http://www.bumerangprojekt.de/_DEV/MENUE/Tets.fla


Gruß

umlart#12
Benutzerbild von umlart
Beiträge: 6212
Wohnort: Berlin
Registriert: Nov 2002

08.08.2004, 21:20

die fla is defekt..
pack sie mal in eine zip und dann auf dein server..
kontolliere mal bitte ob du instanznamen vergeben hast
ansonsten wie von H@ilo beschrieben


*Man muß nicht wissen wie es geht,
man muß nur wissen wo es steht.*
*Man muß nicht wissen wie es geht,
man muß nur wissen wo es steht.*

Chamelion#13
Benutzerbild von Chamelion
Beiträge: 9
Registriert: Jul 2004

Themenautor/in

08.08.2004, 21:43

Danke gott sei dank es geht,

ich hatte keine Instanznamen vergeben.

Also ich bin euch wirklich zu dank verpflichtet.

Muss das nämlich zumindest lückenhaft bis morgen fertig haben.

tut mir leid wenn ich mich manchmal noch ein bisschen dumm anstellle, aber ich mach das halt noch net lange.

Gruß

Atticus#14
Benutzerbild von Atticus
Beiträge: 1411
Wohnort: Leverkusen
Registriert: Jul 2006

19.03.2007, 13:09

Hallo^^

Ich habe mal eine frage zu diesem Thema, wie kann man den die funktion abbrechen ?? Also wenn manzum beispiel mit Drag and Drop auf den MC drückt das er sich nicht mehr dahin bewegt sondern sich mit der maus verschieben lässt ??

Gruß Atticus^^

Atticus#15
Benutzerbild von Atticus
Beiträge: 1411
Wohnort: Leverkusen
Registriert: Jul 2006

19.03.2007, 14:00

Hat sich schon erledigt^^

Gruß Atticus^^


AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2022 Sebastian Wichmann - Flashhilfe.de