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

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

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

Регистрация: Dec 1999
Адрес: Калининград
Сообщений: 235
Отправить сообщение для genius с помощью ICQ
По умолчанию [AS2.0] наследование static переменных

есть класс game.visual.VisualObject

Код:
class game.visual.VisualObject {	
    private var instanceNum:Number;	
    static private var instanceCount:Number = 0;

    private function countInstance():Void {
    	instanceNum = ++instanceCount;
    	TRACE(Flashout.DEBUG + "instanceNum=" + instanceNum);    	
    }
}
его наследуют 2 других класса, которые в конструкторе содержат вызов метода countInstance(). в итоге переменная instanceCount содержит количество всех экземпляров класса VisualObject.

мне же нужно, чтобы эта функция считала экземпляры конкретных классов (тех, которые наследуют VisualObject). как это можно сделать? возможно ли вообще? понятно, что если этот код вставить в код каждого класса - считать будет так как надо.

заранее спасибо.
__________________
вставьте подпись здесь

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

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

Старый 24.07.2005, 01:01
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™
вообще я бы сделал дополнительный класс
VOC (VisualObjectCounter) с методом addItem();
Код:
import game.visual.VisualObject;
class package.VOC {
private static var items:Array = new Array();

public static function addItem(item:VisualObject):Void {
items.push(item);
}

public static function getItem(index:Number):VisualObject{
return items[index];
}

pubcli static function getLength():Number {
return items.length
}
}
а в конструкторе VisualObject -
Код:
import package.VOC
class game.visual.VisualObject {	
    private var instanceNum:Number;	

    private function countInstance():Void {
VOC.addItem(this);   	
    }
}
ну и в конструкторах дочерних классов
Код:
private function Constructor() {
super();
}
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 24.07.2005, 01:58
genius вне форума Посмотреть профиль Отправить личное сообщение для genius Посетить домашнюю страницу genius Найти все сообщения от genius
  № 4  
Ответить с цитированием
genius
 
Аватар для genius

Регистрация: Dec 1999
Адрес: Калининград
Сообщений: 235
Отправить сообщение для genius с помощью ICQ
я опять неясно выражаюсь

смотри. есть SuperClass и SubClass (SubClass extends SuperClass). мне хотелось бы задать свойствами и методами SuperClass возможность для экземпляров SubClass считать себе подобных.

сейчас, когда я задаю переменную в SuperClass:

Код:
static private var instanceCount:Number;
при вызове конструктора

Код:
SubClass() {
instanceCount++;
}
instanceCount увеличивается для всех ПодКлассов SuperClass. мне же нужно, чтобы instanceCount была для каждого отдельного класса своя. но функциональность у неё должна быть абсолютно идентичная. я вот и думаю, как это сделать так, чтобы не пришлось глупо копировать один и тот же код в разные классы.

то есть мне нужно получить static функцию и переменные, которые при наследовании теряют связь с СуперКлассом.

ещё пример. есть класс VisualObject (некий объект на экране). есть ПодКлассы, которые реализуют конкретные объекты. так как объектов много, нужно их мувиклипы где-то размещать. для этого я ввожу свойство

Код:
class VisualObject {
static var private _mc_container:MovieClip;
}
дальше мне хочется, чтобы в каждом отдельном ПодКлассе это свойство было своё (опять нужен отрыв от СуперКласса).

как мне это сделать? неужели только copy/paste?
__________________
вставьте подпись здесь

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

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

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

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
хотя опять же я бы разделил функционал на несколько классов, пусть считают специальные коунтеры, можно создать там многомерный массив, который бы выдавал нужные вещи.

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

Регистрация: Nov 2003
Сообщений: 128
А если каунтеры хранить в отдельном хэш-массиве, к элементам которого обращаться через typeof(this)?

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

Регистрация: Dec 1999
Адрес: Калининград
Сообщений: 235
Отправить сообщение для genius с помощью ICQ
2Nirth: я попробую написать...

2MaxLife: typeof на все классы показывает "Object"
__________________
вставьте подпись здесь

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

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

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


 


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


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