【问题标题】:How to return a value from a function in AS3? Then store than value in a variable to pass it to another function?如何从 AS3 中的函数返回值?然后将值存储在变量中以将其传递给另一个函数?
【发布时间】:2010-08-21 22:24:51
【问题描述】:

我正在尝试让函数 toggleClick 返回 powerData。我需要将 powerData 存储在一个变量中,并将其传递给另一个函数进行计算。

在toggleClick函数内部,我将powerData分配给houseArray[e.currentTarget.name.toLowerCase()];

 var powerData:int = houseArray[e.currentTarget.name.toLowerCase()];

我试图只写 return powerData--但它破坏了程序。

// 函数切换点击

  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;
   }

}

【问题讨论】:

    标签: flash variables function return-value


    【解决方案1】:

    为什么不在函数之外定义powerData,每次点击后powerData的值都会更新

    var powerData:int; 功能切换点击(事件:鼠标事件):无效 { powerData = houseArray[e.currentTarget.name.toLowerCase()]; 执行计算(); } 函数执行计算():无效 { // 您可以在此处使用 powerData 新值 }

    或者您只需将 powerData 值传递给您的函数参数

    var powerData:int; 功能切换点击(事件:鼠标事件):无效 { powerData = houseArray[e.currentTarget.name.toLowerCase()]; 执行计算(powerData); } 函数执行计算(值:int):无效 { // 在此处访问新值 }

    为了让“return powerData”工作,你的函数需要返回一个 int 值

    功能切换点击(事件:鼠标事件):int { 返回电源数据; }

    但我不确定这将如何在您的代码中工作......

    【讨论】:

    • 感谢您的回复。我在想,就像“Meter Bar”问题一样——我需要一个 customEventListener。在 customEventListener 内部,将传递 powerData 和按钮状态(开/关)。 customEventListener 将查看按钮状态是否为开/关——以查看是否需要加法或减法——就像“计量栏”一样。
    • 你可以为你的 HouseObjects 创建一个类,这个类有一个 status(on/off) 属性和一个 power 属性。单击 HouseObject 按钮时,您可以在事件处理程序中检索这两个属性的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    相关资源
    最近更新 更多