|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jul 2011
Сообщений: 21
|
Экземпляр класса сам добавляет себя на таймлайн
Всех приветствую.
Подскажите, пожалуйста, как из конструктора класса обратиться к таймлайну? Спасибо! Единственный способ, который мне известен - передать конструкторы ссылку на таймлайн в качестве параметра. Но, мне кажется, это - изврат. Спасибо! |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Изврат - это самодобавление.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Jul 2011
Сообщений: 21
|
Что быстрее и короче?
или |
|
|||||
Регистрация: Jul 2011
Сообщений: 21
|
Прошу отвечать по теме, как обратиться к таймлайну из класса?
Спасибо! |
|
|||||
К какому таймлайну? =)
У всех наследников мувиклипа есть таймлайн. Для стейджа: Увы, согласен с Волшем, не стоит...
__________________
RTFM Последний раз редактировалось S-ed; 03.07.2011 в 01:39. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Это ActionScript а не хайку. Количество строк не имеет значения. Хотите в одну?
По теме – кроме как "передать ссылку на самого себя" – чтож, можно и поизвращаться. Можно хранить эту ссылку на контейнер где-нибудь в статическом свойстве какого-нибудь класса, который будет импортирован в SpriteClass. Больше способов обратиться куда-то из конструктора, хвала создателям, нет. К счастью AS3 ориентирован на ООП и предполагает, что все вопросы решают родители, а не новорожденные дети.
__________________
Reality.getBounds(this); |
|
|||||
Цитата:
Тем более, зачем вам ссылка на таймлайн? Добавляйте все в экземпляр главного класса и его дисплейных отпрысков. Есть еще stage, в конце концов.
__________________
тут я |
|
|||||
Регистрация: Jul 2011
Сообщений: 21
|
Спасибо всем ответившим!
Продолжая дискуссию: пишу класс, вычисляющий скорость движения курсора мыши. Каким образом метод моего класса будет получать текущую координату курсора мыши без доступа к объекту stage (читай: не имея ссылки на объект stage)? trace(stage) = null только если экземпляр этого класса не добавлен на таймлайн. НО! Добавить его туда я не могу, т.к. класс должен работать внутри других классов. Прикладываю код класса, если кто захочет помочь советом. На данный момент экз. класса получает ссылку на сцену в кач. параметра. Спасибо! package src.tools { import flash.events.*; import flash.display.Stage; /* Класс, позволяющий вычислять скорость движения курсора мыши и координаты курсора. Имеет 2 приватных свойства: ссылка на таймлайн и массив координат мыши Имеет 4 метода: возвращающают скорости по горизонтали и вертикали, а также координаты курсора в данный момент. */ public class MouseWatcher { // Свойство получит ссылку на сцену private var mStage:Stage; // Свойство, содержит координаты курсора в предыдущий момент времени // [0] - по горизонтали // [1] - по вертикали private var mPositionPrev:Array; // Конструктор класса public function MouseWatcher(mStage:Stage) { this.mPositionPrev = new Array(); // Определяем корневой таймлайн this.mStage = mStage; } // Метод возвращает горозонтальную скорость курсора // Один аргумент отвечающий за вывод скорости или ее модуля public function mouseSpeedHor(abs:Boolean):Number { var mousePosHorCurr:Number;//Текущая координата курсора var mousePosHorDiff:Number;// Разница между предыдущей и текущей координатой mousePosHorCurr = this.mStage.mouseX;// Текущая координата мыши mousePosHorDiff = mousePosHorCurr - this.mPositionPrev[0];// Разность координат this.mPositionPrev[0] = mousePosHorCurr;// Текущая координата сохраняется как устаревшая //Если надо найти модуль скорости ... if (abs) { // ... то мы его вычисляем mousePosHorDiff = Math.abs(mousePosHorDiff); } return mousePosHorDiff; } // Метод возвращает горозонтальную скорость курсора // Один аргумент отвечающий за вывод скорости или ее модуля public function mouseSpeedVert(abs:Boolean):Number { var mousePosVertCurr:Number;//Текущая координата курсора var mousePosVertDiff:Number;// Разница между предыдущей и текущей координатой mousePosVertCurr = this.mStage.mouseY;// Текущая координата мыши mousePosVertDiff = mousePosVertCurr - this.mPositionPrev[1];// Разность координат this.mPositionPrev[1] = mousePosVertCurr;// Текущая координата сохраняется как устаревшая if (abs) { // ... то мы его вычисляем mousePosVertDiff = Math.abs(mousePosVertDiff); } return mousePosVertDiff; } public function get mPosX():Number { return this.mStage.mouseX; } public function get mPosY():Number { return this.mStage.mouseY; } } } Последний раз редактировалось Kolyunya; 03.07.2011 в 02:42. |
|
|||||
Регистрация: Jun 2011
Сообщений: 18
|
Кхм... А Вы не считаете, что правильнее будет передать координаты аргументом в функции вычисляющие скорость? Одним из основных принципов ООП являеются слабое связывание и сильное зацепление. ТО есть класс должен быть максимально независим и выполнять минимум задач. Вот и пусть только считает. Нет?
P.S. Кстати хранить координату куда удобнее хотя бы в том же самом Point-е. У него есть куча удобных функций для работы с ними.
__________________
_____ Почему-то перманентно чувствует себя лезущим куда-то не туда занудой. Тяжёлый случай. >.< Последний раз редактировалось Seagull; 03.07.2011 в 02:49. |
|
|||||
Регистрация: Jul 2011
Сообщений: 21
|
Seagull, допустим, я так и сделаю.
Но вопрос СОВСЕМ в другом! Вопрос в том, КАК я эти координаты получу внутри класса??? Класс по расчету скорости ведь - вспомогательный. Его экземпляр нужно вызывать в других классах. А другие классы не знают, где стэйдж и где рут..... Последний раз редактировалось Kolyunya; 03.07.2011 в 03:31. |
Часовой пояс GMT +4, время: 15:42. |
|
« Предыдущая тема | Следующая тема » |
Теги |
class , root , stage |
|
|