如何在Actionscript中忽略此函数返回值?

时间:2014-10-15 14:05:24

标签: actionscript-3 flash actionscript box2d

我正在尝试将Box2DFlashAS3物理引擎移植到另一种语言(Xojo)。我对Actionscript不是特别流利(但是我比使用最初编写Box2D的C ++更加流畅)。

据我了解,参数传递给Actionscript中的函数的参数。考虑这两个类(为了简单起见,大大减少了,这是我感兴趣的两个GetInverse()函数):

public class b2Mat22 {
    public function GetInverse(out:b2Mat22) : b2Mat22 {
        var a:Number = col1.x; 
        var b:Number = col2.x; 
        var c:Number = col1.y; 
        var d:Number = col2.y;
        var det:Number = a * d - b * c;
        if (det != 0.0)
        {
            det = 1.0 / det;
        }
        out.col1.x =  det * d;  out.col2.x = -det * b;
        out.col1.y = -det * c;  out.col2.y =  det * a;
        return out;
    }
    public var col1:b2Vec2 = new b2Vec2();
    public var col2:b2Vec2 = new b2Vec2();
}

public class b2Transform {
    public function GetInverse(out:b2Transform = null) : b2Transform {
        if (!out)
            out = new b2Transform();
        R.GetInverse(out.R);
        out.position.SetV(b2Math.MulMV(out.R, position));
        out.position.NegativeSelf();
        return out;        
    }
    public var position:b2Vec2 = new b2Vec2();
    public var R:b2Mat22 = new b2Mat22();
}

我不理解R.GetInverse(out.R);课程中的b2TransformGetInverse()类的b2Mat22函数不返回值吗?如果是这样,为什么不使用?

1 个答案:

答案 0 :(得分:0)

函数返回值并不意味着需要使用此值。

这是一个例子: 数组 - 反向()

返回:Array - 新数组。 反转阵列。

var letters:Array = new Array("a", "b", "c");
trace(letters); // a,b,c
letters.reverse();
trace(letters); // c,b,a

您可以看到它修改了数组,但 STILL 会返回新数组。这可以用于某些技术,如方法链:

myArray.reverse().concat(...) //you couldn't do this if it didn't return the new array, in that case you would have to do this:
// --->
myArray.reverse();
myArray.concat(...);

另请注意,在AS中(就像在JS,Java等中一样),如果参数是对象,则参数通过引用传递,但原始值不通过引用传递。

现在说完整的事实我不知道Box2D的那些方法是做什么的,但我相信情况可能就是这样。