Flashhilfe.de - Flash Community

bewegter Hintergrund durch Mausbewegung [Flash 9]

 


AntwortenRegistrieren Seite1 2  

anbine#1
Benutzerbild von anbine
Beiträge: 16
Registriert: Jan 2009

16.11.2011, 11:47

Hallo Liebe Flasher,

Ich bin noch nicht so versiert in Flash und habe gerade ein Problem. Ich habe in meiner Flash-Datei einen Hintergrund eingebaut der sich mit der Mausbewegung mit bewegen soll, soweit so gut funktioniert das auch alles wunderbar, das Problem ist nur das sich die Maus auch über das Hintergrundbild hinaus bewegt und das Bild nicht die Grenze ist. Ich wäre euch sehr verbunden wenn ihr mir helfen könntet.

Viele Grüße

Anne

anbei mein bisheriger Code

this.onMouseMove = function() {
    constrainedMove(bg_mc, 4, 1);
};

function constrainedMove(target:MovieClip, speed:Number, dir:Number) {


   bg_mc._y = Stage.height-_ymouse;
   bg_mc._x= Stage.width-_xmouse;
    var mSpeed:Number;

    if (dir == 1) {
        mSpeed = 1-mousePercent;
    } else {
        mSpeed = mousePercent;
    }
   
    target.destX = Math.round(-((target._width-Stage.width)*mSpeed));
   
    target.onEnterFrame = function() {
        if (target._x == target.destX) {
            delete target.onEnterFrame;
        } else if (target._x>target.destX) {
            target._x -= Math.ceil((target._x-target.destX)*(speed/100));
        } else if (target._x<target.destX) {
            target._x += Math.ceil((target.destX-target._x)*(speed/100));
        }
    };
}
ashitaka#2
Benutzerbild von ashitaka
Beiträge: 161
Registriert: Apr 2010

18.11.2011, 08:57

Wie sieht das aus?
Endet das komplette swf oder nur der Hintergrund?

Um Mausbewegung auch ausserhalb dieses einen MC´s zu erfassen,
könntest du den Listener an die stage adden.

Wäre hilfreich zu sehen wie das aussehen soll im Endeffekt.
Zeitleisten-Programmierung ist böse! löst euch von der Zeitleiste -> benutzt Flashdevelop!
Antworten auf Flash AS3 Fragen.
Flash Programmierer
anbine#3
Benutzerbild von anbine
Beiträge: 16
Registriert: Jan 2009

Themenautor/in

18.11.2011, 10:21

Hallo
Also ich habe mittlerweile das Begrenzungsproblem zum Teil gelöst, nun hab ich allerdings das Problem das irgendwie die Grenze des Bildes kleiner ist und ich nicht mehr das ganze Bild sehe sondern sich die Maus nur in einem Bereich des Bildes bewegt. Prinzipiell möchte ich das sich mein Hintergrundbild (Movieclip) mit der Bewegung der Maus mitbewegt aber die Bildgrenze dabei als Grenze für die Bewegung dient. Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt. Ich bin noch nicht so bewandert in Flash und versuche mich durch den Flashdschungel zu forsten. Ich danke dir schon einmal für deine Hilfe.

this.onMouseMove = function() {
    constrainedMove(bg_mc, 4, 1);
   import mx.transitions.*;
};

function constrainedMove(target:MovieClip, speed:Number, dir:Number) {


   bg_mc._y = Stage.height-_ymouse;
   bg_mc._x= Stage.width-_xmouse;
 


var position;
var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(delta) {
if((bg_mc._x<-1)and(delta<0))


{

var bewegung = new  mx.transitions.Tween(bg_mc, "_x",
mx.transitions.easing.Regular.easeOut, bg_mc._x,bg_mc._x-delta*100,50, false);

}

else if((bg_mc._x>-1)and(delta<0)){
bg_mc._x = bg_mc._x;

}else if ((bg_mc._x>-990)and(delta>0)){
bg_mc._x -= 0;
position = delta;
}else if((bg_mc._x<-990)and(delta>0)){
bg_mc._x = bg_mc._x;
}
}

Mouse.addListener(mouseListener);
        };
ashitaka#4
Benutzerbild von ashitaka
Beiträge: 161
Registriert: Apr 2010

18.11.2011, 10:53

Hi,

also erstmal importiert man nichts im mosemove-listener, sondern am anfang des scripts

ActionScript:
1import mx.transitions.*;


dann solltest du versuchen, dein script hier ein bisschen leserlicher reinzuposten und auch innerhalb der script tags. Bei deinem kuddelmuddel blickt ja keiner durch.

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
this.onMouseMove = function() {
      constrainedMove(bg_mc, 4, 1);
};

