2014-01-12 6 views
0

Итак ... Я потратил последний час, пытаясь понять, почему метод сортировки для моего массива не работал должным образом, когда я понял, что переменная, которую я пытался сортировать в моем объекты не были общедоступными. Я получил доступ к нему, используя метод getter, который отлично работает для всех других целей. Мои вопросы: возможно ли каким-то образом сортировать по частной переменной? Возможно, используя метод getter, но я не знаю, как это будет работать синтаксически. Или мне просто нужно сделать свою переменную открытой?Сортировка массива по частной переменной

На немного связанном примечании есть ли способ сортировки по переменной объекта в векторе с использованием стандартных методов?

+0

Ответ ниже работал большой. Это тоже не моя проблема. Если у кого-то еще есть аналогичная проблема, решение для моего не было вообще в методе сортировки. Я просто не перерисовывал объекты в отсортированном порядке, поэтому казалось, что он не отсортировался. –

ответ

0

Ниже приведен пример использования функции ПОЛУЧИТЬ для сортировки

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 

    } 
} 
Смежные вопросы