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

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

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

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
Код:
this.setMyObjectClass = function() {
	delete this.setMyObjectClass;
	var MyObject = function () {
		this.init();
	};
	var tmp = MyObject.prototype.__proto__=Object.prototype;
	tmp.init = function() {
	};
	tmp.addProperty("val", function () {
		return this.value;
	}, function (value) {
		this.value = value;
	});
	tmp.toString = function() {
		return this.val;
	};
	_global.MyObject = MyObject;
	ASSetPropFlags(_global, 'MyObject', 7, 1);
};
this.setMyObjectClass();
//
_root["item"] = new MyObject();
_root["item"]["val"] = "item_17";
_root["item"]["id"] = "17";
trace(_root["item"]);

Старый 07.09.2005, 15:36
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 12  
Ответить с цитированием
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
а вообще этот вопрос - следствие неправильной организации проекта.
дефолтная переменная задается для класса.
если у тебя разное поведение объектов при одинаковом обращении,
следовательно тебе нужно делать разные классы.
вот и всё.

Старый 07.09.2005, 15:44
DarkRipple вне форума Посмотреть профиль Отправить личное сообщение для DarkRipple Найти все сообщения от DarkRipple
  № 13  
Ответить с цитированием
DarkRipple

Регистрация: Jun 2005
Сообщений: 16
Отправить сообщение для DarkRipple с помощью ICQ
Цитата:
Сообщение от BitSky
а вообще этот вопрос - следствие неправильной организации проекта.
дефолтная переменная задается для класса.
если у тебя разное поведение объектов при одинаковом обращении,
следовательно тебе нужно делать разные классы.
вот и всё.
спасиба, я уже понял..
вообще подход неправильный был.
мне теперь просто, уже отстраненно от проекта, интересно сделать что-то вроде:

_root.item = new Object();
_root.item.property01 = "это оно!";
_root.item.setDefaultProperty ("property01"); // вот такую функию сделать хочу
trace(_root.item); // "это оно!"

Старый 07.09.2005, 16:21
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 14  
Ответить с цитированием
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
Object.prototype.setDefaultProperty = function(str) {
this.toString = function() {
return this[str];
};
};
_root.item = new Object();
_root.item.property01 = "это оно!";
_root.item.setDefaultProperty("property01");
trace(_root.item)

Старый 07.09.2005, 16:22
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 15  
Ответить с цитированием
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
можно еще добавить

this.valueOf = function() {
return this[str];
};

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

Регистрация: Jun 2005
Сообщений: 16
Отправить сообщение для DarkRipple с помощью ICQ
оно самое! то что я и хотел (:
спасиба bitSky!

вопрос: что дает второй вариант? отличий в работе я не заметил с ним или без него..
а trace (_root.item.valueOf()) работает в обоих случаях..

Старый 08.09.2005, 13:34
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 17  
Ответить с цитированием
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
не все методы при работе с объектами
выдергивают его значение с помощью
toString()
иногда для преобразования типов объектов
используется valueOf().
например сравнение двух дат
elapsed = any_date < today_date
сначала приводит даты к числовому типу
с помощью valueOf и затем уже сравнивает два числа.
хм.... это я с недосыпу...
говоря что приводит даты к числовому типу, ввожу в заблуждение...
дата (и объекты некоторых других классов)
живут в простом (числовом или строковом) виде
а для юзверя возвращаются в разном другом виде с помощью методов.

опять жа посмотри на Date для примеру.
это класс имеющий "простой вид", т.е. в его основе
данные простого типа (число миллисекунд с 1970 года... не помню точно...)

- надеюсь я тебя окончательно запутал

Старый 08.09.2005, 14:31
DarkRipple вне форума Посмотреть профиль Отправить личное сообщение для DarkRipple Найти все сообщения от DarkRipple
  № 18  
Ответить с цитированием
DarkRipple

Регистрация: Jun 2005
Сообщений: 16
Отправить сообщение для DarkRipple с помощью ICQ
нет (:
твои надежды не оправдались, мне все понятно.
я так и предполагал что там замороки с типами, но не нашел подходящего чтобы проверить. теперь все ясно.
еще раз спасиба!
щас попробую сделать чтоб работало в обратную сторону..

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

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

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


 


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


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