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

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

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

Регистрация: May 2010
Сообщений: 12
По умолчанию Как присваиваются переменные?

Народ, столкнулся с такой проблемой:
В объекте объявлен массив

public var nodes:Array;

В теле он заполняется
В этом же объекте есть функция, которая должна работать с копией этого массива, изменять эту копию и тд, объявляю внутри функции так:

var nods:Array = nodes;

при этом получается, что при изменении nods, изменяется и nodes, получается, что по сути в nods передается ссылка на nodes. Как этого избежать?

Старый 04.02.2011, 16:04
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 2  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Сделать копию, например так:
Код AS3:
var a:Array = [1,2,3];
var b:Array = new Array();
 
b = b.concat(a);
b[0] = "x";
 
trace("a:"+a);
trace("b:"+b);

Старый 04.02.2011, 16:08
Basil.Sinkevich вне форума Посмотреть профиль Отправить личное сообщение для Basil.Sinkevich Найти все сообщения от Basil.Sinkevich
  № 3  
Ответить с цитированием
Basil.Sinkevich

Регистрация: May 2010
Сообщений: 12
В массиве объекты, свойства которых и изменяются, такой способ не помог

Старый 04.02.2011, 16:16
derhab вне форума Посмотреть профиль Отправить личное сообщение для derhab Найти все сообщения от derhab
  № 4  
Ответить с цитированием
derhab
 
Аватар для derhab

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
копия массива
Код AS3:
var nods:Array = nodes.slice();
__________________
freelance | Раздор

Старый 04.02.2011, 16:21
Basil.Sinkevich вне форума Посмотреть профиль Отправить личное сообщение для Basil.Sinkevich Найти все сообщения от Basil.Sinkevich
  № 5  
Ответить с цитированием
Basil.Sinkevich

Регистрация: May 2010
Сообщений: 12
К сожалению не помогает простое копирование массива, надо ещё как-то скопировать все объекты, которые являются элементами массива

Старый 04.02.2011, 16:23
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 6  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Примитивные типы присваиваются по значению, остальные - по ссылке. Если переменная сложного типа заносится в массив, то в массиве тоже только ссылка, ясен пень.
Универсального метода копирования обьекта любого типа - нет.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 04.02.2011, 16:27
Basil.Sinkevich вне форума Посмотреть профиль Отправить личное сообщение для Basil.Sinkevich Найти все сообщения от Basil.Sinkevich
  № 7  
Ответить с цитированием
Basil.Sinkevich

Регистрация: May 2010
Сообщений: 12
Спасибо, понял, буду ковырять =)

Старый 04.02.2011, 16:37
derhab вне форума Посмотреть профиль Отправить личное сообщение для derhab Найти все сообщения от derhab
  № 8  
Ответить с цитированием
derhab
 
Аватар для derhab

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
может пригодится
http://flasher.ru/forum/showpost.php...8&postcount=14
__________________
freelance | Раздор

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

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

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


 


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


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