Animation abspielen wenn Maus bestimmten Bereich berüht [Flash 11]
| Beiträge: 20 Registriert: Dec 2011
| 04.02.2012, 12:02
Huhu, ich bastle grade ein Menü mit 4 Bereichen. Die Menüpunkte (Movieclips) kommen zur Laufzeit mit addChild auf die Bühne und beinhalten in ihrer eigenen Zeitleiste eine Animation. Ich möchte nun aber nicht dass alle ihre Animation abspielen, sondern nur das woraus der Mauszeiger gerade zeigt (Bühne teile ich in 4 Bereiche auf). Wie mach ich das, dass er das erst abspielt, wenn ich mit der Maus drauf gehen und die anderen nichts tun?
Überfragte Grüße | | | Beiträge: 20 Registriert: Dec 2011
Themenautor/in
| 04.02.2012, 14:02
Ich hab jetzt mal ein bissel gebastelt und möchte den statischen MC bei Mause OVER durch einen mit Animation ersetzen. Das klappt auch, er nimmt aber den animierten nicht wieder weg, also die Mouse OUT funktion geht nicht, weil er die Childs die ich entfernen möchte nicht erkennt. Liegt dass daran dass AS3 da innerhalb der Funktion nicht drauf zugreifen kann?
Hier mein Code:
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | // Menüpunkte statisch auf die Bühne bringen
var typoanimation_instanz_sta:typoanimation_sta = new typoanimation_sta();
this.addChild(typoanimation_instanz_sta);
typoanimation_instanz_sta.x = 30;
typoanimation_instanz_sta.y = 90;
var bewegungsquiz_instanz_sta:bewegungsquiz_sta = new bewegungsquiz_sta();
this.addChild(bewegungsquiz_instanz_sta);
bewegungsquiz_instanz_sta.x = 400;
bewegungsquiz_instanz_sta.y = 90;
var gestaltgesetze_instanz_sta:gestaltgesetze_sta = new gestaltgesetze_sta();
this.addChild(gestaltgesetze_instanz_sta);
gestaltgesetze_instanz_sta.x = 20;
gestaltgesetze_instanz_sta.y = 400;
var freieaufgabe_instanz_sta:freieaufgabe_sta = new freieaufgabe_sta();
this.addChild(freieaufgabe_instanz_sta);
freieaufgabe_instanz_sta.x = 500;
freieaufgabe_instanz_sta.y = 400;
// bewegte Menüpunkte
//bereich typoanimation
stage.addEventListener(MouseEvent.MOUSE_OVER, wackeln)
function wackeln (event:MouseEvent):void
{
if (mouseY < 320 && mouseX < 400)
{
trace ("Bereich Typoanimation");
var typoanimation_instanz_ani:typoanimation = new typoanimation();
this.addChild(typoanimation_instanz_ani);
typoanimation_instanz_ani.x = 30;
typoanimation_instanz_ani.y = 90;
removeChild(typoanimation_instanz_sta);
}
//bereich gestaltgesetze
else if (mouseY > 320 && mouseX < 400)
{
trace ("Bereich Gestaltgesetze");
var gestaltgesetze_instanz_ani:gestaltgesetze = new gestaltgesetze();
this.addChild(gestaltgesetze_instanz_ani);
gestaltgesetze_instanz_ani.x = 20;
gestaltgesetze_instanz_ani.y = 400;
removeChild(gestaltgesetze_instanz_sta);
}
//bereich bewegungsquiz
else if (mouseY < 320 && mouseX > 400)
{
trace ("Bereich Bewegungsquiz");
var bewegungsquiz_instanz_ani:bewegungsquiz = new bewegungsquiz();
this.addChild(bewegungsquiz_instanz_ani);
bewegungsquiz_instanz_ani.x = 400;
bewegungsquiz_instanz_ani.y = 90;
removeChild(bewegungsquiz_instanz_sta);
}
//bereich freieaufgabe
else (mouseY > 320 && mouseX < 400)
{
trace ("Bereich Freiaufgabe");
var freieaufgabe_instanz_ani:freieaufgabe = new freieaufgabe();
this.addChild(freieaufgabe_instanz_ani);
freieaufgabe_instanz_ani.x = 500;
freieaufgabe_instanz_ani.y = 400;
removeChild(freieaufgabe_instanz_sta);
}
}
///////////// wackelnde wieder statisch machen
stage.addEventListener(MouseEvent.MOUSE_OUT, stehen)
function stehen(event:MouseEvent):void
{
if (mouseY < 320 && mouseX < 400)
{
removeChild(typoanimation_instanz_ani);
trace ("Bereich Typoanimation");
var typoanimation_instanz_sta:typoanimation = new typoanimation();
this.addChild(typoanimation_instanz_sta);
typoanimation_instanz_sta.x = 30;
typoanimation_instanz_sta.y = 90;
}
//bereich gestaltgesetze
else if (mouseY > 320 && mouseX < 400)
{
removeChild(gestaltgesetze_instanz_ani);
trace ("Bereich Gestaltgesetze");
var gestaltgesetze_instanz_sta:gestaltgesetze = new gestaltgesetze();
this.addChild(gestaltgesetze_instanz_sta);
gestaltgesetze_instanz_sta.x = 20;
gestaltgesetze_instanz_sta.y = 400;
}
//bereich bewegungsquiz
else if (mouseY < 320 && mouseX < 400)
{
removeChild(bewegungsquiz_instanz_ani);
trace ("Bereich Bewegungsquiz");
var bewegungsquiz_instanz_sta:bewegungsquiz = new bewegungsquiz();
this.addChild(bewegungsquiz_instanz_sta);
bewegungsquiz_instanz_sta.x = 400;
bewegungsquiz_instanz_sta.y = 90;
}
//bereich freieaufgabe
else (mouseY > 320 && mouseX < 400)
{
removeChild(freieaufgabe_instanz_ani);
trace ("Bereich Freiaufgabe");
var freieaufgabe_instanz_sta:freieaufgabe = new freieaufgabe();
this.addChild(freieaufgabe_instanz_sta);
freieaufgabe_instanz_sta.x = 500;
freieaufgabe_instanz_sta.y = 400;
}
}
|
| | | Beiträge: 186 Registriert: Jun 2009
| 05.02.2012, 14:46
hi,
ich glaube, dass du es im ansatz schon komplizierter machst als nötig.
in deinem ersten post schreibst du, dass du buttons hast mit eingebauter animation.
also könntest du sie doch im 1.frame stoppen, bei mouseOver starten und bei mouseOut wieder in den 1. frame schicken und stoppen.
dazu solltest du deine eventListener nicht an die stage hängen, sondern direkt an die buttons.
ActionScript:1 2 3 4 5 6 7 | var typoanimation_instanz_sta:typoanimation_sta = new typoanimation_sta();
this.addChild(typoanimation_instanz_sta);
typoanimation_instanz_sta.x = 30;
typoanimation_instanz_sta.y = 90;
typoanimation_instanz_sta.stop();
typoanimation_instanz_sta.addEventListener(MouseEvent.MOUSE_OVER, wackeln);
typoanimation_instanz_sta..addEventListener(MouseEvent.MOUSE_OUT, stehen);
|
ActionScript:1 2 3 4 5 6 7 8 | function wackeln (event:MouseEvent):void
{
event.currentTarget.gotoAndPlay(2);
}
function stehen(event:MouseEvent):void
{
event.currentTarget.gotoAndStop(1);
}
|
| Geändert von micB am 05.02.12 um 14:58 Uhr | |
| | Beiträge: 20 Registriert: Dec 2011
Themenautor/in
| 05.02.2012, 16:49
Aber wenn ich dann im 2. Frame bin wackeln doch alle, oder? Ich habe ja 4 Punkte, die wackeln können. Versteh ich irgendwie nicht :[ | | | Beiträge: 186 Registriert: Jun 2009
| 05.02.2012, 20:54
mit "event.currentTarget.gotoAndPlay(2)" sprichst du die zeitleiste des clips an, der den event ausgelöst hat.
"event.currentTarget" kann z.b. "typoanimation_instanz_sta" sein, wo entweder ein mouseOver oder ein mouseOut ausgelöst wurde.
und mit dem 2.frame von "typoanimation_instanz_sta" (dem currentTarget) haben die anderen buttons nix zu tun. | | | Beiträge: 20 Registriert: Dec 2011
Themenautor/in
| 05.02.2012, 21:12
Aaaah vielen Dank! Ich arbeite das morgen mal ein. Hoffe es klappt dann :-)) | |
| Ähnliche Beiträge zum Thema | 13.09.2022 - Rennier 28.07.2022 - TateBauch |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News
Regeln & Bedingungen
|