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

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

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

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
По умолчанию Экземпляры одного класса могут изменять свойства друг у друга?

Обнаружилось случайно.
Это нормальное поведение или так лучше не делать?

Код AS1/AS2:
class class1 extends MovieClip {
	var ob:Object = new Object();
	var txt:TextField;
	function class1() {
		if (ob.name == undefined) ob.name = 'halo'
		else delete ob.name;
		txt.text = ob.name;
 
		if(ob.clips == undefined) ob.clips = new Array();
		var count = ob.clips.push(this);
		trace(count);
		if(count == 3) ob.clips[0].txt.text = 'Я могу тебя удалить';
	}
}
Код AS1/AS2:
for (var i = 0; i <= 5; i++) 
	this.attachMovie('class1', 'c' + i, i, {_y:i * 90});

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

Регистрация: Nov 2008
Сообщений: 528
Код AS1/AS2:
class class1 {
	var ob:Object = new Object();    //на практике я обнаружил, что такое выражение делает переменную статичной, хотя так, по идее, не должно быть. поэтому так лучше не делать.
	static var ob1:Object= new Object();  // если хотите использовать одну переменную на весь класс - объявляйте так. (в этом случае инициализация уместна)
 
	function class1() {
		// ...
	}
}


Последний раз редактировалось Stargazer; 09.05.2009 в 17:12.
Старый 09.05.2009, 17:46
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 3  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Объекты со сложным типом данных инициализируйте в конструкторе.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 09.05.2009, 20:39
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Mnilionic, это проблемы реализации классов в AS2, лучше не объявлять сложные типы данных вне методов класса.

Старый 09.05.2009, 21:15
Mnilionic вне форума Посмотреть профиль Отправить личное сообщение для Mnilionic Найти все сообщения от Mnilionic
  № 5  
Ответить с цитированием
Mnilionic
 
Аватар для Mnilionic

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
то есть так верно:
Код AS1/AS2:
class class1 extends MovieClip {
	static var ob:Object;
	var txt:TextField;
	function class1() {
		if (!ob){
			ob = new Object();
			ob.clips = new Array();
		}
		var count = ob.clips.push(this);
		if(count == 3) ob.clips[0].txt.text = 'привет первенцу';
	}
}
понятно. Всем спасибо.


Последний раз редактировалось Mnilionic; 09.05.2009 в 21:18.
Старый 09.05.2009, 21:40
Stargazer вне форума Посмотреть профиль Отправить личное сообщение для Stargazer Найти все сообщения от Stargazer
  № 6  
Ответить с цитированием
Stargazer

Регистрация: Nov 2008
Сообщений: 528
Цитата:
Сообщение от Mnilionic Посмотреть сообщение
то есть так верно: ...
Верно. Это статическая переменная. Она создаётся один раз на весь класс и доступна в контексте класса (а не экземпляра).

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

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

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


 


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


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