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

miramax 10.11.2006 21:58

Ссылка на ссылку
 
Существует объект А. И есть ссылки на этот объект - а, б, в, г, д.... Сколько ссылок и где они находятся я не знаю. Можно ли заменить во всех ссылках объект А на объект Б ?
Давно известно, что фишки типа
Код:

а = 5;
b = a;
a = 6;
trace(b) //5  - а равно 6, а b по-прежнему хранит  значение 5

не проходят. Т.е. нельзя создать ссылку на ссылку

silin 10.11.2006 22:55

это смотря что называть ссылкой, в твоем же примере не ссылка..
на простые типы вообще нельзя организовать ссылку
а ежели на объект
Код:

a = {val:5};
b = a;
a.val = 6;
trace(b.val)//6


Dendroid 10.11.2006 23:10

Это тебе не ссылку надо, а "синоним" (как в Си). Во флэше этого нет.
Тут даже ссылка всего одного типа Object, правильно silin говорит. :)

miramax 11.11.2006 00:06

Да, примитивы передаются по значению, я пример неправильный привёл. Это должно было звучать так:
Код:

а = {name:'i am A'};
b = a;
a = {name:'i am new'};
trace(b.name)


silin 11.11.2006 01:22

ага, незадача: ссылку не перенаправить ..
остается свой механизм ссылок реализовать, типа:
Код:

class Ref {
        var obj;
        function Ref(name,owner){
                obj=owner[name];
                owner.watch(name,setRef);
        }
        function setRef(p,o,n){
                obj=n;
                return n;
        }
}
//////////////////
a = {name:'i am A'};
var ref=new Ref("a",this);
b=ref;//c=ref; etc.
a = {name:'i am new'};
trace(b.obj.name);


AlDev_ 11.11.2006 08:16

или юзать биндинг

etc 11.11.2006 14:44

Собственно, «a» тоже является ссылкой на объект…

silin 11.11.2006 14:53

__etc, об этом и речь: «a» ссылка на объект, а нужна ссылка на ссылку чтоб поменяв последнюю, перенаправить всех кто ссылается на первую..

FlexBuilder 12.11.2006 15:02

2 miramax
небось игрушку пишешь :)

сделай словать или прокси


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

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