Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-05-2009, 13:34   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2007
Beiträge: 145
welches child wurde geklickt???

Hallo,
ich versuche mich gerade frisch an AS3.
Habe nen kleines Menü gebaut und möchte je nach dem welcher Button geklickt wurde verschiedene Animationen für ALLE ablaufen lassen.
Also wenn ich auf einen der oberen Buttons klicke soll sich das Menü nach unten verschieben, sodass der angeklickte Button nun in der Mitte der Stage ist. Simultan natürlich mit den unteren Buttons.
Ich weiß, dass ich mit e.target den angeklickten Button ansprechen kann. Ich wüsste jedoch gerne welches Element des Arrays das ist, damit ich weiß um wieviel Pixel ich das komplette Menü verschieben muss.
Also welchen Index des Arrays hat e.target?

Wär super wenn mir jemand helfen kann

PHP-Code:
const NUMBER:uint 5;

var 
menuItems:Array = new Array();

for(var 
i:uint 0NUMBERi++){
    
    var 
menuItem:MenuItem = new MenuItem();
    
menuItem.50;
    
menuItem.100 35*i;
    
    
menuItems.push(menuItem);

    
addChild(menuItem);
    
    
menuItem.addEventListener(MouseEvent.CLICKitemClicked);
}

function 
itemClicked(e:Event):void{
    
e.target.x=70;
    
trace("welcher wurde geklickt???");

able ist offline   Mit Zitat antworten
Alt 05-05-2009, 13:38   #2 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
PHP-Code:
getChildIndex(e.currentTarget
du solltest event.currentTarget verwenden, sonnst kann es passieren -> sollte der button selbst wiederum ein child besitzen (z.b. textfield) das du dieses als referenz bekommst.
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)

Geändert von Scrawer (05-05-2009 um 13:39 Uhr)
Scrawer ist offline   Mit Zitat antworten
Alt 05-05-2009, 13:44   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2007
Beiträge: 145
ja danke sone funktion hab ich gesucht

gibt nur ein problem:

bei
PHP-Code:
trace(getChildIndex(e.currentTarget)); 
in der itemClicked funktion kriege ich folgende Fehlermeldung:
"1118: Implizite Umwandlung von einem Wert mit statischem Typ Object in einen möglicherweise nicht verwandten Typ flash.displayisplayObject."
able ist offline   Mit Zitat antworten
Alt 05-05-2009, 14:01   #4 (permalink)
flashfan
 
Registriert seit: May 2006
Beiträge: 253
Hi,

PHP-Code:
trace(getChildIndex(MovieClip(e.currentTarget))); 
Grüße,
Kerstin
weis-nix ist offline   Mit Zitat antworten
Alt 05-05-2009, 14:05   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2007
Beiträge: 145
achsoooo thx!!!
hatte es mit der instanz probiert abernicht mit dem mc
also danke nochma
able ist offline   Mit Zitat antworten
Alt 05-05-2009, 15:07   #6 (permalink)
Neuer User
 
Registriert seit: Mar 2007
Beiträge: 145
passt zwar jetzt nicht mehr zum thema aber so ist vielleicht einer von euch noch im script drin und kann sofort aushelfen

hier nochmal ein update meines scripts:
PHP-Code:
import caurina.transitions.Tweener;

var 
center:int 2;
var 
geklickter:int 2;
var 
diff:int 0;

const 
NUMBER:uint 5;

var 
menuItems:Array = new Array();

for(var 
i:uint 0NUMBERi++){
    
    var 
menuItem:MenuItem = new MenuItem();
    
menuItem.50;
    
menuItem.100 35*i;
    
menuItem.menuItemText.text "Menu Item " + (i+1);
    
    
menuItem.alpha 0.3;
    
menuItem.mouseChildren false;
    
    
menuItems.push(menuItem);

    
addChild(menuItem);
    
    
menuItem.addEventListener(MouseEvent.CLICKitemClicked);
    
menuItem.addEventListener(MouseEvent.MOUSE_OVERmouseOverItem);
    
menuItem.addEventListener(MouseEvent.MOUSE_OUTmouseOutItem);    
}

function 
mouseOutItem(e:Event):void{
    
e.target.alpha 0.3
}

function 
mouseOverItem(e:Event):void{
    
e.target.alpha 1;
    
}

function 
itemClicked(e:Event):void{
    
    
geklickter getChildIndex(MenuItem(e.currentTarget));
    
diff center-geklickter;
    
    for(var 
i:uint 0i<NUMBERi++){
        
Tweener.addTween(menuItems[i], {y:menuItems[i].y+diff*35time:Math.abs(1*diff)});
    }

    
center geklickter;

wie kann ich es machen, dass er die itemClicked funktion erst wieder frei gibt wenn der tween der in ihr aufgerufen wird abgeschlossen ist?

denn wenn man ganz oft und schnell hintereinander klickt verschiebt sich das ganze menü um viel zu viele pixel
able ist offline   Mit Zitat antworten
Alt 06-05-2009, 12:16   #7 (permalink)
unknown target
 
Benutzerbild von schokominza
 
Registriert seit: Feb 2003
Ort: Hamburg
Beiträge: 85
PHP-Code:
Tweener.addTween(menuItems[i], {y:menuItems[i].y+diff*35time:Math.abs(1*diff), onComplete:doOnComplete}); 

function 
doOnComplete() {
  
//mach was

Oder so ähnlich. Kommt aus AS2, weiß nicht, ob man das direkt so übertragen kann.
Wenn du Parameter übergeben willst:
PHP-Code:
...diff*35time:Math.abs(1*diff), onComplete:doOnCompleteonCompleteParams:[para1para2]}); 
Ansonsten hilft die
Tweener-Doku.
schokominza ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 19:44 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele