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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.09.2005, 10:35
DarkRipple вне форума Посмотреть профиль Отправить личное сообщение для DarkRipple Найти все сообщения от DarkRipple
  № 1  
Ответить с цитированием
DarkRipple

Регистрация: Jun 2005
Сообщений: 16
Отправить сообщение для DarkRipple с помощью ICQ
По умолчанию как сделать свойство объекта свойством по умолчанию?

день добрый!
хочется сделать так, чтобы при обращении к объекту выводилось какое-либо его свойство (заранее определенное).
по типу как обращение к textfield выводит textfield.text.

то есть:
есть объект (item).
есть значение ("item_17"), допустим это будет свойство val.
и есть число ("17"), допустим это будет свойство id.

необходимо чтобы:
trace (item) выводило "item_17".
trace (item.val) выводило "item_17".
trace (item.id) выводило "17".

есть ли стандартные методы задания свойства по умолчанию? без создания новых классов и проч..
чтобы по возможности было минимум кода..

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

Регистрация: Aug 2005
Адрес: Москва
Сообщений: 825
Отправить сообщение для ffffff с помощью ICQ
тебе к мовиклипу надо это прикрутить?

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

Регистрация: Jun 2005
Сообщений: 16
Отправить сообщение для DarkRipple с помощью ICQ
Цитата:
Сообщение от ffffff
тебе к мовиклипу надо это прикрутить?
это облегчает/усложняет задачу?

полный смысл такой:
объект создается в рантайме, допустим при нажатии кнопки:
_root["item"] = new Object ();
потом я устанавливаю ему два свойства (имена любые)
_root["item"]["val"] = "item_17";
_root["item"]["id"] = "17";
(все в кавычках потому что все имена я загружаю извне)
это то как я сейчас реализовал.

теперь мне надо при нажатии на другую кнопку получить значение свойства (допустим VAL) обращаясь только к объекту, а не к его свойству.
чтобы trace(_root["item"]) вывел "item_17".

может есть вариант решения не через объект?
можно конечно создать невидимый textField и работать через свойство "text", но мне не хотелось бы использовать интерфейсные объекты..

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

Регистрация: Jul 2005
Сообщений: 225
Отправить сообщение для Dimchansky с помощью ICQ
var val=_root["item"]["val"];
var id=_root["item"]["id"];
trace ("val = "+val+"; id = "+id);

ctrl+enter

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

Регистрация: Jun 2005
Сообщений: 16
Отправить сообщение для DarkRipple с помощью ICQ
Цитата:
Сообщение от Dimchansky
var val=_root["item"]["val"];
var id=_root["item"]["id"];
trace ("val = "+val+"; id = "+id);
ctrl+enter
один из нас чего-то недопонял..
попробую по другому:
я знаю что у меня есть объект _root.my_obj (создал где-то в далеких просторах кода). я знаю что у него есть несколько свойств, одно из которых например называется value (ему присвоено значение).
теперь, не зная имени этого свойства, я хочу получить его значение просто обращаясь к _root.my_obj.

в идеале я бы хотел вообще избавиться от свойства VALUE:
_root.my_obj = "кирпич";
_root.my_obj.width= 37;
_root.my_obj.height = 15;
_root.my_obj.length = 15;

но так, естественно, не работает!

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

Регистрация: Jul 2005
Сообщений: 225
Отправить сообщение для Dimchansky с помощью ICQ
видимо я не понял вопрос
Цитата:
_root.my_obj.width= 37;
_root.my_obj.width= 37;
_root.my_obj.height = 15;
это почему же так нельзя? можно

а вот _root.my_obj = - это есть конструктор объекта, и кирпич в правой стороне равенства недопустим. Честно говоря я так и не понял суть твоего вопроса:
Цитата:
теперь, не зная имени этого свойства, я хочу получить его значение просто обращаясь к _root.my_obj.
как ты можешь не знать имени свойства твоего объекта, если ты его сам конструируешь?

Старый 07.09.2005, 15:30
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 7  
Ответить с цитированием
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
  № 8  
Ответить с цитированием
Iv
 
Аватар для Iv

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

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

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

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

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

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

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


 


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


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