2014-01-12 31 views
0

因此...我花了最後一小時試圖弄清楚爲什麼我的數組的排序方法不能正常工作,當我意識到我試圖在我的對象不公開。我通過使用getter方法來訪問它,該方法在所有其他用途上都可以正常工作。我的問題是:是否有可能以某種方式通過私有變量進行排序?也許通過使用getter方法,但我不知道這是如何工作的語法。或者我只需要讓我的變量公開?使用私有變量對數組進行排序

在一個稍微相關的說明中,是否有某種方法可以使用標準方法對矢量中的對象的變量進行排序?

+0

下面的答案很好工作的例子。這也不是我的問題。如果其他人有類似的問題,我的解決方案根本不在排序方法中。我只是不按照排序順序重新顯示對象,所以看起來好像沒有排序。 –

回答

0

下面是使用get函數進行排序

var k:Vector.<A> = new Vector.<A>(); 
k.push(new A(5)); 
k.push(new A(3)); 
k.push(new A(7)); 
k.push(new A(1)); 
k.push(new A(9)); 

k.sort(compareFunction); 

private function compareFunction(obj1:Object, obj2:Object, properties:Array = null):int 
{ 

     var a1:A = obj1 as A; 

     var a2:A = obj2 as A; 

     if (a1.level > a2.level) 
     { 
      return 1; 
     } 
     else if (a1.level < a2.level) 
     { 
      return -1; 
     } 
     else 
     { 
      return 0; 
     } 

} 



class A { 

    private var _level:int; 


    public function get level():int 
    { 
     return _level; 
    } 

    public function A($level:int) 
    { 
     _level = $level 

    } 
}