Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-12-2005, 12:12   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 9
aktiver button soll immer unten stehen

hallo zusammen.

ich schlag mich jetzt schon paar tage mit folgendem problem rum:

ich hab ein vertikal angeordnetes menü. wenn man jetzt auf einen button klickt, soll dieser nach unten an die letzte stelle fahren und größer werden.
klickt man einen anderen button an, soll der vorher aktive button wieder auf ursprüngliche größe schrumpfen (und halt der jetzt aktive button nach unten rutschen). so..hm..wie ne kette..oder so.

ich such seit tagen im web (weil ich meine, sowas schonmal vor monaten gelesen zu haben) aber find nix - nicht mal n bisschen was.

ich hatte mal angedacht ein script für ein panorama in die richtung zu verändern...aber klappte nicht (bin leider - noch - nicht so sattelfest in richtiger as-programmierung).

wäre super, wenn mir hier jemand weiterhelfen könnte.
mojojojo ist offline   Mit Zitat antworten
Alt 02-12-2005, 12:33   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hallo und willkommen im Forum!

Wie sieht denn dein bisheriges Script bzw. deine fla aus?
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 02-12-2005, 12:46   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 9
hallo. danke.

das was ich versucht habe (um-) zu scripten, war das panorama script. und das hat vorne u hinten nicht hingehauen - habs dann sehr frustriert einfach nicht gespeichert. aber ich denke, dass war sowieso eine idee ohne lösung.

eine neue fla hab ich noch nicht angelegt weil mir jegliche idee fehlt.

dinge mit as irgendwo hin zu schieben raff ich ja noch - aber die buttons, die unten verschwinden, müssen dann oben ja wieder auftauchen (deshalb hatte ich zuerst ans pano-script gedacht). ganz davon zu schweigen, dass die buttons ja einen aktiv-zustand bis zum nächsten klick halten müssen.

das wäre mein script für ne bewegung der buttons- fehlt noch ne variable für die mcs, aber lässt sich darauf überhaupt aufbauen?
PHP-Code:
function slideMenu() {
    
this._x += (zielX this._x) / 8;
    
this._y += (zielY this._y) / 8;
}

mc.onEnterFrame slideMenu;

