是否可以使用从委托调用的方法返回的值?

时间:2015-11-28 20:06:10

标签: actionscript-3

在尝试使用基本编码时,我想知道,如果可以使用或捕获由委托调用的方法返回的值。换句话说,返回值将在哪里?

例如:

class Main extends Sprite
{
   public var mc:MyMc;

   function Main()
  {
      mc.addEventListener( "myClick" , myClick);

  }

  function myClick(e:Event):String  //returning a string 
  {
     return "What happens to this return value ???" 
  }


}



class MyMc extends MovieClip
{

   function MyMc()
  {
      addEventListener( MouseEvent.CLICK , onClick);

  }

  function onClick(e:Event):String  //returning a string 
  {
     dispatchEvent(new Event("myClick")); 
  }


}

2 个答案:

答案 0 :(得分:0)

据我所知,这是不可能的,但是,至少有一些方法可以实现类似于你所说的逻辑。

例如,您可以从侦听器方法调用调度程序的方法:

class Main extends Sprite
{
   public var mc:MyMc;

   function Main()
   {
      mc.addEventListener("myClick" , myClick);
   }

   function myClick(e:Event):void
   {
      mc.specialMethod("some string");
   }
}

class MyMc extends MovieClip
{
   function MyMc()
   {
      addEventListener(MouseEvent.CLICK , onClick);
   }

   function onClick(e:Event):void
   {
      dispatchEvent(new Event("myClick")); 
   }

   public function specialMethod(param:String):void
   {
      // Do something to the param
   }
}

此外,您可以考虑从Main类调度一个事件,并在MyMc类中监听它,或者从Main返回一个回调字符串的回调函数。

答案 1 :(得分:0)

这是根据你和你的需要从听众函数中返回一些内容,因为通常是it must return nothing

  

...此函数必须接受一个Event对象作为其唯一参数,并且必须不返回任何内容,...

但你当然可以得到返回的值,看看这个小例子:

var light_on:Boolean = false; 

btn_light_on.addEventListener(MouseEvent.CLICK, btn_on_onPress);
btn_light_off.addEventListener(MouseEvent.CLICK, btn_off_onPress);

function btn_on_onPress(e:MouseEvent): Boolean {
    light_on = true;
    if(e.target === btn_light_off){
        light_on = false;       
    }
    return light_on;
}

function btn_off_onPress(e:MouseEvent): void {
    trace('The light is', btn_on_onPress(e) ? 'on' : 'off');
}

希望可以提供帮助。