Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-05-2004, 16:15   #1 (permalink)
A..
PostTraum
 
Registriert seit: Apr 2003
Beiträge: 300
Böse Navigation - Hilfe und Scripttips benötigt

Hi,

folgendes

4 Navigationspunkte

gleich nach dem start wird 1 navipunkt nach oben bewegt und drei nach unten... und zwar mit hilfe von robert penner easing_q.

So, das Verhalten der navi wie folgt:
Wird ein navipunkt angewählt so wird dieser nach oben befördert... die welche unter dem standen "rücken" nach und der erste navipunkt nach ganz unten.

So jetzt hab ich ein function mit onenterframe. böse sache das da->

ActionScript:
  1. movein = function () {
  2.         bt1.onEnterFrame = function() {
  3.             var t = this, dauer = 200;
  4.             if (t.c<dauer) {
  5.                 t._y = Math.easeOutElastic(t.c++,285,-190, dauer);
  6.                 bt2._y = Math.easeOutElastic(t.c++,320,200, dauer);
  7.                 bt3._y = Math.easeOutElastic(t.c++,355,200, dauer);
  8.                 bt4._y = Math.easeOutElastic(t.c++,390,200, dauer);
  9.             } else {
  10.                 delete t.onEnterFrame;
  11.             }
  12.     };
  13. };

So das war jetzt da script um direkt nach dem start alle vorprogrammiert an seinen platz zu pushen.

Jetzt überlege ich gerade wie ich das jetzt noch dynamisch mache. Ich könnte ja if abfrage machen, aber es gibt 24 reihenfolgen wie die navi sein "könnte".

Ich kann ja auch im augenblick des anklicken der buttons die ypos allerbuttons auf _root speichern. okay geht auch noch.

aber wie um himmelswillen lege ich fest welche ganz nach oben rutscht und welche nur um 80 pixel nach oben?

irgenwelche tips tricks workaround ?

oje ich seh schon hoffentlich nicht gar zu unverständlich erklärt

gruss
a..
A.. ist offline   Mit Zitat antworten
Alt 24-05-2004, 20:37   #2 (permalink)
A..
PostTraum
 
Registriert seit: Apr 2003
Beiträge: 300
aus die maus

okay... da sitz ich jetzt schon den ganzen tag dran....

jettz halt mal ne andere frage

wie kann es möglich sein, dass ein onEnterFrame nur einmal funktioniert?

ich habe ein funktion
ActionScript:
  1. moveinb = function () {
  2.         ta.onEnterFrame = function() {
  3.             var t = this, dauer = 100;
  4.             if (t.c<dauer) {
  5.                 t._y = Math.easeOutElastic(t.c++,ybe,pos, dauer);
  6.                 dpear();
  7.             } else {
  8.                 delete t.onEnterFrame;
  9.                 _root.clicked = ta;
  10.             }
  11.     };
  12. };

auf dem button wird der funktion
folgendes mitgegeben. ta = bt1 oder
bt2 jeweils wenn geklickt. ybe =
vorherige posistion;pos = dort wo es
hin soll; und ein speichere den namen
als referenz auf _root.clicked = bt1....

Wie ihr seht wird dpear(); function noch
aufgerufen... .diese läßt den
vorherigen geklickten button mit hilfe
von der gespeicherten referenz
(s.Absatz oben/letzte Zeile) über alpha
"verschwinden".
ActionScript:
  1. dpear = function () {
  2.     clicked.onEnterFrame = function() {
  3.             var t1 = this, dauer = 100;
  4.             if (t1.i<dauer) {
  5.                 t1._alpha = 100-t1.i++
  6.                 _root.history = this;
  7.             } else {
  8.                 replace ();
  9.                 delete t1.onEnterFrame;
  10.             }
  11.     };
  12. }
und aber mal ein onEnterFrame. hier
wird nochmal der verschwindede
Button auf _root.history = bt1....
gespeicht.... mit hilfe von replace setzt
ich den button an die position der
eben geklickten buttons. dieser soll
dann wieder einfaden. Wieder über
onEnterFrame zeugs. So!

Wenn ich mich dann durch alles buttons
geklickt habe und den letzten drei
vorherig gebdrückten buttons wieder
anklicken will .... Geht nix .... Warum
killed onEnterFrame sich selbst? Warum
ist es nicht mehr aufrufbar.

Btw ... alles liegt auf root ... nur die _y
id is in den jeweiligen buttons abgelegt.

Ich frage deshalb weil ich es trotz
o´reilley referenz nezt gebacken bekomme.

gruss
verzweifelter weise
a..
A.. ist offline   Mit Zitat antworten
Alt 24-05-2004, 20:49   #3 (permalink)
.
 
