在尝试使用基本编码时,我想知道,如果可以使用或捕获由委托调用的方法返回的值。换句话说,返回值将在哪里?
例如:
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"));
}
}
答案 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');
}
希望可以提供帮助。