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

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

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

Регистрация: Dec 2008
Сообщений: 88
По умолчанию Почему обьекты не одинаковые?

Есть класс

Код AS3:
package
{	
	public class NewsItem
	{
		private var _title:String;
		private var _description:String;
		private var _link:String;
 
		public function NewsItem(title:String, descrition:String, link:String) 
		{
			_title = title;
			_description = descrition;
			_link = link;
		}
 
		public function clone():NewsItem
		{
			var newsItemClone:NewsItem = new NewsItem(_title, _description, _link);
			return newsItemClone;
		}
 
		public function get title():String { return _title; }
 
		public function get description():String { return _description; }
 
		public function get link():String { return _link; }
 
	}
}
в основном классе пробую

Код AS3:
package  
{
	import flash.display.Sprite;
	import wer32.NewsItem;
 
	public class Main extends Sprite
	{
		public function Main() 
		{
			var news1:NewsItem = new NewsItem("1", "2", "3");
			var news2:NewsItem = news1.clone();
			trace(news1 == news2);
		}
	}
}
Трасер выдает false.

Стало быть объекты не одинаковы. Почему так происходит

Старый 26.05.2009, 17:56
Gal4enochek вне форума Посмотреть профиль Отправить личное сообщение для Gal4enochek Найти все сообщения от Gal4enochek
  № 2  
Ответить с цитированием
Gal4enochek

Регистрация: May 2008
Адрес: Днепропетровск
Сообщений: 151
Отправить сообщение для Gal4enochek с помощью ICQ
сравнение проходит не по полям объекта а по ссылкам. вы создали ДРУГОЙ объект, пусть с теми же значениями полей, но ДРУГОЙ. если вы измените объект news1, news2 не изменится, так как ссылка у него другая.
Напишите в вашем классе функция сравнения, что типа
Код AS3:
function compare(object :NewsItem):Boolean{
     return(
       this._title == object.title
       && this._description == object.descrition 
       && this._link ==  object.link
     );
}
И сравнивайте с помощью нее

Старый 26.05.2009, 17:57
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 3  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Потому что они разные инстансы=)
Допишите метод в NewsItem
Код AS3:
public function equals(newsItem:NewsItem):Boolean
{
    return (title == newsItem.title && description == newsItem.description && link == newsItem.link)
}
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 26.05.2009, 18:00
wer32 вне форума Посмотреть профиль Отправить личное сообщение для wer32 Найти все сообщения от wer32
  № 4  
Ответить с цитированием
wer32
 
Аватар для wer32

Регистрация: Dec 2008
Сообщений: 88
ОООО спасибо вам преогромнейшее
Примерно такие мысли были но уложить по полочкам как то не мог
еще раз спасибо

Старый 26.05.2009, 19:01
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 5  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Gal4enochek, compare по логике должен возвращать качественный результат сравнения. тобишь на сколько они разные. обычно это ( -1, 0, 1 ).

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

Регистрация: May 2008
Адрес: Днепропетровск
Сообщений: 151
Отправить сообщение для Gal4enochek с помощью ICQ
Ну сорри, Какое первое пришло в голову название метода, так и назвала
Критику учтем

Старый 26.05.2009, 19:43
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 7  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Вау синхронный постинг=)
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

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

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

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


 


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


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