D-pad navigate menu ??

i am looking for a GetAxisDown function, i have tryed a lot of ways to do it, but i can´t get it to work

i am trying to add the D-pad to my menu system, the problem is, it speeds through the menu, here is a video of it

on Pc javascript and Time.timeScale = 0.0

#pragma strict
static var level1time : float = 0.0/3;
var spiller : GameObject;
var someString : String;
var high : int = -100;
var menuup:boolean;
var menudown:boolean;
var b : int = 75;
var h1 :int = 90;
var h2 :int = 50;
var h3 :int = 10;

var menuOptions = new String[3];
menuOptions[0] = "menu01";
menuOptions[1] = "menu02";
menuOptions[2] = "menu03";

var selectedIndex = 0;


function Start () {

menuup = false;
menudown = false;
player.q2 = false;
level1time = 0;
player.playerLives = 3;
player.playerScore = 0;
Screen.showCursor = false;
}


function Update () {
showtime();



if (Input.GetAxis("axis7") == 0){
menudown = false;
}
if (menudown == false && Input.GetAxis("axis7") > 0)
        {
            menudown = true;
            return false;
        }




if (player.Quit == true){
h1 = 90;
h2 = 50;
h3 = 10;
}else{
h1 = 2290;
h2 = 2250;
h3 = 2210;
}


if (player.Quit == false){
if ((Input.GetButtonDown("Fire1"))|| (Input.GetButtonDown("Fire2"))){
player.q2esc();
      player.Quit = true;
      }
}




if (player.Quit == true){
Screen.showCursor = true;
Time.timeScale = 0.0;


if (Input.GetKeyDown("up")|| (menuup == true)|| (Input.GetKeyDown("w"))) {
        selectedIndex = menuSelection(menuOptions, selectedIndex, "up");
        
   }
if (Input.GetKeyDown("down")|| (menudown == true)|| (Input.GetKeyDown("s"))) {
        selectedIndex = menuSelection(menuOptions, selectedIndex, "down");
        
   }


if ((Input.GetKeyDown("space"))||(Input.GetKey ("return"))|| (Input.GetButtonDown("Jump"))){
 selectedIndex = menuSelection(menuOptions, selectedIndex, "enter");
 player.Quit = false;
 player.paused = false;
}

}

if ((player.Quit == false)&& player.paused == false){
Screen.showCursor = false;
Time.timeScale = 1.0;
}

if(player.paused == true){
(VolOut());
}else{
(Volin());
}

if(player.playerScore <= 4){
level1time += Time.deltaTime;
}

if(player.playerScore >= 5){
      spiller.rigidbody.isKinematic = true;
      player.gameover = true;
       (VolOut());
        if(level1time < PlayerPrefs.GetFloat("level1")){
        PlayerPrefs.SetFloat("level1",level1time);
        PlayerPrefs.SetString("name1",scoremenu.mainname);
        high = 130;
        }
                
     LoadLevel(3, 2.5);
}
if(Input.GetKeyDown("m")) {
             if(audio.mute)
                audio.mute = false;
            else
                audio.mute = true;
        }
    }
	
function menuSelection (menuItems : String[], selectedItem : int, direction : String) {


if (direction == "enter") {
       if (selectedItem == 0) {
            player.q2 = false;
            player.Quit = false;
            }else if 
            (selectedItem == 1){
            Application.LoadLevel(0);
            }else if
            (selectedItem == 2){
            Application.Quit();
            
          
             
}
}


  if (direction == "up") {
       if (selectedItem == 0) {
        selectedItem = menuItems.length - 1;
       } else {
            selectedItem -= 1;
       }
  }
    if (direction == "down") {
       if (selectedItem == menuItems.length - 1) {
          selectedItem = 0;
          
          
} else {

selectedItem += 1;
}

  }
  return selectedItem;
  
}

var Design : GUISkin;

