在班级as3下计算

时间:2014-07-06 11:49:49

标签: actionscript-3 flash

我绝对是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);
        }
    }
}

2 个答案:

答案 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