Форум 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=136064)

inferrum 09.02.2010 06:07

Копирование объекта.
 
Возникла парочка вопросов.Подозреваю что вопросы ламерские, но я что-то не догоняю.

1.
Создаём два массива:

var testArray1:Array=new Array(1,2,3);
var testArray2:Array=new Array(0,0,0);

Нужно скопировать массив testArray1 в testArray2.
Не ссылку, а сам объект.То есть если бы обе переменные были типа int мы бы написали testArray2=testArray1, а тут как?Не используя цикл.

2.
Код AS3:

public class A 
{ 
    public var testArray:Array;
 
    public function A()
      {
          testArray=new Array(1,2,3);
          var testClass:B=new B(testArray);
          testFunc();
      }
 
    public function testFunc();
      {
          trace(testArray);//в первом случае выводит 1,2,3
                                //во втором случае выводит 2,3
        }
}
public class B
{ 
 
    public function B(testArray:Array)
      {
        // 1.В первом варианте присваиваем напрямую    testArray=[0,0,0];
        // 2.Во втором пытаемся обрезать первый элемент testArray.shift();
      }
 
}

Почему в первом случае массив в классе A остался неизменным, а во втором изменился?

kackbip 09.02.2010 10:27

вот так:
Код AS3:

arr1 = arr2.slice();


inferrum 09.02.2010 19:45

kackbip
А если это не Array, а Object?

Rzer 09.02.2010 19:52

Если объект содержит только простые типы (строки, числа), то через ByteArray.writeObject , readObject

inferrum 09.02.2010 20:05

Rzer
А если не только простые то как?

Rzer 09.02.2010 20:10

Перебирать и копировать значения.

inferrum 09.02.2010 20:13

Rzer
Спасибо, понятно.Думал есть метод попроще...
А по поводу второго вопроса?

nocoments 17.02.2010 03:50

я обычно вот так просто делаю
Код AS3:

 
public class Item extends Image
        {
                public var LinkInfo:String;
                public var type:String;
                public var equip:String;
                public var wearing:Boolean;
 
                public var columnNumber:int;
                public var rowNumber:int;
 
                private static var LAST_SELECTED_ITEM:Item;
 
 
 
                public function Item(LinkInfo:String="", type:String="", equip:String="", wearing:Boolean=false, columnNumber:int=0, rowNumber:int=0)
                {
                        this.LinkInfo = LinkInfo;
                        this.type = type;
                        this.equip = equip;
                        this.wearing = wearing;
                        this.columnNumber = columnNumber;
                        this.rowNumber = rowNumber;
                }
 
                public static function set LastSelectedItem(item:Item):void
                {
                        LAST_SELECTED_ITEM = item;
                }
 
                public static function get LastSelectedItem():Item
                {
                        return LAST_SELECTED_ITEM;
                }
 
                public static function copy():Item
                {
                        return new Item(Item.LAST_SELECTED_ITEM.LinkInfo, Item.LAST_SELECTED_ITEM.type, Item.LAST_SELECTED_ITEM.equip, Item.LAST_SELECTED_ITEM.wearing,
                        Item.LAST_SELECTED_ITEM.columnNumber, Item.LAST_SELECTED_ITEM.rowNumber);
                }
        }



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

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