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

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

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

Регистрация: May 2007
Адрес: Saint-Petersburg
Сообщений: 136
Отправить сообщение для progman с помощью ICQ
По умолчанию virtual, перегрузка и наследование - есть ли в AS3?

помогите плизз разобраться а то в манах не понял нифига как делать:
вопрос раз про наследование классов и конструктор с параметрами:
Код AS3:
public class BaseObject extends BaseObject 
{
	public function BaseObject(  player: int )
	{		
		m_player  = player;
	}
}
 
public class BaseBuilding extends BaseObject 
{
// как правильно записать конструктор для BaseObject?
	public function BaseBuilding(  player: int ) 
	{		
	}
}
вопрос два - про наследование и виртуальные функции:
Код AS3:
public class BaseObject
{
//есть ли аналог такой функции С++:
	virtual void destroy( ) = 0;
 
	public function create( ) : Boolean
	{		
		return true;
	}
}
 
public class BaseBuilding extends BaseObject 
{
// как правильно вызывать метод класса и вызывать метод родительского класса?
	public function create( ) : Boolean
	{	
		//С++ синтаксис явно не катит (((
		return BaseObject::create();
	}
}
вопрос три про перегрузку:
Код AS3:
public class pgSprite extends BaseObject 
{
//как реализовать перегруженные функции?
	public function render( ) : void
	{	
	}
 
	public function render( x: int, y: int) : void
	{	
	}
}
__________________
fast restart: *((int*)0) = 0;

Старый 20.09.2009, 17:59
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
1. Конструктор родителя вызывается через super()
Код AS3:
super(player);
2. Любой метод (кроме помеченных как final) можно переопределить в потомках через override.
Код AS3:
public override function create():Boolean
Родительский метод вызывается через super
Код AS3:
super.create();
Деструкторов в AS3 нет.

3. Перегрузки в AS3 нет. Можно пометить параметры как необязательные и нетипизированные, и в зависимости от реально переданного типа внутри метода определить нужное поведение.
__________________
тонкий тролль, осеянный благодатью

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

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
1.
Код AS3:
public function BaseObject (player:int) {
	super(player);
	...
}
2. Вроде нету в АС3 виртуальных, насколько я помню. А зачем Вам дестройер? Есть GC;

3. Ооп-верной перегрузки (с изменением сигнатуры функции) тоже вроде нету, можно обойти ее передав Object и определять типы внутри функции и/или заюзать неопределенное количество входных параметров.

Если в чем-то не прав, сильно не бейте.

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

Регистрация: May 2007
Адрес: Saint-Petersburg
Сообщений: 136
Отправить сообщение для progman с помощью ICQ
Цитата:
Сообщение от enepx Посмотреть сообщение
1.
А зачем Вам дестройер? Есть GC;
а я ему не верю, все массивы и объекты созданные через new хочу сам убивать.
__________________
fast restart: *((int*)0) = 0;

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

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
Цитата:
а я ему не верю, все массивы и объекты созданные через new хочу сам убивать
если есть хоть одна ссылка на объект, он не убъется. вам просто нужно следить, чтобы было как можно меньше зависимостей
Цитата:
virtual void destroy( ) = 0;
любой метод, кроме помеченных как final, является виртуальным.
чистовиртуальные функции задать не получится. используйте интерфейсы - аналог абстрактных классов в c++
__________________
я могу стать всем, если только захочу

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
В AS3 есть всего 2 объекта которые позволяют форсировать их уничтожение: BitmapData.dispose() и Loader.unloadAndStop() [доступно только в 10м плеере]. Все остальные объекты самостоятельно вы удалить не можете.
__________________
Hell is the possibility of sanity

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

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Все остальные объекты самостоятельно вы удалить не можете.
Динамические можно удалить с помощью delete.

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от enepx Посмотреть сообщение
Динамические можно удалить с помощью delete.
речь идет об удалении и отчистки не дожидаясь GC
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
Сообщение от enepx Посмотреть сообщение
Динамические можно удалить с помощью delete.
delete - это как удаление файла в системе, удаляется только метка, а destruct() если бы такой был, это было бы как если вы поверх старого файла нули записали, т.е. полное физическое уничтожение. delete может удалить только ссылку на объект, но если ссылок несколько, то ничего с объектом не случится.
__________________
Hell is the possibility of sanity

Старый 21.09.2009, 10:34
Felicast вне форума Посмотреть профиль Отправить личное сообщение для Felicast Найти все сообщения от Felicast
  № 10  
Ответить с цитированием
Felicast
 
Аватар для Felicast

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
Цитата:
Сообщение от wvxvw Посмотреть сообщение
delete - это как удаление файла в системе, удаляется только метка, а destruct() если бы такой был, это было бы как если вы поверх старого файла нули записали, т.е. полное физическое уничтожение. delete может удалить только ссылку на объект, но если ссылок несколько, то ничего с объектом не случится.
delete - скорее как удаление жесткой ссылки на файл (в *nix). пока есть хоть одна ссылка, файл считается не удаленным. как только все ссылки удалены, занимаемая файлом область считается свободной
__________________
я могу стать всем, если только захочу

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

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

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


 


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


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