function constrainedMove(target:MovieClip, speed:Number, dir:Number) {
 
     bg_mc._y = Stage.height-_ymouse;
     bg_mc._x= Stage.width-_xmouse;
   
     var position;
     var mouseListener:Object = new Object();
     mouseListener.onMouseWheel = function(delta) {
        if((bg_mc._x<-1)and(delta<0))
        {
           var bewegung = new  mx.transitions.Tween(bg_mc, "_x",
           mx.transitions.easing.Regular.easeOut, bg_mc._x,bg_mc._x-delta*100,50, false);
        }
        else if((bg_mc._x>-1)and(delta<0)){
           bg_mc._x = bg_mc._x;
        }else if ((bg_mc._x>-990)and(delta>0)){
           bg_mc._x -= 0;
           position = delta;
        }else if((bg_mc._x<-990)and(delta>0)){
           bg_mc._x = bg_mc._x;
        }
     }
 
     Mouse.addListener(mouseListener);
};


Was soll eigentlich die Sache mit dem Mousewheel?
Soll der Hintergrund gleichzeitig per mausposition und Mousewheel bewegt werden können?

Explizit zu deinem Problem:
Das ist kein Flashproblem, sondern eine Logiksache.
Eigentlich brauchst du doch nur das:
ActionScript:
1
2
3
4
5
6
7
8
9
this.onMouseMove = function() {
      moveBg()
};

function moveBg() {
     mcBg._y = -(mcBg._height-Stage.height)*(_ymouse/Stage.height);
     mcBg._x= -(mcBg._width-Stage.width)*(_xmouse/Stage.width);
}

Zeitleisten-Programmierung ist böse! löst euch von der Zeitleiste -> benutzt Flashdevelop!
Antworten auf Flash AS3 Fragen.
Flash Programmierer


Angehängte Dateien:
Adobe Flash Quelldatei AS2_bgmousemove.fla7.63 KB
Adobe Flash Animationen AS2_bgmousemove.swf0.94 KB
anbine#5
Benutzerbild von anbine
Beiträge: 16
Registriert: Jan 2009

Themenautor/in

18.11.2011, 11:05

Hallo,

Also dein Script funktioniert prinzipiell aber es fährt auch über das Hintergrundbild hinaus, die Grenze soll mein Hintergrundbild sein für die Mausbewegung. sprich ich möchte mittels meiner Mausbewegung mein Hintergrundbild "abtasten". Für mein Kuddelmuddel entschuldige ich mich aber ich bin auch nicht sehr versiert in Actionscript und probiere eher rum. Ich müßte dem Script doch eigentlich irgendwie sagen können wo die Grenze deffiniert wird für meine Mausbewegung (Bildgrenze)?! Ich danke dir für deine Geduld und Hilfe.
Geändert von anbine am 18.11.11 um 11:36 Uhr
ashitaka#6
Benutzerbild von ashitaka
Beiträge: 161
Registriert: Apr 2010

18.11.2011, 11:09

In dem swf, das ich hochgeladen hab, passt es doch, oder nicht?

zeig doch mal dein swf, damit ich das Problem verstehe.
Zeitleisten-Programmierung ist böse! löst euch von der Zeitleiste -> benutzt Flashdevelop!
Antworten auf Flash AS3 Fragen.
Flash Programmierer
anbine#7
Benutzerbild von anbine
Beiträge: 16
Registriert: Jan 2009

Themenautor/in

18.11.2011, 12:03

Hallo
Ja nein bei deiner Datei geht es auch über das Bild hinaus. Hier der Link zu meiner Datei http://dl.dropbox.com/u/29613119/hintergrund-test.swf

Also das ist genau das Problem was ich habe das es immer über die Bildgrenze hinaus geht.

Merci vielmals!!
ashitaka#8
Benutzerbild von ashitaka
Beiträge: 161
Registriert: Apr 2010

18.11.2011, 15:23

bin mir immer noch nicht sicher ob ich dein problem richtig verstehe.
schaust du die swf´s im browser an?
vielleicht hilfts wenn du stageScaleMode auf NO_SCALE stellst.
Zeitleisten-Programmierung ist böse! löst euch von der Zeitleiste -> benutzt Flashdevelop!
Antworten auf Flash AS3 Fragen.
Flash Programmierer
anbine#9
Benutzerbild von anbine
Beiträge: 16
Registriert: Jan 2009

Themenautor/in

19.11.2011, 11:22

