Flashhilfe.de - Flash Community

Mousefollow mit Ausrichtung im Menü [Flash 10]

Forum > ActionScript 3.0 > Mousefollow mit Ausrichtung im Menü

 


AntwortenRegistrieren Seite1  

 14.08.2009, 09:09 
Beiträge: 20
Registriert: Dec 2006

Mousefollow mit Ausrichtung im Menü
Hi zusammen,
Hoffe ihr könnt mir Helfen. und zwar folgendes Problem:

Ich habe eine Menüleiste mit 4-5 Schaltflächen. Oberhalb soll nun ein Pfeil/Kreis oder sonst was sein, der der Maus folgt und sich über den jeweiligen Button "mittig" ausrichtet. Allerdings muss ebenfalls auch ein Bereich gekennzeichent werden damit sichergestellt ist, das der pfeil sich auch nur mitbewegt wenn man über einen der Schaltflächen fährt.

Beispielskizze:
                      o
[Button 1] [Button 2] [Button 3]

Erläuterung:
Der Benutzer befindet sich grade auf Button 2 und der Pfeil/Kreis/oder was auch immer, ist nun nach rechts geslidet und hat sich auf Button 2 "mittig" ausgerichtet. So soll er halt immer hinterhersliden und sich auf den Buttons dann ausrichten wo man stehen bleibt.

hoffe das war Verständlich erklärt und freue mich auf Antwort.

lg, Cape
Geändert von capecok am 14.08.09 um 09:10 Uhr

 14.08.2009, 10:03Re1
Benutzerbild von 2kOne
Beiträge: 46
Registriert: Apr 2008

Hi Capecok

hab dir da mal ebend schnell was gemacht ist im Anhang die Zip mit der FLA & Swf.
Schau dir einfach mal das Prinzip an wirst es denke ich mal verstehen.

Ich habe für die Bewegung die Tweener Klasse verwendet. Such einfach mal bei Google "caurina tweener as3" und du kannst sie runter laden.
Vergiss nur nicht den Klassenordner wo die Klasse drinn ist in den Flash Voreinstellungen einzufügen.

Grüße
2K

Angehängte Dateien:
Komprimierte Datei menu.zip16.96 KB
 14.08.2009, 10:19Re2
Beiträge: 20
Registriert: Dec 2006

Themenautor/in

Super :D

Ich danke dir viel viel mals. Funktioniert einwandfrei und ist genau das was ich gesucht habe.

Nochmals lieben Dank für deine Mühe !

Gruß, Cape
 
nicht sichtbar bei eingeloggten Mitgliedern
 14.08.2009, 10:36Re3
Benutzerbild von 2kOne
Beiträge: 46
Registriert: Apr 2008

kein Ding hoffe hast das Prinzip verstanden ;-)

hau rein
2K
 14.08.2009, 10:40Re4
Beiträge: 20
Registriert: Dec 2006

Themenautor/in

jupp das habe. ausgerichtet habe ich auch alles via X Y Positionen... den rest fummel ich mir zusammen :D

Tolle Sache..

Danke und auf bald
 14.08.2009, 10:57Re5
Beiträge: 20
Registriert: Dec 2006

Themenautor/in

Also eine Frage muss ich noch hinterher schieben :D

Gibts eine Möglichkeit die Buttons:

1. In der Größe zu bestimmen ? Weil machne menüpunkte sind halt kleiner du da ist es Sinnlos alle Buttons auf der gleichen Größe zu haben.

2. Jeden Button einzeln zu sagen "WO" er beim klicken hinspringen soll im Film ?

... hoffe das es jetzt nicht zuviel zusätzlicher Aufwand ist, aber dann habe ich alles gelöst. Wäre sehr nett..

gruß, Cape
 
nicht sichtbar bei eingeloggten Mitgliedern1&1 Webhosting
 19.08.2009, 11:32Re6
Beiträge: 20
Registriert: Dec 2006

Themenautor/in

Hi zusammen, leider wurde meine Frage mir nicht beantwortet und hoffe das durch das mitgelieferte Script womit mir 2K schon sehr geholfen hat ein bisschen licht ins dunkle kommt.

Habe Also in der Biblio eine Mc der sich "button" und einer der sich "zeiger nennt".
Das Script GANZ unten sorgte ja unter anderem dafür das 6 Buttons aus meinen MC erstellt werden mit Größen & Positionsangaben etc...

Funktioniert alles auch super.. der Pfeil läuft hinterher, die 6 buttons sind da wo sie sein sollen usw, Problem ist nur:

Ich weiss nicht wich ich jetzt jeden der 6 Buttons DIREKT ansprechen kann damit ich ihnen mitteile wo sie beim klicken hinspringen sollen. Diese 6 Buttons bilden halt meine Navileiste und irgendwie muss ich sie ja verlinken so zusagen.

Mir würde helfen wenn ich jeden button ein namen zuweisen kann damit ich ihn mit diesem Script anspreche udn er weiss wo er hin muss:
PHP:
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
<?
stop
();

var 
sprung:uint;