btn1.onRelease = function() {
    
zielX 0;
    
zielY 20;
};
btn2.onRelease = function() {
    
zielX 0;
    
zielY 100;
}; 
mojojojo ist offline   Mit Zitat antworten
Alt 02-12-2005, 13:32   #4 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hi!
Schnell mal was getippelt. Ich wette, das sieht jetzt nicht so aus, wie du es haben willst, aber damit solltest du irgendwie weiterkommen...
PHP-Code:
MovieClip.prototype.moveMe = function(zielYscale) {
    
this.onEnterFrame = function() {
        
Math.round(this._y) != zielY this._y += (zielY-this._y)/: (delete this.onEnterFramethis._y=zielYthis.scaleMe(scale));
    };
};
//
MovieClip.prototype.scaleMe = function(size) {
    
this.onEnterFrame = function() {
        
Math.round(this._xscale) != size this._xscale=this._yscale += (size-this._xscale)/: (delete this.onEnterFramethis._xsclale=this._yscale=size);
    };
};
for (var 
0x<4x++) {
    var 
btn this.attachMovie("btn""btn"+xx, {_y:35*x});
    
btn.txt.text "button "+x;
    
btn.btn._y;
    
btn.onRelease = function() {
        
this.moveMe(150150);
        if (
_root.lastone != this) {
            
_root.lastone.moveMe(_root.lastone.y100);
        }
        
_root.lastone this;
    };

Angehängte Dateien
Dateityp: rar button_move.rar (3,9 KB, 23x aufgerufen)
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 02-12-2005, 14:39   #5 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 9
cool. danke erstmal!

hab n paar sachen verstanden - aber natürlich nicht alles.

- wo wird festgelegt, wieviel abstand der button, der nach unten läuft vom letzten button hat (an dem orientiert sich das ja..oder?!)

- das funktioniert auch, wenn der mc nicht attached wird und ich die buttons "eigenhändig" auf der bühne plaziere? klappte im ersten versuch nicht aber dann schau ich mal weiter.

- jetzt zu der frage, die mir am peinlichsten ist: wie hilft mir das weiter? ich seh nicht, wo (vor allem wie) ich den anderen buttons sagen soll, dass sie sich alle (ketten-like) bewegen soll.

danke für die fla übrigens - aber mein flash öffnet nix, was ich downgeloadet hab. (weis nicht warum, aber geht ja auch so)

Geändert von mojojojo (02-12-2005 um 14:41 Uhr)
mojojojo ist offline   Mit Zitat antworten
Alt 02-12-2005, 14:44   #6 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Nö, da orientiert sich momentan nix an der Gesamthöhe aller Buttons. Das hier
PHP-Code:
this.moveMe(150150); 
sagt halt beweg dich zur Y-Position 150 und vergrößere dich um 50%. "Kettenlike?" was meinste damit? Vielleicht sowas in der Art:
PHP-Code:
var tl this;
var 
abst 5;
var 
oEF 0;
var 
speed 5
var arr = ["links""über uns""kontakt""impressum""bla"];
var 
anz arr.length;
for (var 
0x<anzx++) {
    var 
btn tl.attachMovie("btn""btn"+xx, {_y:(btn._height*x)+abst*x});
    
btn.id x;
    
btn.btn._y;
    
btn.txt.text arr[x];
    
btn.onRollOver = function() {
        
oEF += 1;
        
this.onEnterFrame = function() {
            if (
this._yscale<150) {
                
this._yscale this._xscale += speed;
                for (var 
0x<anzx++) {
                    if (
x<this.id) {
                        
tl["btn"+x]._y tl["btn"+(x+1)]._y-(tl["btn"+(x+1)]._height/2)-abst-tl["btn"+x]._height/2;
                    } else if (
x>this.id) {
                        
tl["btn"+x]._y tl["btn"+(x-1)]._y+(tl["btn"+(x-1)]._height/2)+abst+tl["btn"+x]._height/2;
                    }
                }
            } else {
                
delete this.onEnterFrame;
            }
        };
    };
    
btn.onRollOut btn.onDragOut=function () {
        
oEF -= 1;
        
this.onEnterFrame = function() {
            if (
this._yscale>100) {
                
this._yscale this._xscale -= speed;
                for (var 
0x<anzx++) {
                    if (
x<this.id) {
                        
tl["btn"+x]._y tl["btn"+(x+1)]._y-(tl["btn"+(x+1)]._height/2)-abst-tl["btn"+x]._height/2;
                    } else if (
x>this.id) {
                        
tl["btn"+x]._y tl["btn"+(x-1)]._y+(tl["btn"+(x-1)]._height/2)+abst+tl["btn"+x]._height/2;
                    }
                }
            } else {
                
delete this.onEnterFrame;
                if (
oEF == 0) {
                    for (var 
0x<anzx++) {
                        
tl["btn"+x]._y tl["btn"+x].y;
                    }
                }
            }
        };
    };
    
btn.onRelease = function() {
        
trace(this.txt.text);
    };

Angehängte Dateien
Dateityp: rar buttons.rar (6,5 KB, 11x aufgerufen)
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++

Geändert von Der Frager (02-12-2005 um 14:45 Uhr)
Der Frager ist offline   Mit Zitat antworten
Alt 02-12-2005, 15:12   #7 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 9
oh
Zitat:
this.moveMe(150, 150);
*peinlich*

zum script oben: nee - aber is cool. mit "kette" mein ich..hm..so hier:

BUTTON 1
BUTTON 2
BUTTON 3
BUTTON 4

nach klick auf BUTTON 2 bewegt der sich dann auf position von BUTTON 4.
BUTTON 1 bleibt dabei immer über 2 und weil 3 u 4 quasi unten "rausgedrückt" werden kommen die dann oben wieder rein. (kann man das nachvollziehen?)

BUTTON 3
BUTTON 4
BUTTON 1
BUTTON 2

wegen dem "unten-raus-und-oben-wieder-rein" war mein erster gedanke ja panorama-scroll-script. aber das was ich hab, reagiert abhängig von der mouse position.

weist du ungefähr was ich meine? isses sehr kompliziert das zu realisieren und nervt das sehr, wenn ich dann 1000 fragen hab - dann setz ichs nochmal auf die reservebank, bis ich mehr plan vom scripten hab.

Geändert von mojojojo (02-12-2005 um 15:13 Uhr)
mojojojo ist offline   Mit Zitat antworten
Alt 02-12-2005, 15:22   #8 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Aha... Da könntest du auch mal nach "yugop" suchen. Sind zwar meistens Fotos, die da dann veschoben werden, aber das könntest du ja anpassen. So wirklich schwierig ist's nicht, Plan von AS sollte man allerdings schon haben .
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 02-12-2005, 15:55   #9 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 9
ich kenn das yugop-menü aber das ist nicht das, was ich vorhab. (oder geht das script in die selbe richtung?)

abgesehen davon steht in den 500 post zu yugop in bestimmt 400
Zitat:
such mal nach yugop
(hab ich vor dem eröffnen dieses themas auch schon nach gesucht, weils menü erst anders aussehen sollte)

hab hier schnell n beispiel swf mit tweens gebastelt: [ATTACH]beispiel[/ATTACH]
Angehängte Dateien
Dateityp: zip kette.zip (1,3 KB, 16x aufgerufen)

Geändert von mojojojo (02-12-2005 um 15:57 Uhr)
mojojojo ist offline   Mit Zitat antworten
Alt 02-12-2005, 20:46   #10 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 28
Háb mir dein Beispiel mal angesehen.
Würde kurzerhand folgende Lösung vorschlagen.

PHP-Code:
Algorithmus:
  
1. Mit Buttonklick merken welcher Button gedrückt wurde
  2. Alle 
(vierButtons um eine Position nach unten schieben
  3. Abfrage ob der gedrückte an gewünschter Stelle ist
  3.1
Wenn nichtnach 4. wieder zu 2.
  3.2
Wenn janach 4. stoppen
  4. letzten Button ganz nach oben schieben 
Schon etwas aufwendig, aber von 'Der Frager' hast ja schon mal die Grundfunktionen auf welche du aufbauen kannst.
newton ist offline   Mit Zitat antworten
Alt 03-12-2005, 01:07   #11 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Nette Algorithmus_Idea!!!
Wenn Du einen Plan hättest, könntest Du auch erkennen das das script von "der Frager" nicht des wirklich richtige für diesen Job ist!!
@ "der Frager" was nicht heißen soll das des Script nicht Geil ist
Einen kurzen "Dirty Hack" von mir, man müßte einen Listener verwenden ums sauber zu scripten, jetzt verschieben sich die ganzen Buttons noch ein bisschen!
Aber so als Ansatz wirds schon gehen!!
PHP-Code:
var btn_xPos 100;
var 
btn_yPos 50;
var 
btn_hoehe main_mc._height;
var 
anzahl_btn 4;
_global.Mct;
for (var 
0i<anzahl_btni++) {
    var 
this.main_mc.duplicateMovieClip("dub_mc"+i100+i, {_x:btn_xPos_y:(btn_hoehe*i)+btn_yPos});
    
m.texter_txt.text m._name;
    
m.onPress = function() {
        if (
this._y != 140) {
            
_global.Mct this;
            
forMove();
        }
    };
}
function 
forMove() {
    for (var 
0j<anzahl_btnj++) {
        
this["dub_mc"+j].moverTo();
    }
}
MovieClip.prototype.moverTo = function() {
    
this.onEnterFrame = function() {
        
this._y += 1;
        if (
Math.ceil(Mct._y) == 140) {// hier war ich zu Faul mit Variablen zu arbeiten
            
delete this.onEnterFrame;
        }
        if (
this._y>=btn_yPos+(this._height*anzahl_btn)) {
            
this._y btn_yPos;
        }
    };
}; 
Angehängte Dateien
Dateityp: zip buttonschieb.zip (4,7 KB, 20x aufgerufen)
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"

Geändert von RustyCake (03-12-2005 um 01:09 Uhr)
RustyCake ist offline   Mit Zitat antworten
Alt 03-12-2005, 14:16   #12 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
So, hier dann nochmal so ein Proll-Menü . Funzt aber nur mit AS 2.0...
PHP-Code:
var tl this;
tl.setMask(mask);
function 
tween(mcziel) {
    new 
mx.transitions.Tween(mc"_y"mx.transitions.easing.Bounce.easeOutmc._yziel10);
}
for (var 
0x<4x++) {
    var 
btn this.attachMovie("btn""btn"+xx, {_y:35*x});
    
btn.txt.text "button "+x;
    
btn.pos x;
    
btn.onRelease = function() {
        if (!
running) {
            
_global.running true;
            
_global.clicked this.pos;
            for (var 
0x<4x++) {
                var 
btn tl["btn"+x];
                if (
btn.pos>clicked) {
                    
tween(btn170);
                }
            }
            
iv setInterval(function () {
                
clearInterval(iv);
                for (var 
0x<4x++) {
                    var 
btn tl["btn"+x];
                    
btn.pos>clicked ? (btn.pos -= clicked+1btn._y=-40) : (btn.pos += 3-clickedtween(btnbtn.pos*35));
                }
            }, 
1000);
            
iv1 setInterval(function () {
                
clearInterval(iv1);
                for (var 
0x<4x++) {
                    var 
btn tl["btn"+x];
                    
btn._y == -40 tween(btnbtn.pos*35) : 0;
                }
                
_global.running false
            
}, 2000);
        }
    };

Angehängte Dateien
Dateityp: rar proll.rar (5,4 KB, 14x aufgerufen)
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 04-12-2005, 22:29   #13 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 9
hallo.

danke für eure scripts (u die mühe)! as 2.0 jeht leider nicht, weil ich mx hab. (wie kann man das auch abwärts konvertieren?)

@ rustyCake
Zitat:
man müßte einen Listener verwenden
...blöde frage aber - wie u welchen?

in allen scripten wird ein mc aus der lib geholt, geklont und per as platziert. funktionieren die scripte nur so oder kann man die auch auf "per hand" auf die bühne gelegte mcs anwenden?
mojojojo ist offline   Mit Zitat antworten
Alt 05-12-2005, 13:30   #14 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
So, hier mal als MX. Ist zwar der "Bounce"-Effekt wech, aber auch egal... Das sollte, wenn du den Buttons die richtigen Instanznamen gibst, auch mit von Hand auf der Bühne platzierten gehen. Wie gesagt sind das ja nur Beispiele, wie man's machen könnte...
PHP-Code:
var tl this;
tl.setMask(mask);
function 
tween(mcziel) {
    
mc.onEnterFrame = function() {
        
Math.round(this._y) != ziel this._y += (ziel-this._y)/: (delete this.onEnterFramethis._y=ziel);
    };
}
for (var 
0x<4x++) {
    var 
btn this.attachMovie("btn""btn"+xx, {_y:35*x});
    
btn.txt.text "button "+x;
    
btn.pos x;
    
btn.onRelease = function() {
        if (!
running) {
            
_global.running true;
            
_global.clicked this.pos;
            for (var 
0x<4x++) {
                var 
btn tl["btn"+x];
                if (
btn.pos>clicked) {
                    
tween(btn170);
                }
            }
            
iv setInterval(function () { clearInterval(iv);for (var 0x<4x++) {var btn tl["btn"+x];btn.pos>clicked ? (btn.pos -= clicked+1btn._y=-40) : (btn.pos += 3-clickedtween(btnbtn.pos*35));}}, 1000);
            
iv1 setInterval(function () { clearInterval(iv1);for (var 0x<4x++) {var btn tl["btn"+x];btn._y == -40 tween(btnbtn.pos*35) : 0;}_global.running false;}, 2000);
        }
    };

Angehängte Dateien
Dateityp: rar proll_menue_MX.rar (3,6 KB, 19x aufgerufen)
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 05-12-2005, 17:14   #15 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 9
Thumbs up goil! danke!!!

schau ich mir heute abend in ruhe an und hab dann morgen bestimmt noch paar fragen. (...zum besseren verständnis vom script..weil mojoauchwilllernen!)

also danke nochmal jungs!
mojojojo 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 06:45 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele