Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   шаффл для массива взятого из класса (http://www.flasher.ru/forum/showthread.php?t=101526)

inspace 20.09.2007 15:53

шаффл для массива взятого из класса
 
Есть класс all_situation, который принимает в конструктор массив и парсит его, присваивая соответствующим параметрам массивам соответствующие значения.
Этот класс имеет паблик функцию
Код:

public function get_homeschool_array():Array {               
    return _homeschool_array;
}

в другом классе я вызываю у объекта типа all_situation метод get_homeschool_array();
и применяю метод рандомной сортировки

Код:

private function random_scence_question() {
        var arr = _all_situation.get_homeschool_array();
        var rand = Math.floor(arr.length*Math.random());               
        _means_of_travel = arr[rand].nodeName;
        _curent_scene_situation = arr[rand].childNodes;       
        shuffle_array();
}
       
public function shuffle_array() {
        var z = new Number();
        for(var i = 0; i < _curent_scene_situation.length; i++) {
                var t = Number(Math.floor((_curent_scene_situation.length - i) * Math.random()));                       
                z = t + i;
                var _iteration_element = _curent_scene_situation[i];
                var _random_element = _curent_scene_situation[z];                                       

                _curent_scene_situation[z] = _iteration_element;
                _curent_scene_situation[i] = _random_element;       
        }
        trace(_curent_scene_situation);
}

при этом, как видно, нижний трейс должен показывать рандомный массив. но тем не менее отображается та последовательность , которая описана в xml. когда я ставлю
_curent_scene_situation[z] = null;
_curent_scene_situation[i] = null;

то ровным счетом ничего не меняется - никаких нулей, та же последовательность. почему это происходит. как с этим бороться?

silin 21.09.2007 18:04

судя по коду массивом у тебя выступает XMLNode.childNodes , а он read-only со всеми вытекающими последствиями..
как бороться зависит от задачки.., можно пользовать новый массив, в который копировать ноды xml..
Код:

_curent_scene_situation=[]
for(var i in arr[rand].childNodes){
        _curent_scene_situation[i]=arr[rand].childNodes[i];
}

но сортировка будет работать только для этого массива, arr[rand].childNodes останется нетронутым..равно как и сами ноды в хмл, если их переопределить к примеру..

inspace 21.09.2007 21:46

ок спасибо.
так и поступил )


Часовой пояс GMT +4, время: 20:21.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.