meinBTN1.addEventListener(MouseEvent.CLICKfunktion1);
meinBTN2.addEventListener(MouseEvent.CLICKfunktion2);
meinBTN3.addEventListener(MouseEvent.CLICKfunktion3);
meinBTN4.addEventListener(MouseEvent.CLICKfunktion4);
meinBTN5.addEventListener(MouseEvent.CLICKfunktion5);
meinBTN6.addEventListener(MouseEvent.CLICKfunktion6);

function 
funktion1(evt:MouseEvent):void {
   
gotoAndPlay(5);
   
sprung 30;
}

function 
funktion2(evt:MouseEvent):void {
   
gotoAndPlay(5);
   
sprung 31;


function 
funktion3(evt:MouseEvent):void {
   
gotoAndPlay(40);


etc etc ..
?>



Das hier ist das Script wir mir dann die Buttons, Animation usw. erzeugt:


PHP:
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
<?

import caurina
.transitions.Tweener;

var 
pfeil:zeiger = new zeiger();
   
pfeil.75+(0*91);
   
pfeil.322;
   
addChild(pfeil);

for (var 
i:uint 0i<=6-1i++){
    var 
buttons:knopf = new knopf();
       
buttons.name "button"+String(i);
       
buttons.buttonMode true;
       
buttons.useHandCursor true;
       
buttons.35 +i*91;
       
buttons.321;
       
addChild(buttons);
       
       
buttons.addEventListener(MouseEvent.ROLL_OVERrollOverHandler);
}

function 
rollOverHandler(e:MouseEvent):void
{
   
Tweener.addTween(pfeil,{x:e.target.+ (e.target.width/2), time:2});
   
trace(e.target.name);
}
?>
Geändert von capecok am 19.08.09 um 11:35 Uhr

 19.08.2009, 11:48Re7
Benutzerbild von 2kOne
Beiträge: 46
Registriert: Apr 2008

Hi oh das hab ich dann wohl übersehen sorry :-)

Da ich jetzt auch noch nicht der Superprogger mit AS3 bin würde ich es vielleicht mal so probieren. Ist halt jetzt nur mein Denkansatz und NICHT getestet.

ich denke das könnte man so lösen und sollte (ich hoffe es) klappen.
Es gibt sicherlich auch andere Ansätze die besser sind als meiner aber wie gesagt ich lerne selber noch und wäre sehr dankbar für einen besseren Ansatz. Oder wird das intern immer so verlinkt??

naja genug gequatscht hier mein schnell getippter Script

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
import caurina.transitions.Tweener;

var pfeil:zeiger = new zeiger();
    pfeil.x = 75+(0*91);
    pfeil.y = 322;
    addChild(pfeil);

for (var i:uint = 0; i<=6-1; i++){
    var buttons:knopf = new knopf();
        buttons.name = "button"+String(i); //Hier bekommen die Buttons einen Namen.
        buttons.buttonMode = true;
        buttons.useHandCursor = true;
        buttons.x = 35 +i*91;
        buttons.y = 321;
        addChild(buttons);
       
        buttons.addEventListener(MouseEvent.ROLL_OVER, rollOverHandler);
        buttons.addEventListener(MouseEvent.CLICK, clickHandler);
}

function rollOverHandler(e:MouseEvent):void
{
    Tweener.addTween(pfeil,{x:e.target.x + (e.target.width/2), time:2});
    trace(e.target.name);
}

function clickHandler(e:MouseEvent):void
{
    if (e.target.name == "button0")
    {
      //Mach das was Button1 machen soll
    } else if (e.target.name == "button1")
    {
      //Mach das was Button2 machen soll
    } else if (e.target.name == "button2")
    {
      //Mach das was Button3 machen soll
    } else if (e.target.name == "button3")
    {
      //Mach das was Button4 machen soll
    } else if (e.target.name == "button4")
    {
      //Mach das was Button5 machen soll
    }
}


EDIT:Die letzte else if Anweisung für button6 musst du noch einfügen...hab die jetzt vergessen. Aber das Prinzip funktioniert.

viel Spaß damit wenn es klappt ;-)
2K
Geändert von 2kOne am 19.08.09 um 11:55 Uhr

 19.08.2009, 12:51Re8
Beiträge: 20
Registriert: Dec 2006

Themenautor/in

Danke dir 2K :D

Aber da ich noch ein größerer Anfänger bin wie du entschuldige meien Frage aber da wo ich die Button Benennen soll, da fehlt mir ein beispiel. sonst weiss ich rein garnicht wie ich die namen setzen soll. Den Rest habe ich 1a verstanden.


Da haperts:

ActionScript:
1buttons.name = "button"+String(i); //Hier bekommen die Buttons einen Namen.
Geändert von capecok am 19.08.09 um 12:57 Uhr

 19.08.2009, 13:11Re9
Benutzerbild von 2kOne
Beiträge: 46
Registriert: Apr 2008

naja also gucken wir uns diese zeile mal genauer an:
ActionScript:
1buttons.name = "button"+String(i); //Hier bekommen die Buttons einen Namen.


