Denk jij nog een leuk of nuttig flash script te hebben, post het dan in de scriptbase !

vinTagesworld/flash scripts/buttons/compas menu


compas menu

Toegevoegd door: vinTage op 27-12-2008




Beschrijving

Voorbeeld Een menu dat eruitziet/zich gedraagt als een compas. De naald volgt de muis als men op de swf zit, zodra de muis de swf verlaat, wijst de naald weer naar de active link.


Code

actionscript code

//positie van active button (graden) (homeKnop atm)
//in het script staat in een trace om evt startposities te "berekenen", default naar boven
var finalGraden:Number = (root.loaderInfo.parameters.finalGraden == undefined)? -90 : root.loaderInfo.parameters.finalGraden;

//de gebruikte buttons actions meegeven
homeKnop.addEventListener(MouseEvent.MOUSE_OVER, draai);
homeKnop.addEventListener(MouseEvent.CLICK, draai);

nieuwsKnop.addEventListener(MouseEvent.MOUSE_OVER, draai);
nieuwsKnop.addEventListener(MouseEvent.CLICK, draai);

contactKnop.addEventListener(MouseEvent.MOUSE_OVER, draai);
contactKnop.addEventListener(MouseEvent.CLICK, draai);
//etc, buttons toevoegen naar keuze


///////////////////het script///////////////////
import fl.transitions.Tween;
import fl.transitions.easing.*;

//vars declareren
var graden:Number;
var hoek:Number;
var dx:Number;
var dy:Number;

var roteren:Tween;

naald.addEventListener(MouseEvent.MOUSE_MOVE, draai);
stage.addEventListener(Event.MOUSE_LEAVE, weg);

//muis niet op de swf, dus naald naar laatst geklikte/actieve button laten bewegen
function weg(event:Event)
{
  roteren = new Tween(naald, "rotation", Elastic.easeOut, naald.rotation, finalGraden, 1, true);
}

//graden berekenen
function draai(event:MouseEvent):void
{
  //graden bij movement op het compas zelf
  if (event.type == "mouseMove")
  {
    dx = mouseX - naald.x;
    dy = mouseY - naald.y;
    hoek = Math.atan2(dy,dx);
    graden = 360*(hoek/(2*Math.PI));
  }
  //graden bij hover op buttons
  if (event.type == "mouseOver")
  {
    dx = getChildByName(event.target.name).x - naald.x;
    dy = getChildByName(event.target.name).y - naald.y;
    hoek = Math.atan2(dy,dx);
    graden = 360*(hoek/(2*Math.PI));
  }
  //graden van "active" button
  if (event.type == "click")
  {
    dx = getChildByName(event.target.name).x - naald.x;
    dy = getChildByName(event.target.name).y - naald.y;
    hoek = Math.atan2(dy,dx);
    finalGraden = 360*(hoek/(2*Math.PI));
    trace(finalGraden);//om positie te bepalen, die je evt kan gebruiken als startpositie in verschillende html files
    /*
    if(event.target.name == "homeKnop")
    {
      navigateToURL(new URLRequest("http://www.vintagesworld.be"), "self");
    }
    etc
    */

  }
  roteren = new Tween(naald, "rotation", Elastic.easeOut, naald.rotation, graden, 1, true);
}

//start///swf word net getoont, dus naald pointen
roteren = new Tween(naald, "rotation", Elastic.easeOut, naald.rotation, finalGraden, 1, true);
 



Gebruik

actionscript code

/*
Om de swf te gebruiken in verschillende paginas, moet je een parameter meegeven, anders wijst de naald standaard naar "home".

tutorial om variables door te geven => http://www.vintagesworld.be/tutorials/overig/119/

De parameter die meegegeven moet worden vind je terug onder "finalGraden".
De juiste graden kom je te weten als je op een button klikt (trace) in previewmode (of met flashtracerPlugin).

Buttons kan je in principe gewoon aanmaken, het script verzorgt verder de rest, wel zou je een beetje rekening moeten houden met het registratie punt per button.

In mijn voorbeeld, is het registratiepunt van de home in het midden.
Van nieuws rechtsboven en van contact linksboven.

Locaties waar heen gesurft moet worden in verschillende htmlfiles, kan je aanmaken onderin het script.
*/
       
 



Download de bijbehorende fla file


Share |

Je moet aangemeld zijn om commentaar te kunnen lezen of geven.