2010-08-21 3 views
0

J'essaie d'avoir la fonction toggleClick return powerData. J'ai besoin de stocker powerData dans une variable et le faire passer à une autre fonction pour faire des calculs. Dans la fonction toggleClick, j'affecte powerData à houseArray [e.currentTarget.name.toLowerCase()]; J'ai essayé juste d'écrire return powerData - mais il casse le programme.Comment renvoyer une valeur d'une fonction dans AS3? Puis stocker que la valeur dans une variable pour le transmettre à une autre fonction?

// Fonction toggleClick

function toggleClick(e:MouseEvent) { 

// Store "Power" Values of House Objects in Array 
    var houseArray:Object = {lightA: 1, lightB: 1, lightC: 1,lightD: 1, lightE: 1, 
          comp: 2, 
          tv: 3, 
          stove: 4, 
          laundry: 5}; 

    // Store User Power in Variable called powerData 
    // The currentTarget will equal powerData 
    var powerData:int = houseArray[e.currentTarget.name.toLowerCase()]; 
    //return powerData; 

    trace("movieClip Instance Name = " + e.currentTarget); // [object Comp] 
    //trace(houseArray[e.currentTarget.name]); // comp 
    trace("using currentTarget: " + e.currentTarget.name); // comp 
    trace("powerData: " + powerData); // the amount of power that I clicked on 
    //trace("houseArray: " + houseArray[0]); // the 0 index of house array 
    trace(houseArray[e.currentTarget.name]); // currentTarget inside Array 

    // how to find out which object selected 

    if (e.currentTarget.currentFrame == 2) 
    { 
    e.currentTarget.gotoAndStop(3); 
    e.currentTarget.bstate = 1; 
    } 

    if (e.currentTarget.currentFrame == 4) 
    { 
    e.currentTarget.gotoAndStop(1); 
    e.currentTarget.bstate = 0; 
    } 

}

Répondre

0

Pourquoi vous n'avez pas POWERDATA défini oustside la fonction, la valeur de POWERDATA sera mis à jour après chaque clic

 
var powerData:int; 

function toggleClick(event:MouseEvent):void 
{ 
    powerData = houseArray[e.currentTarget.name.toLowerCase()]; 

    performCalculation(); 
} 

function performCalculation():void 
{ 
    // you can use the powerData new value here 
} 

Ou vous passez simplement la valeur powerData à vos arguments de fonction

 
var powerData:int; 

function toggleClick(event:MouseEvent):void 
{ 
    powerData = houseArray[e.currentTarget.name.toLowerCase()]; 

    performCalculation(powerData); 
} 

function performCalculation(value:int):void 
{ 
    // access the new value here 
} 

pour « retourner POWERDATA » au travail, votre fonction doit renvoyer une valeur int

 

function toggleClick(event:MouseEvent):int 
{ 
    return powerData; 
} 

mais je ne suis pas sûr de savoir comment cela pourrait fonctionner dans votre code si ...

+0

merci pour la réponse. Je pense, tout comme le "Meter Bar" problème - je aurais besoin d'un customEventListener. À l'intérieur du customEventListener, le powerData, et l'état du bouton (On/Off) seraient passés. Le customEventListener verrait si l'état du bouton est On/OFF - afin de voir si l'addition ou la soustraction est nécessaire - tout comme la "barre de mesure". – jc70

+1

Vous pourriez créer une classe pour vos HouseObjects, cette classe aurait une propriété status (on/off) et une propriété power. Lorsque vous cliquez sur un bouton HouseObject, vous pouvez récupérer les valeurs des deux propriétés dans votre gestionnaire d'événements. – PatrickS

Questions connexes