{lang: 'de'}
Flashhilfe.de - Flash Community

50 mal " project(1…50).onPress = function " in einer Funktion zusammenfassen? [Flash 10]

 


AntwortenRegistrieren Seite1  

Chris-O#1
Benutzerbild von Chris-O
Beiträge: 16
Wohnort: Aachen
Registriert: Dec 2009

31.05.2011, 19:19

Hey,

ich würde gerne den folgenden Code in einer Funktion zusammenfassen, so dass ich nicht für jeden Button eine eigene Funktion schreiben muss - leider bis jetzt mit wenig Erfolg :( Die Seite hat sehr viele Buttons, und das würde mir sehr viel Arbeit sparen. Ich habe das vor einiger Zeit irgendwo mal gelesen, nur leider finde ich die Quelle ums verecken nicht wieder :(

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
_root.project1.onPress = function()
{
     projects_counter = 0;
     move();
}

_root.project2.onPress = function()
{
     projects_counter = 1;
     move();
}

_root.project3.onPress = function()
{
     projects_counter = 2;
     move();
}

_root.project4.onPress = function()
{
     projects_counter = 3;
     move();
}



…..


Vielen Dank für Eure Hilfe!

Christian
micB#2
Benutzerbild von micB
Beiträge: 186
Registriert: Jun 2009

31.05.2011, 19:27

vielleicht sowas?
ActionScript:
1
2
3
4
5
6
7
for (var i = 1; i <= 4; i++) {
 
     _root["project"+i].onPress = function() {
        projects_counter = (i-1);
        move();
     };
}
Chris-O#3
Benutzerbild von Chris-O
Beiträge: 16
Wohnort: Aachen
Registriert: Dec 2009

Themenautor/in

31.05.2011, 19:40

Hey,

danke für die schnelle Antwort. Leider habe ich das schon versucht. Es funktioniert nicht. Mein Menü bewegt sich immer zur gleichen Stelle, egal welchen Button ich anklicke und danach kann ich nichts mehr anklicken, bzw. es bewegt sich nichts mehr. Ich benutze die Variable "projects_counter" um unterschiedliche Startpunkte für die Bewegung des Menüs zu übergeben.

Irgendwelche anderen Ideen? Mein gesamter code ist folgendes, falls es hilft:


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
//Setup and register with Zego Engine
import com.mosesSupposes.fuse.*;
ZigoEngine.simpleSetup( Shortcuts, PennerEasing, Fuse );
//-----------------------------------------------------------
//Setup Variables


var projects_counter:Number = 0;
var max:Number = 5;
var maxtime:Number = 0.8+(1/((1/max)+1));

//-----------------------------------------------------------

function move() //starts the movement of all projects, y:"movement target in absolute coords")
{
  for ( var s = 1; s < max; s++ )
        {
           var f:Fuse = new Fuse ();
           f.push ([
                   {target: _root["project"+(projects_counter+1-s)], y: 100-(s*35), time: 1+(1/((1/s)+1)), ease:"easeOutQuint"}, //move all elements with smaller index than the clicked one
                 {target: _root["project"+(projects_counter+s)], y: 100+((s-1)*35), time: 1+(1/((1/s)+1)), ease:"easeOutQuint"} //move all elements with higher index and including the clicked one
            ]);
        f.start();
        }
       trace("Moving...");
     
     delay = setInterval(wait_for_open, maxtime*1000); //*1000, da Delay in ms!!

     function wait_for_open()
     {
        trace("Opening project #"+(projects_counter + 1));
        open();
        clearInterval(delay);
     }
}

function open() //opens the menu for the content, y:"opening value (relative distance)"
{
  for ( var n = 1; n < max; n++ )
        {
           var f2:Fuse = new Fuse ();
           f2.push (
                   {target: _root["project"+(projects_counter + n+1)], y:"200", delay: 0.2, time: 2+(1/((1/n)+1)), ease:"easeOutBack"}
               );
         f2.start();
        }
}

_root.project1.onPress = function()
{
     projects_counter = 0;
     move();
}

_root.project2.onPress = function()
{
     projects_counter = 1;
     move();
}

_root.project3.onPress = function()
{
     projects_counter = 2;
     move();
}

_root.project4.onPress = function()
{
     projects_counter = 3;
     move();
}


stop();

micB#4
Benutzerbild von micB
Beiträge: 186
Registriert: Jun 2009

04.06.2011, 11:47

in der funktion "move" ist mir deine for-schleife etwas unklar ...
sie zählt "s" hoch von 1 - 5 (max)
mal angenommen, button4 wurde geklickt. dann ist projects_counter = 3.
dann würden doch folgende targets bei fuse angesprochen:
ActionScript:
1_root["project"+(projects_counter+1-s)]

s == 1 --> "project3"
s == 2 --> "project2"
s == 3 --> "project1"
s == 4 --> "project0"
ActionScript:
1_root["project"+(projects_counter+s)]

s == 1 --> "project4"
s == 2 --> "project5"
s == 3 --> "project6"
s == 4 --> "project7"

ist das so gedacht oder bin ich noch nicht ganz wach und irre mich bei meiner rechnung?
und ...
wären nicht 2 schleifen einfacher zu handeln?
ActionScript:
1for ( var s = 1; s < projects_counter; s++ )...

ActionScript:
1for ( var s = projects_counter; s <max; s++ )...
Geändert von micB am 04.06.11 um 11:53 Uhr
vindel#5
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

05.06.2011, 12:45