我绝对是as3的初学者;我真的想了解as3是如何工作的。我写了一个简单的函数,它将乘以一个数字(请参阅下面的代码)。我希望将9与5和trace
相乘,但它不会成倍增加。任何人都可以帮助我吗?
package {
import flash.display.MovieClip;
public class main extends MovieClip {
var xyz:int=9;
public function main() {
// constructor code
mAth(xyz);
trace(xyz);
}
protected function mAth(xyz:int):int{
return(xyz*5);
}
}
}
答案 0 :(得分:2)
您调用函数“mAth”但不使用结果。尝试
trace(mAth(xyz));
查看函数调用的结果。
是否有将内部变量传递给函数的具体原因?您可以在不将值传递给mAth函数的情况下访问xyz。
答案 1 :(得分:1)
这是一个正确的答案,但这并不是跟踪没有显示预期结果的主要原因,因为用户想要了解给定的答案并不能提供完美有效操作的原因。
这是一个更好的:
AS3中的原始对象是按值传递的,而不是通过引用传递的。那些是数字和字符串。当你将变量xyz传递给你的函数时,你会期望它像其他语言一样被修改,但由于只传递它所代表的值,你的变量不会被修改并保持为9.这是AS3的默认行为,它不能被覆盖。所以你必须记住,AS3中作为方法/函数中的参数传递时的原始对象只是按值传递,因此看不到它们的值发生变化。
在你的情况下:
var xyz:int=9;
var result:int = mAth(xyz);
//xyz is still 9 since only its value is passed to the method
//result is 45 since it computes and return the value passed as parameter