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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.05.2008, 19:13
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 11  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Так, я вообще перестал понимать о чем идет. Какой еще уникальный объект и причем тут onEnterFrame?
Можно отойти от абстрактных желений и объяснить конкретно на примере?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 14.05.2008, 22:47
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 12  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Мне кажется я понял, чего нужно, но чет не представляю, как это можно сделать =)
Код:
var obj = {
	toString:function():String {return 'foo' }
}
obj.obj = {};
trace(obj.obj.parent); // нужно 'foo'
__________________
Hell is the possibility of sanity

Старый 14.05.2008, 23:41
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 13  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Цитата:
Сообщение от iNils Посмотреть сообщение
Так, я вообще перестал понимать о чем идет. Какой еще уникальный объект и причем тут onEnterFrame?
Можно отойти от абстрактных желений и объяснить конкретно на примере?
Залезть в конструктор ВСТРОЕННЫХ классов нарямую мы не можем, только в их прототип. Поэтому в прототипе надо поставить некий САМОвключаемый обработчик, который позволил бы СРАЗУ при рождении объекта ВОЗДЕЙСТВОВАТЬ на него. Для мувиклипов идеальным обработчиком оказался onEnterFrame. Причем тут он - я указал в ссылке в топике.
Что хочу? Очень немногого Аналога _parent (wvxvw, правильно понял) для объектов и способность отличать ссылки на объект от самих объектов.

Конкретный пример:
Код:
obj1={}
obj2={}
obj1.obj2=obj2
obj2.obj1=obj1
Что теперь будет с рекурсивной функцией обхода объектов, включая вложенные?

Старый 15.05.2008, 00:38
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 14  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
В отличии от мувиклипов, которое являются визуальными объектами и поэтому "физически" находятся в другом клипе и поэтому имеют родителей, объекты создаются в памяти и на них просто дается ссылка. Понятие родителя к ним не применимо.
То есть если взять пример
Код:
obj1 = {};
obj2 = {};
obj1.obj = obj2;
obj2.obj = obj1;
То обратившись к obj1.obj, а по сути к obj2, то obj1 не будет является для родителем. Вообще ни как.
А можно еще вот так написать
Код:
obj1 = {};
obj1.obj = obj1;
И что, obj1 является теперь для себя же родителем?

И как ты собрался отличать ссылку на объект от самого объекта, мне тоже не понятно.
Также не понятно, почем "взлом" встроенных классов кажется тебе более правильным решением, чем создание подкласса с нужными свойствами и называя это "громоздко выглядит".

Хочется присечь рекурсию кода выше? Можно сделать так:
Код:
obj1 = {};
obj2 = {};
obj1.obj = obj2;
obj2.obj = obj1;
function a (o, p) {
	for (arg in o) {
		trace (arg + "=" + o[arg]);
		if (o[arg] != p) {
			a (o[arg], o);
		}
	}
}
a (obj1);


Последний раз редактировалось iNils; 15.05.2008 в 00:42.
Старый 15.05.2008, 09:35
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 15  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Цитата:
Сообщение от iNils Посмотреть сообщение
В отличии от мувиклипов, которое являются визуальными объектами и поэтому "физически" находятся в другом клипе и поэтому имеют родителей, объекты создаются в памяти и на них просто дается ссылка. Понятие родителя к ним не применимо.
То есть если взять пример
Код:
obj1 = {};
obj2 = {};
obj1.obj = obj2;
obj2.obj = obj1;
То обратившись к obj1.obj, а по сути к obj2, то obj1 не будет является для родителем. Вообще ни как.
Это не совсем так. В данном случае имеются:
1) два объекта у которых ОБЩИЙ родитель- _root или временная диаграмма, где они расположены.
2) в каждом из объектов есть ССЫЛКА на другой объект, естественно помещение ссылки в какой-то объект не значит, что он стал родителем.

В коде:
Код:
obj1={}
obj1.obj2={}
Объект obj1.obj2 имеет своим родителем объект obj1

Цитата:
Сообщение от iNils Посмотреть сообщение
И как ты собрался отличать ссылку на объект от самого объекта, мне тоже не понятно.
Если объект имеет родителем тот же объект, свойства которого просматриваются - то это не ссылка, а именно объект.

Цитата:
Сообщение от iNils Посмотреть сообщение
Хочется присечь рекурсию кода выше? Можно сделать так:
Код:
obj1 = {};
obj2 = {};
obj1.obj = obj2;
obj2.obj = obj1;
function a (o, p) {
	for (arg in o) {
		trace (arg + "=" + o[arg]);
		if (o[arg] != p) {
			a (o[arg], o);
		}
	}
}
a (obj1);
Хороший код. Но повиснет на троичном зацикливании... Что не случилось бы, если бы можно было различать ссылки и сами объекты.

Старый 15.05.2008, 09:55
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 16  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Сообщение от chingachgoog Посмотреть сообщение
Это не совсем так. В данном случае имеются:
1) два объекта у которых ОБЩИЙ родитель- _root или временная диаграмма, где они расположены.
Еще раз повторю. У объектов НЕТ родителей. Объекты не храняться в каком либо объекте, мувиклипе и т.п. Там храняться только ссылки на объекты, а сами объекты храняться в памяти.

Пример. Создаем мувиклип с объектом. Даем на объект ссылку и удаляем мувиклип. Мувиклипа нет, а объект который создавали якобы в нем, существует. Потому, что его в клипе и не было. Была только ссылка.
Код:
var mc:MovieClip = this.createEmptyMovieClip ("mc", 0);
mc.obj1 = {a:5};
var objLink = mc.obj1;
trace (mc + " | " + mc.obj1.a + " | " + objLink.a);
mc.removeMovieClip ();
delete mc;
trace (mc + " | " + mc.obj1.a + " | " + objLink.a);
Цитата:
Сообщение от chingachgoog
если бы можно было различать ссылки и сами объекты.
У тебя никогда не было и не будет самого объекта, только ссылка на него.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 15.05.2008, 11:11
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 17  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
iNils, спасибо!

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

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

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


 


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


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