function OnGUI () {

GUI.skin = Design;
GUI.Label(Rect(10,10,200,50),"Level: 1");
GUI.Label(Rect(10,40,200,50),"Coins: " + player.playerScore);
GUI.Label(Rect(115,40,200,50),"/5");
GUI.Label(Rect(10,70,200,50),"Lives: " + player.playerLives);
GUI.Label(Rect(10,100,300,50),"Timer: " + someString);
GUI.Label(Rect(10,high,200,50),"New HighScore");


GUI.SetNextControlName ("menu01");
 if (GUI.Button(Rect(Screen.width/2-b,Screen.height/2-h1,150,30),"Return To Game")){
            player.q2 = false;
            player.Quit = false;
                 }
GUI.SetNextControlName ("menu02");
if (GUI.Button(Rect(Screen.width/2-b,Screen.height/2-h2,150,30),"Main Menu")){
            Application.LoadLevel(0);
            
            }
GUI.SetNextControlName ("menu03");
if (GUI.Button(Rect(Screen.width/2-b,Screen.height/2-h3,150,30),"Quit Game")){
            Application.Quit();
            
}
GUI.FocusControl (menuOptions[selectedIndex]);
}
function showtime(){
var min:int;
var sec:int;
var fra:int;
var time01 :String;
min = level1time/60;
sec = level1time%60;
fra = level1time * 1000;
fra = fra % 1000;

someString = String.Format("{0:00}:{1:00}.{2:000}", min, sec,fra);
}


function PlayerCompletedGame() {
    guiText.text = Time.timeSinceLevelLoad.ToString();
}



function LoadLevel(level: int, delay: float){
  // wait the delay time...
  yield WaitForSeconds(delay);
  // then load the level:
  Application.LoadLevel(level);
}


function fadeOut(){
audio.volume -= 0.05 * Time.deltaTime;
yield WaitForSeconds(0.1);
audio.volume -= 0.05 * Time.deltaTime;
yield WaitForSeconds(0.1);
audio.volume -= 0.05 * Time.deltaTime;
}
function VolOut(){
while(audio.volume>0.05){
audio.volume-=0.001;
yield;
}
}
function Volin(){
while(audio.volume<0.2){
audio.volume += 0.001;
yield;
}
}

At a glance, maybe you should yield for x time here:

if (menudown == false && Input.GetAxis("axis7") > 0)
        {
            menudown = true;
            return false;
        }

Something like:

if (menudown == false && Input.GetAxis("axis7") > 0)
        {
            menudown = true;
return yield new WaitForSeconds(0.25f); //sorry, don't recall java version
            return false;
        }

Basically the idea is to wait x seconds before switching menudown to allow the cursor movement on the menu.

Some controller interfaces don’t seem to handle KeyUps and KeyDowns correctly (e.g., Ouya). Since your code is running in Update and the ButtonDown code appears to be being interpreted as simply Button, it being called once each frame. You’ll have to add in your own bool checks to control ButtonUp and ButtonDown behavior, or add a timer so that the code can only get called once every so often.

its not pretty, but it works

static var level1time : float = 0.0/3;
var spiller : GameObject;
var someString : String;
var high : int = -100;
var menuup:boolean;
var menudown:boolean;
var b : int = 75;
var h1 :int = 90;
var h2 :int = 50;
var h3 :int = 10;

var menuOptions = new String[3];
menuOptions[0] = "menu01";
menuOptions[1] = "menu02";
menuOptions[2] = "menu03";

var selectedIndex = 0;


function Start () {

menuup = false;
menudown = false;
player.q2 = false;
level1time = 0;
player.playerLives = 3;
player.playerScore = 0;
Screen.showCursor = false;
}

function menu (t:float){
menudown = false;
yield;
yield;
yield;
yield;
yield;
menudown = true;
yield;
menudown = false;
 
}

function menu2 (t:float){
menuup = false;
yield;
yield;
yield;
yield;
yield;
menuup = true;
yield;
menuup = false;

}

