Flashhilfe.de - Flash Community

mehrere MCs gleichzeitig ansprechen [Flash 9]

 


AntwortenRegistrieren Seite1  

thetoasta#1
Benutzerbild von thetoasta
Beiträge: 28
Registriert: Oct 2008

24.10.2008, 21:24

Hi Leute,

ich habe ein kleines aber sicherlich lösbares Problem.
Ich habe ein MC und darin 8 Buttons... Die Buttons haben einen StdAlpha wert von 0.3 und bei roll over soll die jeweilige alpha eigenschaft auf 1 gesetzt werden.

hierzu möchte ich für alle btn im MovieClip jeweils 2 EventListener zuweisen (ROLL_OVER,ROLL_OUT)... Das einzeln zuzuweisen ist ja kein problem, aber etwas aufwendig bzw nicht elegant...
gibts da ne art möglichkeit das mit einer for each schleife zu realisieren?

in etwa so:

for each button in movieclip
  addeventlistener....

danke!!
Geändert von thetoasta am 24.10.08 um 21:59 Uhr
mathis#2
Benutzerbild von mathis
Beiträge: 1443
Wohnort: bei Kiel
Registriert: Aug 2005

24.10.2008, 22:50

Mit numChildren und getChildAt kannst du dich durch die Buttons schleifen.
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import flash.display.DisplayObject;
import flash.events.MouseEvent;

var numButtons:int = mc.numChildren;
for (var i:int = 0; i < numButtons; i++) {
   var button:DisplayObject = mc.getChildAt(i);
   button.addEventListener(MouseEvent.ROLL_OVER, buttonRollOver);
   button.addEventListener(MouseEvent.ROLL_OUT, buttonRollOut);
}

function buttonRollOver(event:MouseEvent):void {
   var button:DisplayObject = event.currentTarget as DisplayObject;
   trace("over");
}
function buttonRollOut(event:MouseEvent):void {
   var button:DisplayObject = event.currentTarget as DisplayObject;
   trace("out");
}

mathis
XION#3
Benutzerbild von XION
Beiträge: 61
Wohnort: Berlin
Registriert: Sep 2003

25.10.2008, 00:23

wenn jeder button das gleiche verhalten zeigen soll, wäre es auch sinnvoll dieses verhalten von der button klasse selbst erledigen zu lassen, also das eventhandling und auch die animation (alphawert ändern) innerhalb der button klasse abzuarbeiten.

dann kann jeder button SEINE aufgaben SELBST erledigen und die hauptroutine muss das nicht noch mitverwalten.


--------nicht ganz off-topic:
im nachhinein muss ich hier noch mal omega psi recht geben, auch den klick-event nach innen zu verlegen (siehe Re 23)
XION
thetoasta#4
Benutzerbild von thetoasta
Beiträge: 28
Registriert: Oct 2008

Themenautor/in

25.10.2008, 01:16

ok, das klingt vernünftig, wie setze ich das um?
omega psi#5
Benutzerbild von omega psi
Beiträge: 791
Registriert: Apr 2004

25.10.2008, 12:20

ich würde aber, anstatt mit numChildren und getChildAt zu arbeiten, die Buttons in ein Array stecken. Denn sobald numChildren größer ist, als die Anzahl der Buttons... kommst du um das Array nicht herum.

Der Klassen-Ansatz ist allerdings der bessere.
Architectures - Refactoring - Prototyping - Coding - Training
Geändert von omega psi am 25.10.08 um 12:21 Uhr
XION#6
Benutzerbild von XION
Beiträge: 61
Wohnort: Berlin
Registriert: Sep 2003

25.10.2008, 12:43

zu Re2:
kommt ganz auf dein konzept an.

wenn du einfach nur gezeichnete buttons in einer fla hast und diese nicht über eine externe klasse definieren möchtest, ist die lösung von mathis prima. sie macht auch nichts anderes als den buttons die eventListener zuzuweisen. behandelt die aktionen dann aber auf der hauptroutine.

falls du mit EINER externen klasse für die buttons oder ganz ohne die flash umgebung arbeitest und eine klasse BUTTON oder so erstellst dann gäbe es hier ein rezept. siehe Re20
damit wäre fast alles nach innen verlegt.
XION
Geändert von XION am 25.10.08 um 12:45 Uhr

AntwortenRegistrieren Seite1  

Schnellantwort

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

 
Ähnliche Beiträge zum Thema
Online-Spiel Crossover [Flash 11] 05.06.2019 - Indy_Crossover
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2021 Sebastian Wichmann - Flashhilfe.de