Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Неразбериха с массивом. (http://www.flasher.ru/forum/showthread.php?t=207591)

miskalik 24.04.2014 01:19

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

Код AS3:

var mainMass:Array = new Array();
var mass:Array = new Array(1,2);
 
//Хочу присвоить главному массиву текущее состояние простого
mainMass[0] = mass;
trace(mainMass[0]); //(1,2)
 
//Без кода.. К примеру тут я меняю местами значения... Из (1,2) в (2,1)
 
//И заношу новое положение в другую ячейку новое состояние
mainMass[1] = mass;
trace(mainMass[1]); //(2,1)
 
//Проблема в том что теперь
trace(mainMass[0]); //Выведет уже не (1,2) а (2,1)

Я пробовал записывать как String. Работает но тип уже не Array будет.
Я думаю записывается ссылка на mass.
Как записать значение, сохранив тип Array?

Заранее спасибо!

alexandrratush 24.04.2014 01:33

Вот так можно сделать
Код AS3:

mainMass[0] = mass.slice();

Тут почитать

Wolsh 24.04.2014 01:37

Массивы (да и обычные переменные тоже) хранят ссылки на объекты, а не копии объектов. То есть в нулевой ячейке массива mainMass хранится ссылка на массив mass, или его адрес. Что бы ни происходило с массивом mass, всегда будет происходить и с mainMass[0] — это просто один и тот же объект, на который есть две разные ссылки. Если Вы хотите хранить РАЗНЫЕ объекты, то Вам нужно СОЗДАТЬ эти разные объекты. Например, mainMass[0] = mass.concat();

miskalik 24.04.2014 01:39

Спасибо за быстрый ответ! Все встало на свои места.
Не знал такого о массивах, надо бы почитать :)


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

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