Hm konntest du dir meine Datei ansehen? Da sieht man ja das Hintergrundbild was sich wunderbar mit der Mausbewegung mitbewegt allerdings kann ich nicht das ganze Hintergrundbild anschauen (es ist eigentlich größer, als das was ich sehe, momentan) und meine Frage ist ob ich irgendwo die Bildgröße angeben muß damit das Script weiß in welchem Bereich meine Maus das Hintergrundbild anschauen kann.
ashitaka#10
Benutzerbild von ashitaka
Beiträge: 161
Registriert: Apr 2010

19.11.2011, 11:38

naja, bei dem bild war schwer zu erkennen, wo es anfängt und wo es aufhört.

hast du den scalemode eingestellt?

ansonsten kannst du im script statt mcBg._width die gewünschte Breite eingeben

und statt  mcBg._height  die Höhe
Zeitleisten-Programmierung ist böse! löst euch von der Zeitleiste -> benutzt Flashdevelop!
Antworten auf Flash AS3 Fragen.
Flash Programmierer
anbine#11
Benutzerbild von anbine
Beiträge: 16
Registriert: Jan 2009

Themenautor/in

19.11.2011, 11:57

das mit dem scalemode klappt irgendwie auch nicht, und muß ich da einfach statt dem width die zahl eingeben? das geht nämlich irgendwie nicht, sorry das ich mich so blöd anstelle, ich hab bestimmt nen mega denkfehler gerade aber irgendwie haut das nicht hin so wie ich mir das vorstelle. Weil ich entweder noch den Bereich um das Hintergrundbild sehe (indem Fall weißer Raum) oder nur ein Teil meines Bildes sehe.
ashitaka#12
Benutzerbild von ashitaka
Beiträge: 161
Registriert: Apr 2010

19.11.2011, 12:43

Wenn du den scaleMode nicht festsetzt und das ding rumskaliert, wird es nie passen:
ActionScript:
1Stage.scaleMode = "noScale";


ActionScript:
1
2
3
4
function moveBg() {
       mcBg._y = -(600-Stage.height)*(_ymouse/Stage.height);
       mcBg._x= -(800-Stage.width)*(_xmouse/Stage.width);
}


600 und 800 durch deine werte ersetzen
Zeitleisten-Programmierung ist böse! löst euch von der Zeitleiste -> benutzt Flashdevelop!
Antworten auf Flash AS3 Fragen.
Flash Programmierer
anbine#13
Benutzerbild von anbine
Beiträge: 16
Registriert: Jan 2009

Themenautor/in

19.11.2011, 16:52

hm irgendwie funktioniert das immer noch nicht, kann man evtl bei den Grundeinstellungen was falsch machen? Hier ist der Link für die aktualisierte Version http://dl.dropbox.com/u/29613119/hintergrund-test.swf

Ich Danke dir vielmals!!
ashitaka#14
Benutzerbild von ashitaka
Beiträge: 161
Registriert: Apr 2010

22.11.2011, 08:34

lad einfach mal die fla hoch
Zeitleisten-Programmierung ist böse! löst euch von der Zeitleiste -> benutzt Flashdevelop!
Antworten auf Flash AS3 Fragen.
Flash Programmierer
anbine#15
Benutzerbild von anbine
Beiträge: 16
Registriert: Jan 2009

Themenautor/in

22.11.2011, 11:04

http://dl.dropbox.com/u/29613119/Unbenannt-1.fla

merci vielmals!!
ashitaka#16
Benutzerbild von ashitaka
Beiträge: 161
Registriert: Apr 2010

22.11.2011, 12:23

Stag Align hat gefehlt.

Außerdem musst du das Bild in mc_bg auf x=0 und y=0 setzen

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Stage.scaleMode = "noScale";
Stage.align = "TL";

this.onMouseMove = function()
{
     
        moveBg()
};

function moveBg() {
     var percY = _root._ymouse/Stage.height;
       bg_mc._y = -(bg_mc._height-Stage.height)*percY;
      var percX = _root._xmouse/Stage.width;
      bg_mc._x= -(bg_mc._width-Stage.width)*percX;
        
}


Zeitleisten-Programmierung ist böse! löst euch von der Zeitleiste -> benutzt Flashdevelop!
Antworten auf Flash AS3 Fragen.
Flash Programmierer

AntwortenRegistrieren Seite1 2  

Schnellantwort

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

 
Ähnliche Beiträge zum Thema
Javascript new line [Flash CS5] 23.11.2020 - user01234
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2021 Sebastian Wichmann - Flashhilfe.de