Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.09.2007, 15:53
inspace вне форума Посмотреть профиль Отправить личное сообщение для inspace Найти все сообщения от inspace
  № 1  
Ответить с цитированием
inspace

Регистрация: Oct 2004
Адрес: Москва
Сообщений: 168
По умолчанию шаффл для массива взятого из класса

Есть класс 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;

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


Последний раз редактировалось iNils; 20.09.2007 в 20:07.
Старый 21.09.2007, 18:04
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
судя по коду массивом у тебя выступает 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 останется нетронутым..равно как и сами ноды в хмл, если их переопределить к примеру..

Старый 21.09.2007, 21:46
inspace вне форума Посмотреть профиль Отправить личное сообщение для inspace Найти все сообщения от inspace
  № 3  
Ответить с цитированием
inspace

Регистрация: Oct 2004
Адрес: Москва
Сообщений: 168
ок спасибо.
так и поступил )

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:44.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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