function Update () {

showtime();



if (Input.GetAxis("axis7") == 0){
menudown = false;
menuup = false;
}
if (menudown == false && Input.GetAxis("axis7") < 0)
        {
        var t = Time.realtimeSinceStartup;
        menu(t);
          
        }

if (menuup == false && Input.GetAxis("axis7") > 0)
        {
        menu2(t);
          
        }


if (player.Quit == true){
h1 = 90;
h2 = 50;
h3 = 10;
}else{
h1 = 2290;
h2 = 2250;
h3 = 2210;
}


if (player.Quit == false){
if ((Input.GetAxis("axis7") > 0)|| (Input.GetAxis("axis7") < 0)){
player.q2esc();
      player.Quit = true;
      }
}




if (player.Quit == true){
Screen.showCursor = true;
Time.timeScale = 0.0;


if (Input.GetKeyDown("up")|| (menuup == true)|| (Input.GetKeyDown("w"))) {
        selectedIndex = menuSelection(menuOptions, selectedIndex, "up");
        
   }
if (Input.GetKeyDown("down")|| (menudown == true)|| (Input.GetKeyDown("s"))) {
        selectedIndex = menuSelection(menuOptions, selectedIndex, "down");
        
   }


if ((Input.GetKeyDown("space"))||(Input.GetKey ("return"))|| (Input.GetButtonDown("Jump"))){
 selectedIndex = menuSelection(menuOptions, selectedIndex, "enter");
 player.Quit = false;
 player.paused = false;
}

}

if ((player.Quit == false)&& player.paused == false){
Screen.showCursor = false;
Time.timeScale = 1.0;
}

if(player.paused == true){
(VolOut());
}else{
(Volin());
}

if(player.playerScore <= 4){
level1time += Time.deltaTime;
}

if(player.playerScore >= 5){
      spiller.rigidbody.isKinematic = true;
      player.gameover = true;
       (VolOut());
        if(level1time < PlayerPrefs.GetFloat("level1")){
        PlayerPrefs.SetFloat("level1",level1time);
        PlayerPrefs.SetString("name1",scoremenu.mainname);
        high = 130;
        }
                
     LoadLevel(3, 2.5);
}
if(Input.GetKeyDown("m")) {
             if(audio.mute)
                audio.mute = false;
            else
                audio.mute = true;
        }
    }
	
function menuSelection (menuItems : String[], selectedItem : int, direction : String) {


if (direction == "enter") {
       if (selectedItem == 0) {
            player.q2 = false;
            player.Quit = false;
            }else if 
            (selectedItem == 1){
            Application.LoadLevel(0);
            }else if
            (selectedItem == 2){
            Application.Quit();
            
          
             
}
}


  if (direction == "up") {
       if (selectedItem == 0) {
        selectedItem = menuItems.length - 1;
       } else {
            selectedItem -= 1;
       }
  }
    if (direction == "down") {
       if (selectedItem == menuItems.length - 1) {
          selectedItem = 0;
          
          
} else {

selectedItem += 1;
}

  }
  return selectedItem;
  
}

var Design : GUISkin;

function OnGUI () {

GUI.skin = Design;
GUI.Label(Rect(10,10,200,50),"Level: 1");
GUI.Label(Rect(10,40,200,50),"Coins: " + player.playerScore);
GUI.Label(Rect(115,40,200,50),"/5");
GUI.Label(Rect(10,70,200,50),"Lives: " + player.playerLives);
GUI.Label(Rect(10,100,300,50),"Timer: " + someString);
GUI.Label(Rect(10,high,200,50),"New HighScore");


GUI.SetNextControlName ("menu01");
 if (GUI.Button(Rect(Screen.width/2-b,Screen.height/2-h1,150,30),"Return To Game")){
            player.q2 = false;
            player.Quit = false;
                 }
GUI.SetNextControlName ("menu02");
if (GUI.Button(Rect(Screen.width/2-b,Screen.height/2-h2,150,30),"Main Menu")){
            Application.LoadLevel(0);
            
            }
GUI.SetNextControlName ("menu03");
if (GUI.Button(Rect(Screen.width/2-b,Screen.height/2-h3,150,30),"Quit Game")){
            Application.Quit();
            
}
GUI.FocusControl (menuOptions[selectedIndex]);
}
function showtime(){
var min:int;
var sec:int;
var fra:int;
var time01 :String;
min = level1time/60;
sec = level1time%60;
fra = level1time * 1000;
fra = fra % 1000;

someString = String.Format("{0:00}:{1:00}.{2:000}", min, sec,fra);
}


function PlayerCompletedGame() {
    guiText.text = Time.timeSinceLevelLoad.ToString();
}



function LoadLevel(level: int, delay: float){
  // wait the delay time...
  yield WaitForSeconds(delay);
  // then load the level:
  Application.LoadLevel(level);
}


function fadeOut(){
audio.volume -= 0.05 * Time.deltaTime;
yield WaitForSeconds(0.1);
audio.volume -= 0.05 * Time.deltaTime;
yield WaitForSeconds(0.1);
audio.volume -= 0.05 * Time.deltaTime;
}
function VolOut(){
while(audio.volume>0.05){
audio.volume-=0.001;
yield;
}
}
function Volin(){
while(audio.volume<0.2){
audio.volume += 0.001;
yield;
}
}