我正在写一个flex程序,我遇到了这个指针的问题。
我在函数内部有一个函数调用,我想知道我的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中的函数时,我是通过新创建的Dialogue还是我传入funcA。我正在思考并希望它是前者。
我只是手动测试,但系统非常大,目前与其他事件捆绑在一起,所以我很难实例化对象来测试它们。
答案 0 :(得分:1)
虽然null是正确的,但funcB
上的方法签名看起来应该作为事件监听器添加。 funcB
期待一个事件。所有事件都有一个属性target
,它是调度事件的实际对象,currentTarget
,它是被侦听的对象。这些只会在显示列表中冒泡事件的情况下有所不同,其中子对象确实调度了事件。
如果您发现此代码的类不是Event的子类,我会期望funcB非常难以出错。如果它是Event的子类,它就不应该是,因为funcA
中的功能不应该是事件的责任。
答案 1 :(得分:0)
当我将this指针传递给newDialog中的函数时,我是通过新创建的Dialogue还是我传入funcA。
都不是。
您有private function
,是class
的成员。为了调用function
,必须创建一个对象,该对象是class
的实例,然后可以在该对象上调用funcA
。
this
是对该对象的引用。