[AS3] script repeat button
Last Updated: Sep 14 2008 23:21, Started by
bogdan90i
, Sep 14 2008 20:56
·
0

#1
Posted 14 September 2008 - 20:56

Buna ziua,
Am facut si eu un mini script pentru slide menu. Totul merge perfect, dar daca tin mouse-ul in partea dreapta meniul se duce in stanga aratand butoanele din dreapta iar la ultimul buton se opreste. Ceea ce vreau eu sa fac este urmatorul lucru. Cand ajunge la ultimul buton sa nu se opreasca sa continue cu primul. Ceva gen bucla. Cand ajunge la ultimul reia adica: 1->2->3->4->5->1->2->3->etc. acesta este codul: import mx.transitions.Tween; import mx.transitions.easing.*; this.createEmptyMovieClip("container",1); var imagesNumber:Number = 10; var urlArray:Array = new Array("", "page.html", "page.html", "page.html", "page.html", "page.html", "page.html", "page.html", "page.html", "page.html", "page.html"); for (i=1; i<=imagesNumber; i++) { container.attachMovie("thumb"+i,"thumb"+i+"_mc",i); myThumb_mc = container["thumb"+i+"_mc"]; // This adds a variable to the movieclip. // That variable (_url) contains the URL from the array above. myThumb_mc._link = urlArray[i]; myThumb_mc._x = (i-1)*myThumb_mc._width; myThumb_mc._y = (Stage.height-myThumb_mc._height)/2; myThumb_mc.onRelease = function() { getURL(this._link); }; } container.onEnterFrame = function() { this._x += Math.cos((-_root._xmouse/Stage.width)*Math.PI)*13; if (this._x>0) { this._x = 0; } if (-this._x>(this._width-Stage.width)) { this._x = -(this._width-Stage.width); } }; |
#2
Posted 14 September 2008 - 23:21

Dacă nu există moment în care ai vizibile toate butoanele atunci e simplu. În momentul în care un buton iasă afară din "scenă" (partea în care sunt vizibile) prin partea stângă (deci mouse-ul e în partea dreaptă), îl muți în partea dreaptă extremă a lanțului de butoane (chiar dacă e în afara scenei). Pentru situația opusă (mouse-ul e în partea stângă) folosești același sistem. Butonul pe care îl muți în partea opusă a lanțului e tot timpul "primul" așa că e destul de ușor.
Se poate implementa în mai multe feluri. Partea comună e un if care verifică în ce direcție se mișcă meniul (după poziția mouse-ului), adică _root._xmouse > Stage.width/2. Apoi în funcție de direcție verifici care e primul buton. În situația în care meniul se mișcă spre stânga, primul buton va fi cel mai din stânga, adică cel cu id-ul 0 din loop-ul în care le creezi ("thumb1_mc"). container["thumb"+prim+"_mc"]._x = container["thumb"+ultim+"_mc"]._x + container["thumb"+ultim+"_mc"]._width; Unde prim și ultim sunt două variabile pe care inițial au valorile 1 respectiv imagesNumber. Din moment ce ai mutat butoanele e evident că data viitoare când se va încerca aceeași mutare butoanele nu vor mai fi aceleași, adică valorile prim și ultim, asta înseamnă că imediat după o mutare trebuie să modifici valorile astea, și anume ultim = prim și prim++. Evident, înainte de a face incrementa valoarea lui prim trebuie să verifici să nu fi depășit cumva numărul de butoane (adică imagesNumber), adică situația în care întreg meniul a făcut un ciclu complet. Dacă prim > imagesNumber atunci ultim = prim și prim = 0! Cam asta e totul, evident cu modificările de rigoare pentru situația în care meniul se deplasează spre dreapta și în care schimbarea se face de la ultim la prim, folosind aceleași variabile evident. Spor la treabă! ;) |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users