webForumDet fria alternativet

Sliding MC beroende av musen

Flash

6 svar · 464 visningar · startad av lampdaniel

Medlem sedan sep. 200623 inlägg
Frågan#1

Tjena! Jag har en rullande meny i ett vanligt mc som jag vill ska flyttas i sidled beroende på musens position. I mc:t har jag koden:

onClipEvent (load) {
   xcenter=150;
   speed=1/10;
}
onClipEvent (enterFrame)
{
   var distance=_root._xmouse-xcenter;
   _x-=(distance*speed);
   if (_x > 100) _x=100;
   if (_x < -100) _x=-100;
}

Vilket jag tycker funkar bra förutom det att den irriterar eftersom att den rör på sej så fort man rör musen. Min tanke är att scriptet endast ska vara "aktiverat" när man har musen övar mc:t. Är det någon som ved hur jag ska göra? Alltså att scriptet bara ska bry sig om musen när den är över mc:t. Tack på förhand

Medlem sedan dec. 2006608 inlägg
#2

Nu är jag väldigt rostig vad gäller actionscriptandet, men nåt liknande detta:

onClipEvent (enterFrame)
{
   [B][red]if (_root.MakeItMove = true) {[/red][/B]
      var distance=_root._xmouse-xcenter;
      _x-=(distance*speed);
      if (_x > 100) _x=100;
      if (_x < -100) _x=-100;
   [B][red]}[/red][/B]
}

Och så får du lägga onMouseOver och onMouseOut på mc:t

ditt_mc.onMouseOver() {
   _root.MakeItMove = true;
}
ditt_mc.onMouseOut() {
   _root.MakeItMove = false;
}

Obs! återigen, lita inte på min kod, men principen borde framgå. :)

Medlem sedan sep. 200623 inlägg
#3

Tack andyoumaydie för att du svarade. Men tyvärr funkar det inte.... Felet verkar ligga i "onMouseOver"/"onMouseOut" delen.... Har du möjligtvis någon annan idé?

Medlem sedan jan. 2007108 inlägg
#4

andyoumaydie skrev:

Nu är jag väldigt rostig vad gäller actionscriptandet, men nåt liknande detta:

onClipEvent (enterFrame)
{
   [B][red]if (_root.MakeItMove = true) {[/red][/B]
      var distance=_root._xmouse-xcenter;
      _x-=(distance*speed);
      if (_x > 100) _x=100;
      if (_x < -100) _x=-100;
   [B][red]}[/red][/B]
}

Och så får du lägga onMouseOver och onMouseOut på mc:t

ditt_mc.onMouseOver() {
   _root.MakeItMove = true;
}
ditt_mc.onMouseOut() {
   _root.MakeItMove = false;
}

Obs! återigen, lita inte på min kod, men principen borde framgå. :)

Bör vara två lika med tecken i if satsen.

if (_root.MakeItMove == true) {

Medlem sedan juni 2006244 inlägg
#5

I actionscript finns inte onMouseOver, utan metoden heter onRollOver.
Samma gäller för onMouseOut.

En lösning som kräver lite mindre kod är att använda metoden hitTest() för att kolla om musen är över (rör vid) ditt movieclip.

För att kolla om movieclip mcX nuddar musens position.

if( mcX.hitTest(_root._xmouse, _root._ymouse) ) {

}

Din kod blir alltså:

onClipEvent (enterFrame)
{
   if ( this.hitTest(_root._xmouse, _root._ymouse) ) {
      var distance=_root._xmouse-xcenter;
      _x-=(distance*speed);
      if (_x > 100) _x=100;
      if (_x < -100) _x=-100;
   }
}
Medlem sedan sep. 200623 inlägg
#6

Tack så otroligt mycket alla! Nu funkar det! Jag använde alltså koden:

onClipEvent (load) {
   xcenter=150;
   speed=1/10;
}

onClipEvent (enterFrame)
{
   if ( this.hitTest(_root._xmouse, _root._ymouse) ) {
      var distance=_root._xmouse-xcenter;
      _x-=(distance*speed);
      if (_x > 100) _x=100;
      if (_x < -100) _x=-100;
   }
}
Medlem sedan juni 2006244 inlägg
#7

Kul att det löste sig.
Lycka till!

251 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
115 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)