Registriert seit: May 2003
Ort: bayern
Beiträge: 1.117
schieb doch mal deine .fla rüber, das wäre konkreter und vielleicht verständlicher, so kann ich dir schlecht folgen...
mooseMash ist offline   Mit Zitat antworten
Alt 24-05-2004, 21:11   #4 (permalink)
A..
PostTraum
 
Registriert seit: Apr 2003
Beiträge: 300
ok

hier is die fla...

nochwas nerviges wenn ich während eine r onEnterFrame aktion einen anderen button drücke dann spielts verrückt, wegen _id und unglückliche vergabe von _root.clicked und _root.history.

da es grösser als 50 kb hier mal die url

http://www.tonprojektion.de/menu.zip

oder als rar

http://www.tonprojektion.de/menu.rar

Geändert von A.. (24-05-2004 um 21:12 Uhr)
A.. ist offline   Mit Zitat antworten
Alt 24-05-2004, 23:07   #5 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
in kürze:

ActionScript:
  1. wieviel=10
  2. for(var i=1;i<=wieviel;i++)
  3. {
  4.     var mc=_root.attachMovie("bt","bt"+i,i,{_y:100+(i*22) , _x:100})
  5.     mc.txt.text="button"+i
  6.     mc.id=i
  7.     mc.id ==1 ? oben=mc._y :0;
  8.     mc.id ==wieviel ? unten=mc._y :0;
  9.     mc.onPress=function()
  10.     {
  11.         this._y != oben ? (ein(),aus(),move(this,this._y)):0;
  12.     }   
  13. }
  14. move=function(wer,y)
  15. {
  16.     for(var i=1;i<=wieviel;i++)
  17.     {
  18.         var mc=_root["bt"+i]
  19.         if(mc._y<y && mc._y!=oben)
  20.         {
  21.             counter++
  22.         }
  23.         mc._y>y ? mc.move1(mc._y -22) :0;
  24.         mc._y==oben ? mc.move1(unten) :0;
  25.     }
  26.     wer.move1(oben)
  27. }
  28. MovieClip.prototype.move1=function(wohin)
  29. {
  30.     this.onEnterFrame=function()
  31.     {
  32.         Math.round(this._y) != Math.round(wohin)this._y +=(-this._y+wohin)*.2 : (this._y=wohin,delete this.onEnterFrame,counter++) ;
  33.     }
  34. }
  35. function aus()
  36. {
  37.     for(var i=1;i<=wieviel;i++)
  38.     {
  39.         _root["bt"+i].enabled=0
  40.     }
  41. }
  42. function ein()
  43. {
  44.     counter=0
  45.     _root.createEmptyMovieClip("watcher",10000)
  46.     watcher.onEnterFrame=function()
  47.     {
  48.         if(counter==wieviel)
  49.         {
  50.             for(var i=1;i<=wieviel;i++)
  51.                {
  52.                 _root["bt"+i].enabled=1
  53.                }
  54.                delete this.onEnterFrame
  55.         }
  56.     }
  57. }

saugen:
Angehängte Dateien
Dateityp: zip move-navi.zip (3,4 KB, 6x aufgerufen)
warrantmaster ist offline   Mit Zitat antworten
Alt 24-05-2004, 23:16   #6 (permalink)
A..
PostTraum
 
Registriert seit: Apr 2003
Beiträge: 300
:)

ja cooler code

wenn du mir jetzt nochmal in erinnerung rufst wohin ich das ? : ding hinstecken soll if not else oder so ach menno ... wo is der oop kram hin ?

Und weiss einer warum dsa Fla im Anfang der onEnterFrame nur einmal geht ?
(s.2ter Post)

gruss
a...
vielen danke warrentmaster für die mühe der bereitstellung
A.. ist offline   Mit Zitat antworten
Alt 24-05-2004, 23:25   #7 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
ActionScript:
  1. a=0
  2. b=11
  3. if(a>0)
  4. {
  5.     trace(a)
  6. }
  7. else
  8. {
  9.     trace(b)
  10. }
  11. //    oder:
  12. a>0 ? trace(a) : trace(b) ;
  13. //
  14. //
  15. //
  16. a=1
  17. if(a>0)
  18. {
  19.     trace("hallo")
  20. }
  21. //     oder:
  22. a>0 ? trace("hallo") : 0 ;

grz
warrantmaster ist offline   Mit Zitat antworten
Alt 24-05-2004, 23:29   #8 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
btw, jedes neue onenterframe überschreibt das vorherige in der entsprechenden instanz.
warrantmaster ist offline   Mit Zitat antworten
Alt 24-05-2004, 23:32   #9 (permalink)
A..
PostTraum
 
Registriert seit: Apr 2003
Beiträge: 300
hmmm und warum führt er dann den code nur einmal aus ?

ich meine wenn er das überschreibt dann gibt doch kein problem oder sehe ich da jetzt irgendwas falsch ?

meine kopf macht gerade einen salat
A.. ist offline   Mit Zitat antworten
Alt 24-05-2004, 23:46   #10 (permalink)
.
 
Registriert seit: May 2003
Ort: bayern
Beiträge: 1.117
hab mich was verdaddelt aber schau halt selber mal
mein script auf frame 2 lautet:
ActionScript:
  1. Math.easeOutElastic = function (t, b, c, d, a, p) {
  2.     if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
  3.     if (a < Math.abs(c)) { a=c; var s=p/4; }
  4.     else var s = p/(2*Math.PI) * Math.asin (c/a);
  5.     return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
  6. };
  7. // eröffungszeremonie
  8. movein = function () {
  9.     leer.onEnterFrame = function() {
  10.         var t = this, dauer = 200;
  11.         if (t.c<dauer) {
  12.             bt1._y = Math.easeOutElastic(t.c++,285,-190, dauer);
  13.             bt2._y = Math.easeOutElastic(t.c++,320,200, dauer);
  14.             bt3._y = Math.easeOutElastic(t.c++,355,200, dauer);
  15.             bt4._y = Math.easeOutElastic(t.c++,390,200, dauer);
  16.         } else {
  17.             delete t.onEnterFrame;
  18.         }
  19.     }
  20. };
  21. //bewegungsfunktion
  22. moveinb = function () {
  23.     ta.c =0;
  24.     dpear();
  25.     ta.onEnterFrame = function() {
  26.         var t = this, dauer = 100;     
  27.         if (t.c<dauer) {
  28.             t._y = Math.easeOutElastic(t.c++,ybe,pos, dauer);
  29.         } else {
  30.             movin = false;
  31.             clicked = ta;
  32.             delete ta.onEnterFrame;
  33.         }
  34.     }
  35. };
  36. //alpha gegen 0
  37. dpear = function () {
  38.     clicked.onEnterFrame = function() {
  39.         var t1 = this, dauer = 100;
  40.         if (t1.i<dauer) {
  41.             t1._alpha = 100-t1.i++
  42.             history = this;
  43.         } else {
  44.             replace ();
  45.             delete this.onEnterFrame;
  46.             };
  47.     };
  48. }
  49. // nach unten setzten alpha 100
  50. replace = function () {
  51.     trace('replace called: '+history+','+ybe);
  52.     history._y = ybe;
  53.     history._alpha = 100;
  54. }
  55.  
  56. //button funktionen
  57. bt1.onRelease = function () {
  58.     if (this._y != -190) {
  59.         if(!movin){
  60.         fin = 95;
  61.         ybe = this._y;   
  62.         pos = fin - ybe;       
  63.         ta = this;
  64.         moveinb ();
  65.         movin=true;
  66.         }
  67.     }else { this.useHandCursor = false }
  68. }
  69. bt2.onRelease = function () {
  70.     if (this._y != -190) {
  71.         if(!movin){
  72.         fin = 95;
  73.         ybe = this._y;   
  74.         pos = fin - ybe;       
  75.         ta = this;
  76.         moveinb ();
  77.         movin=true;
  78.         }         
  79.     }else{ this.useHandCursor = false }
  80. }
  81. bt3.onRelease = function () {
  82.     if (this._y != -190) {
  83.         if(!movin){  
  84.         fin = 95;
  85.         ybe = this._y;   
  86.         pos = fin - ybe;       
  87.         ta = this;
  88.         moveinb ();
  89.         movin=true;
  90.         }      
  91.     }else { this.useHandCursor = false }
  92. }
  93. bt4.onRelease = function () {
  94.     if (this._y != -190) {
  95.         if(!movin){  
  96.         fin = 95;
  97.         ybe = this._y;   
  98.         pos = fin - ybe;       
  99.         ta = this;
  100.         moveinb ();
  101.         movin=true;
  102.         }      
  103.     }else { this.useHandCursor = false }
  104. }
  105. //eröffung
  106. movein ();
  107. stop();
mooseMash ist offline   Mit Zitat antworten
Alt 24-05-2004, 23:58   #11 (permalink)
A..
PostTraum
 
Registriert seit: Apr 2003
Beiträge: 300
O_O RESCHPEKT DANKE vielen dank fürs reinarbeiten ... ja da bin ich die nacht wohl beschäftigt danke nochmal

ausserdem wie kann ich bloss vergessen das alle c´s auf 0 zugesetzt werden müssen .... grosses kino..

GANZ GROSSES KINO und i war bei dpear auch nicht auf null gesetzt.... schön meine eigene fehler noch mal einbauen . der lerneffekt ist immens!!! nein wirklich vielne dank ... denn fehler mach ich net nochmal )
thanks
a..

Geändert von A.. (25-05-2004 um 00:30 Uhr)
A.. 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 21:31 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele