2016-06-14 70 views
0

我正在用flex写一个程序,并且对这个指针有问题。AS3,对'this'指针的说明

我有一个函数内的函数调用,我想知道我的这个指针传递哪个事件。

private function funcA(someArgument) 
{ 
    newDialog.show("Title", "Body", funcB, this) // the 'this' is the argument for funcB 
} 

private function funcB(CloseEvent:event) 
{ 
    if(event == Event.CANCEL) 
     doStuff; 
    if(event == Event.COMPLETE) 
     doOtherStuff; 
} 

为了澄清,我的问题是,当我通过this指针到在newDialog的功能,我会通过我的新创建的对话还是我传递FuncA的。我在想,希望它的前者。

我只是手动测试这个,但系统非常大,目前与其他事件绑定在一起,所以我很难实例化对象来测试它们。

+0

您正在传入包含此代码的作用域/类实例。 – BadFeelingAboutThis

+2

'CloseEvent:event'看起来应该是'event:CloseEvent' –

+0

OP可能来自C#或类似的形式。 –

回答

0

当我将这个指针传递给newDialog中的函数时,我传递了我新创建的对话还是传递给了funcA。

都不是。

您有private function,它是class的成员。为了调用function,必须创建一个对象,该对象的实例为class,然后可以在该对象上调用funcA

this是对该对象的引用。

1

虽然null无误,但funcB上的方法签名看起来应该添加为事件侦听器。 funcB正在等待一个事件。所有事件都有一个属性target(它是分派事件的实际对象)和currentTarget(它是正在侦听的对象)。这些只会在显示列表上冒泡事件的情况下有所不同,其中一个子对象确实派发了该事件。

如果您发现此代码的类不是Event的子类,我会希望funcB错误很难。如果它是事件的一个子类,它不应该是,因为funcA中的功能不应该是事件的责任。