Flashhilfe.de - Flash Community

Flash interaktiv Maus [Flash CS5]

 


AntwortenRegistrieren Seite1 2  

tor8#1
Benutzerbild von tor8
Beiträge: 30
Registriert: Dec 2008

19.08.2011, 20:08

Hallo,

ich habe einen animierten Film in CS5 als eingebettetes Video importiert.
In dem Film passiert nur folgendes ein Hebel geht langsam nach Links und dabei wird eine Lampe immer heller. Diese Animation hat nur 10 Bilder.
Nun möchte ich sie Interaktiv machen, wird mit der Maus auf den Hebel geklickt und nach Links verschoben so soll die Animation einfach nur Bild für Bild weitergehen. Wird die Maustaste losgelassen so soll an dem jeweiliegen Bild gestoppt werden. Natürlich soll die ganze Sache auch Rückwärts gehen.

Wäre schön wenn jemand helfen könnte.

Danke tor8
Schlagwörter: Film, interaktiv
Werbung
Beiträge: 0
Registriert: Feb 2016


vindel#2
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

20.08.2011, 10:47

Hallo,

dafür brauchst du nur einen Mouselistener und musst, sobal geklickt wurde, die Bühnenbreite mit der aktuellen Mausposition verrechnen:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import flash.events.Event;

this.addEventListener(MouseEvent.MOUSE_DOWN, mDown);
this.addEventListener(MouseEvent.MOUSE_UP, mUp);

function mDown(e:Event):void {
     this.addEventListener(Event.ENTER_FRAME, mEnterFrame);
}
function mEnterFrame(e:Event):void {
     this.gotoAndStop(Math.floor(10/this.width*this.mouseX));
}
function mUp(e:Event):void {
     this.removeEventListener(Event.ENTER_FRAME, mEnterFrame);
}

Wenn du das in den MC mit deinem Film legst, sollte es klappen!
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
tor8#3
Benutzerbild von tor8
Beiträge: 30
Registriert: Dec 2008

Themenautor/in

20.08.2011, 13:25

Hallo Vindel,

besten Dank.
Das ist schon fast perfekt.
bis auf 2 Sachen
- Wenn der Film startet dann sollte er bei Bild 1 stehen bleiben, im Moment läuft er endlos ab
- Die Bühne ist 800x600 groß das Klicken und verschieben sollte in den Koordinaten P1: X695/Y138, P2:Y695/186 P3: X780/Y138 und P4: X780/X186 stattfinden.

Vor allen Dingen das mit den Koordinaten bekommt das hin, das wäre Super.

Danke Dir

Beste Grüße tor8
Geändert von tor8 am 20.08.11 um 13:26 Uhr
vindel#4
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

20.08.2011, 14:03

also schreib in das erste Bild "stop();", dann blaibt der da stehen.
Du kannst natürlich für den zweiten Punkt per if-abfragen schauen, ob du richtig liegst, oder aber du erstellst dir einen MC mit einem transparenten Rechteck mit deinen Maßen.
Diesen legst du dann über deinen Film und gibst ihm einen Instanzennamen (zb btn).
Jetzt gehst du in den Code und ersetzt alle "this" mit "btn", bis auf das "this" vor mouseX.
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
Werbung
Beiträge: 0
Registriert: Feb 2016


tor8#5
Benutzerbild von tor8
Beiträge: 30
Registriert: Dec 2008

Themenautor/in

20.08.2011, 14:28

Hallo,

danke.
das mit dem Stoppen habe ich fertig.
Ein transparentes Rechteck erstellt und das dann umgewandelt in ein Symbol als MC und den Namen btn vergeben.
den Code habe ich so verändert

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import flash.events.Event;

btn.addEventListener(MouseEvent.MOUSE_DOWN, mDown);
btn.addEventListener(MouseEvent.MOUSE_UP, mUp);

function mDown(e:Event):void {
       btn.addEventListener(Event.ENTER_FRAME, mEnterFrame);
}
function mEnterFrame(e:Event):void {
       btn.gotoAndStop(Math.floor(10/btn.width*this.mouseX));
}
function mUp(e:Event):void {
       btn.removeEventListener(Event.ENTER_FRAME, mEnterFrame);
}


das funktioniert nicht, da mache ich doch was falsch.

Gruß tor8
vindel#6
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

20.08.2011, 14:42

Hast du dem MC auch den Instanznamen "btn" gegeben (unter "Eigenschaften").
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
tor8#7
Benutzerbild von tor8
Beiträge: 30
Registriert: Dec 2008

Themenautor/in

20.08.2011, 15:18

Hallo,

ja habe ich, ich beschreib mal kurz die Szene, ich denke ich habe die Szene falsch aufgebaut.

Ich habe Szene 1 mit einer Ebene und einem Schlüsselbild, mit Doppelklick Öffne ich die Szene, hier habe ich 3 Ebenen die unterste enthält die Animation und darauf liegt im Bild1 das AS, die zweite Ebene hat in Bild 1 ein Stop();
in der dritten Ebene ist die oberste liegt das transparente Rechteck als MC mit Namen btn und ist die Instanz von Symbol 4.
Die 3 Ebenen sind 10 Bilder lang.

danke tor8
vindel#8
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

20.08.2011, 16:03

Ahh, das problem liegt an der "gotoAndStop"-Funktion. Die wird auf dein Button verwiesen. also einfach statt "btn" ein "this" davor schreiben:
ActionScript:
1
2
3
function mEnterFrame(e:Event):void {
     this.gotoAndStop(Math.floor(10/btn.width*this.mouseX));
}
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
tor8#9
Benutzerbild von tor8
Beiträge: 30
Registriert: Dec 2008

Themenautor/in

20.08.2011, 16:56

Hallo,


okay jetzt tut sich was,
klicke ich auf das transparente Rechteck, so springt der Film zum Ende. Auf dem transparenten Rechteck passiert dann nichts mehr ich kann drauf Klicken und Ziehen, es geht nichts, gehe ich aber in den linken Bereich des Bildes und ziehe da so bewegt sich der Hebel.


Gruß tor
vindel#10
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

20.08.2011, 19:20

Hier mal ein Beispiel wie es funktioniert.
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}

Angehängte Dateien:
Adobe Flash Quelldatei Drag-Drop.fla8.67 KB
tor8#11
Benutzerbild von tor8
Beiträge: 30
Registriert: Dec 2008

Themenautor/in

21.08.2011, 19:42

Hallo,

danke für die Bereitstellung der Szene,
bei deiner Szene ist das ähnlich, Klick ich auf das rote Rechteck, so wird der Hintergrund sofort Rot, mit gedrückter Maustaste Ziehen auf dem roten Rechteck, wird richtigerweise die Farbe geändert. Geh aber mal mit gedrückter Maustaste über die Fläche hinaus ins Weiße und Lass dann los, wenn ich jetzt mit der Maus über die Fläche gehe wechselt der Hintergrund trotzdem die Farbe.
Es sollte aber nur die Farbe wechseln mit gedrückter und gleichzeitigem Ziehen.

Hoffentlich verstehst du den Kauderwelsch, ich würde dir die Szene auch schicken.

Gruß tor8
vindel#12
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

21.08.2011, 20:16

Das liegt daran, das der MOUSE_UP-Event nur über der Fläche "abgefeuert" wird. Wenn die Maus nicht über der Fläche (also dem Button) ist, kann ja auch nichts abgefeuert werden.
Einfach das Mouse_up-event auf die gesamte Größe anwenden. Statt btn(bzw this) stage einsetzen.
ActionScript:
1stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
tor8#13
Benutzerbild von tor8
Beiträge: 30
Registriert: Dec 2008

Themenautor/in

21.08.2011, 22:48

Danke,

meintest du das so?

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
stop();
import flash.events.Event;

btn.addEventListener(MouseEvent.MOUSE_DOWN, mDown);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);


function mDown(e:Event):void {
     btn.addEventListener(Event.ENTER_FRAME, mEnterFrame);
}

function mEnterFrame(e:Event):void {
     this.gotoAndStop(Math.floor(10/btn.width*this.mouseX));
}
function mouseUp(e:Event):void {
     stage.removeEventListener(Event.ENTER_FRAME, mEnterFrame);
}
vindel#14
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

22.08.2011, 10:45

Fast.. Nur oben Stage. In der Funktion "mUp" muss btn bleiben, da das Enter-Frame-Event ja nicht auf der Ebene Stage, sondern auf der Ebene btn erstellt wurde.
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
stop();
import flash.events.Event;

btn.addEventListener(MouseEvent.MOUSE_DOWN, mDown);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);


function mDown(e:Event):void {
       btn.addEventListener(Event.ENTER_FRAME, mEnterFrame);
}

function mEnterFrame(e:Event):void {
       this.gotoAndStop(Math.floor(10/btn.width*this.mouseX));
}
function mouseUp(e:Event):void {
       btn.removeEventListener(Event.ENTER_FRAME, mEnterFrame);
}
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
tor8#15
Benutzerbild von tor8
Beiträge: 30
Registriert: Dec 2008

Themenautor/in

22.08.2011, 18:40

Okay,

so paßt das, das einzige was mich stört, ist, das wenn ich mit der Maus auf den Button klicke und Ziehe weit über den Button hinausziehen muss, damit der Film komplett abgespielt wird. Kann man das nicht doch so hinkriegen, das man nur eine Interaktion erreicht wenn man auf den Button mit gedrückter Maustaste zieht.

Danke tor8
vindel#16
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

22.08.2011, 21:31

Dafür musst du die mosueX auch auf den Button setzen:
ActionScript:
1this.gotoAndStop(Math.floor(10/btn.width*btn.mouseX));
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}

AntwortenRegistrieren Seite1 2  

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   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2019 Sebastian Wichmann - Flashhilfe.de