调用函数时是否可以忽略变量? (ActionScript3)
Is it possible to ignore a variable when calling a function ? (ActionScript3)
我有一个点击按钮时触发的功能。
function button_clicked(event:MouseEvent):void
{
mySharedObject.data.curr = event.currentTarget;
mySharedObject.data.curr.background = true;
mySharedObject.data.curr.backgroundColor = 0xFEDCA2;
boxText.text = "this is some text";
}
现在我想以另一种方式调用此函数(当用户执行除单击按钮以外的操作时)。
所以我做到了:
button_clicked(null);
它正在工作,但问题是,我不需要 mySharedObject.data.curr
以这种方式调用。 (因为它会产生错误。 currentTarget
在使用其他方式时不存在并且不能存在)。我只需要 boxText.text(以及我要添加的其他内容)
有没有办法在调用 button_clicked
时忽略函数中的 mySharedObject.data.curr?
可行,但您需要显式检查 null 才能这样调用它。事实上,常见的 init()
函数称为 "other way" 并声明为 function init(e:Event=null):void
但参数被简单地忽略了。您立即从传递的事件中请求一些东西,因此您不能使用 null 参数调用您的函数。在这种情况下,您可以通过简单的 if 检查将请求直接包装到 mySharedObject
。
function button_clicked(event:MouseEvent):void
{
if (event && event.currentTarget) {
mySharedObject.data.curr = event.currentTarget;
mySharedObject.data.curr.background = true;
mySharedObject.data.curr.backgroundColor = 0xFEDCA2;
}
boxText.text = "this is some text";
}
如果有人(您在其他地方)想要调用 button_clicked(new Event("dummy"))
可能没有填充其 currentTarget
字段,则要求两个对象都不是 null。
第一个答案当然是可行的,也是我过去所做的,但现在我通常遵循一种模式,我只是将它分离到另一个函数中,并根据需要调用任何一个。
像这样:
function button_clicked(event:MouseEvent):void {
mySharedObject.data.curr = event.currentTarget;
mySharedObject.data.curr.background = true;
mySharedObject.data.curr.backgroundColor = 0xFEDCA2;
setBoxLabel("this is some text");
}
function setBoxLabel(inputText:String){
boxText.text = inputText;
}
// can manually call as needed
setBoxLabel("this is some text");
那么我真的不需要怀疑(在将来重新访问它时)为什么会有空检查。
我有一个点击按钮时触发的功能。
function button_clicked(event:MouseEvent):void
{
mySharedObject.data.curr = event.currentTarget;
mySharedObject.data.curr.background = true;
mySharedObject.data.curr.backgroundColor = 0xFEDCA2;
boxText.text = "this is some text";
}
现在我想以另一种方式调用此函数(当用户执行除单击按钮以外的操作时)。
所以我做到了:
button_clicked(null);
它正在工作,但问题是,我不需要 mySharedObject.data.curr
以这种方式调用。 (因为它会产生错误。 currentTarget
在使用其他方式时不存在并且不能存在)。我只需要 boxText.text(以及我要添加的其他内容)
有没有办法在调用 button_clicked
时忽略函数中的 mySharedObject.data.curr?
可行,但您需要显式检查 null 才能这样调用它。事实上,常见的 init()
函数称为 "other way" 并声明为 function init(e:Event=null):void
但参数被简单地忽略了。您立即从传递的事件中请求一些东西,因此您不能使用 null 参数调用您的函数。在这种情况下,您可以通过简单的 if 检查将请求直接包装到 mySharedObject
。
function button_clicked(event:MouseEvent):void
{
if (event && event.currentTarget) {
mySharedObject.data.curr = event.currentTarget;
mySharedObject.data.curr.background = true;
mySharedObject.data.curr.backgroundColor = 0xFEDCA2;
}
boxText.text = "this is some text";
}
如果有人(您在其他地方)想要调用 button_clicked(new Event("dummy"))
可能没有填充其 currentTarget
字段,则要求两个对象都不是 null。
第一个答案当然是可行的,也是我过去所做的,但现在我通常遵循一种模式,我只是将它分离到另一个函数中,并根据需要调用任何一个。
像这样:
function button_clicked(event:MouseEvent):void {
mySharedObject.data.curr = event.currentTarget;
mySharedObject.data.curr.background = true;
mySharedObject.data.curr.backgroundColor = 0xFEDCA2;
setBoxLabel("this is some text");
}
function setBoxLabel(inputText:String){
boxText.text = inputText;
}
// can manually call as needed
setBoxLabel("this is some text");
那么我真的不需要怀疑(在将来重新访问它时)为什么会有空检查。