mit buttons sprichst du ja jeden generierten Button der FOR-Schleife an. Also Sage ich ihm jetzt er soll jedem Button einen ".name" geben und sage das jeder Button "= "button"+String(i)" heißen soll also quasi ->> button0, button1 usw.

das String(i) steht nur da da ich einem String "button" <- in dem Fall keine "var i:UINT" KEINE UINT bzw Number zuweisen kann sondern diese Number in einem String übergeben und addieren(hinzufügen) muss.

das wars schon hoffe hast verstanden was ich meine

grüße
2K
 19.08.2009, 13:23Re10
Beiträge: 20
Registriert: Dec 2006

Themenautor/in

Also wenn ich das rcihtig verstanden habe bleibt da einfach alles so wie es war/ist und das die buttons dann button0, button1 etc heissen wird also aus der logik herraus selbst festgelegt ?

Das heisst z.b der button für Startseite sozusagen mein erster heisste dann automatisch "button0" ?

Habe ich das richtig verstanden oder habe ich mich nun total verrannt und brauch noch ne kanne kaffee xD ?
Geändert von capecok am 19.08.09 um 13:27 Uhr

 19.08.2009, 13:31Re11
Benutzerbild von 2kOne
Beiträge: 46
Registriert: Apr 2008

Also im Prinzip hast du es "fast" verstanden ^^

Hol dir also noch eine Kanne Kaffe und chill ;-)
Also das dein "Home"-Button dann den Namen "button0" hat ist schon richtig. Aber diesen Namen kannst du soweit ich es kappiert habe nur über den Eventlistener abfangen und nicht z.B. über "button0.x = 200" ansprechen. Dieser name existiert NUR in deiner Listener Funktion und diesen kannst du in dem Fall mit "e.target.name" anfangen und verarbeiten. Das haben wir in dem beispiel mit den ganzen IF und ELSE IF Anweisungen gelöst.

Hoffe nun hast du es verstanden ;-)

grüße
2K
 19.08.2009, 13:40Re12
Beiträge: 20
Registriert: Dec 2006

Themenautor/in

Also ich näherer mich den ziel. Wenn du mir jetzt noch einfach zur 3-fachen verständniss ein Beispiel reinkritzelst wo du dem "button0" z.b sagst: gotoAndPlay(30) ... sehe ich ganz genau wo ich das eintragen muss... und als dank mache ich dir und mir paar girls klar ! xD
Geändert von capecok am 19.08.09 um 13:41 Uhr

 19.08.2009, 13:47Re13
Benutzerbild von 2kOne
Beiträge: 46
Registriert: Apr 2008

Ok also versuch es mal mit diesem Script
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
import caurina.transitions.Tweener;

var sprung:uint;

var pfeil:zeiger = new zeiger();
    pfeil.x = 75+(0*91);
    pfeil.y = 322;
    addChild(pfeil);

for (var i:uint = 0; i<=6-1; i++){
    var buttons:knopf = new knopf();
        buttons.name = "button"+String(i); //Hier bekommen die Buttons einen Namen.
        buttons.buttonMode = true;
        buttons.useHandCursor = true;
        buttons.x = 35 +i*91;
        buttons.y = 321;
        addChild(buttons);
       
        buttons.addEventListener(MouseEvent.ROLL_OVER, rollOverHandler);
        buttons.addEventListener(MouseEvent.CLICK, clickHandler);
}

function rollOverHandler(e:MouseEvent):void
{
    Tweener.addTween(pfeil,{x:e.target.x + (e.target.width/2), time:2});
    trace(e.target.name);
}

function clickHandler(e:MouseEvent):void
{
    if (e.target.name == "button0")
    {
      gotoAndPlay(5);
      sprung = 35;
    } else if (e.target.name == "button1")
    {
      gotoAndPlay(5);
      sprung = 36;
    } else if (e.target.name == "button2")
    {
      gotoAndPlay(5);
      sprung = 37;
    } else if (e.target.name == "button3")
    {
      gotoAndPlay(5);
      sprung = 38;
    } else if (e.target.name == "button4")
    {
      gotoAndPlay(5);
      sprung = 39;
    } else if (e.target.name == "button5")
    {
      gotoAndPlay(5);
      sprung = 40;
    }
}


Jetzt musst du nur noch wie schon letztens in dem "Frames überspringen Thema" besprochen auf deinem Frame "20" war es glaub ich in dem Beispiel sagen
ActionScript:
1gotoAndPlay(sprung);


dann sollte es das gewesen sein.

Und dein Angebot mit den Mädels muss ich dankend ablehnen. Habe mein Mädel schon längst gefunden ;-)

grüße
2K
 19.08.2009, 13:58Re14
Beiträge: 20
Registriert: Dec 2006

Themenautor/in

Danke dir 2k ... Das hat mir super toll geholfen und funktioniert einwandfrei xD ! endlich komme ich weiter vorran. Dieses AS 3 macht mich noch fix und fertig...

PS: Hat deine Mädel noch ne nette Freundin xD ?

Nochmals lieben dank und ich sag mal... bis morgen^^

Gruß, Cape
 
Themen
Ähnliche Beiträge zum Thema
 

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de