Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Наследование абстрактного базового класса FlexSDK (http://www.flasher.ru/forum/showthread.php?t=187234)

Sintesis 16.11.2012 03:17

Наследование абстрактного базового класса FlexSDK
 
Хочу создать экземпляр своего класса, но класс является наследником InteractiveObject, как это делается? И почему вызов конструктора таких классов приводит к ошибке? Где вообще лежит открытый код пакетов входящих в FlexSDK, хочется посмотреть.

Добавлено через 12 минут
Тут прочитал, что ни наследоваться ни вызывать их нельзя http://flasher.ru/forum/showpost.php...1&postcount=94
Вообще как так? А как например спрайт их наследует?

djyamato 16.11.2012 05:56

Для флэш билдера
Цитата:

Сообщение от Sintesis (Сообщение 1104644)
Где вообще лежит открытый код пакетов входящих в FlexSDK, хочется посмотреть.

Project->Properties->FlexCompiller->Configure Fle SDKs

Также Вы можете (по крайней мере во флэш билдере) нажать мышкой на интересующий Вас пакет (или переменную, да на что угодно почти) с зажатой клавишой Ctrl. Билдер откроет этот класс или перебросит к объявлению переменной.

caseyryan 16.11.2012 07:44

Цитата:

Также Вы можете (по крайней мере во флэш билдере) нажать мышкой на интересующий Вас пакет (или переменную, да на что угодно почти) с зажатой клавишой Ctrl. Билдер откроет этот класс или перебросит к объявлению переменной.
Не совсем так. Вообще, это есть (наверное) в любой IDE (to to declaration). В ФД нажатие F4 делает то же самое. Сомневаюсь, что кто-то из отписавшихся в этой теме не знал этого.
Но код в скомпилированых классах он не покажет. Переброс произойдет к модели класса, что-то на подобие интерфейса.
Код класса InteractiveObject, так же как и спрайта и мувиклипа, написан на С++, посмотреть их нигде нельзя. Они вшиты в плеер.
Я тоже как-то раньше упорно искал где их можно посмотреть.
Не знаю с чем связано нежелание adobe разрешить расширять его, но не думаю, что для этого потребовалось сделать что-то сложное.

Wolsh 16.11.2012 10:26

)) Да че уж там сложного.. достаточно посмотреть на классы, которые расширяют InteractiveObject, и подумать о том, как бы Вы сами написали на AS3 подобные: TextField, DisplayObjectContainer, SimpleButton (не наследующие контейнер! Контейнер на той же ветке. Никаких addChild() еще не существует в природе)... Есть мысли?
Классы плеера обеспечивают функциональность, которую невозможно написать на AS3. И здесь "внутренняя" линейка наследования, для разработчика на AS3 говорящая только о накоплении "интерфейсов", пока на вершине не образуется некий конечный класс, доступный для AS3-наследования.
В чем проблема то собственно? Хочется интерактивный шейп? Какой еще интерактивный объект можно создать, наследуя InteractiveObject? (напоминаю, контейнеров еще нет. Всё, что можно иметь как отображение, это Graphics). Мне правда интересно.

caseyryan 16.11.2012 12:09

Может это чистое любопытство? Реально нет ничего такого на АС3 для чего могло бы потребоваться наследование самого InteractiveObject, но на С++ исходники этих классов я бы сам с удовольствием посмотрел )

Sintesis 16.11.2012 15:44

Цитата:

Сообщение от caseyryan (Сообщение 1104669)
Может это чистое любопытство? Реально нет ничего такого на АС3 для чего могло бы потребоваться наследование самого InteractiveObject, но на С++ исходники этих классов я бы сам с удовольствием посмотрел )

например мне нужно слушать клавиатуру не в руте программы, что для этого делать? Передавать stage через несеколько классов?

Добавлено через 2 минуты
Цитата:

Сообщение от caseyryan (Сообщение 1104655)
Я тоже как-то раньше упорно искал где их можно посмотреть.

Так вроде недавно Adobe отпустили FlexSDK и сделали его опенрсорс?

Добавлено через 6 минут
Цитата:

Сообщение от Wolsh (Сообщение 1104661)
В чем проблема то собственно? Хочется интерактивный шейп?

Хочется просто класс умеющий слушать клавиатуру.
Попробовал наследоваться от Спрайт и на его стейдж повесить слушатели клавиш, но нет, не слушает, только корневой стейдж слушается или я что-то не так делаю?

caseyryan 16.11.2012 15:58

Цитата:

Так вроде недавно Adobe отпустили FlexSDK и сделали его опенрсорс?
Они не во флексе хранятся. А вшиты в плеер

Sintesis 16.11.2012 16:08

Цитата:

Сообщение от caseyryan (Сообщение 1104719)
Они не во флексе хранятся. А вшиты в плеер

А я раскатал губу... Так а какие ещё варианты с классом который может слушать клавиатуру?

udaaff 16.11.2012 16:34

Цитата:

Попробовал наследоваться от Спрайт и на его стейдж повесить слушатели клавиш, но нет, не слушает, только корневой стейдж слушается или я что-то не так делаю?
Стейдж один, вроде как.

in4core 16.11.2012 16:36

Цитата:

Так а какие ещё варианты с классом который может слушать клавиатуру?
Тоесть у вас не получается sprite.stage.addEventListener(keyboard...) так чтоли? Неправда - это будет работать

Sintesis 16.11.2012 16:49

Цитата:

Сообщение от in4core (Сообщение 1104732)
Тоесть у вас не получается sprite.stage.addEventListener(keyboard...) так чтоли? Неправда - это будет работать

Оно получается только в рутовом спрайте.
Цитата:

Сообщение от udaaff
Стейдж один, вроде как.

Ну вот(
А вообще да sprite.stage.addEventListener(keyboard...) везде работает, но для этого нужно унаследоваться от спрайт объявит переменную класа, прослушать добавился-ли стейдж и ещё добавть этот класс в список отображения, но зачем если нужен класс контроллер который просто должен обеспечить интерфейс с пользователем, а приходится добавлять его в список отображения.

Inet_PC 16.11.2012 17:52

Не пойму кто Вас заставляет наследоваться от InteractiveObject/Sprite? Передавайте ссылку на стейдж и все.

Sintesis 16.11.2012 18:02

Цитата:

Сообщение от Inet_PC (Сообщение 1104750)
Не пойму кто Вас заставляет наследоваться от InteractiveObject/Sprite? Передавайте ссылку на стейдж и все.

Этого как раз и хотел избежать.
Что одно, что другое решение не очень, прийдётся передать стейдж в один класс которому стейдж вообще не нужен, а потом передать в целевой класс или делать поезд из кучи точек, вместо того, чтоб просто унаследовать.
Интересно почему такая крепкая связь контроля и отображения в флеше?

djyamato 16.11.2012 18:05

Access Stage from anywhere in Actionscript 3
Или сделайте синглтон или статический класс, в который можно один раз "записать" стэйдж, далее брать из этого класса ссылку на стэйдж откуда угодно

Sintesis 16.11.2012 18:15

Цитата:

Сообщение от djyamato (Сообщение 1104754)
Access Stage from anywhere in Actionscript 3
Или сделайте синглтон или статический класс, в который можно один раз "записать" стэйдж, далее брать из этого класса ссылку на стэйдж откуда угодно

Да у меня в проекте есть такой статический класс он приносит загруженые ресурсы куда хочу, наверное и стейдж туда добавлю, но всё равно это не здорово и вопрос почему клавиатура так привязана будет не давать спать))

caseyryan 16.11.2012 19:50

Цитата:

Оно получается только в рутовом спрайте.
Совсем нет. Главное чтобы объект был в фокусе.

Sintesis 16.11.2012 19:58

Цитата:

Сообщение от caseyryan (Сообщение 1104779)
Совсем нет. Главное чтобы объект был в фокусе.

А, так может быть по этому интерактивный объект обязательно должен быть в дисплей листе.

caseyryan 16.11.2012 20:00

Вероятнее всего. Если текстовому полю привесить слушатель KEY_UP он будет срабатывать только когда курсор установлен в поле

Wolsh 16.11.2012 20:16

Обычная защита от воровства паролей и т.п. В том же духе, как лишь недавно отмененный запрет на клавиатуру в фуллскрине. Если флэш сможет слушать клавиатуру, когда фокус где-то в другом месте (например юзер вводит пароль на странице), то будет возможно тырить всё что впечатывает юзер. А что касается фокуса внутри самого флэш-приложения, то без него тоже никуда: как понять, какая кнопка должна нажаться, когда юзер жмет Enter на клавиатуре (про фокус текстфилдов думаю итак все понятно).

Котяра 17.11.2012 01:43

Цитата:

недавно отмененный запрет на клавиатуру в фуллскрине
Что-то я упустил этот момент. Можно подробности?

udaaff 17.11.2012 02:21

http://help.adobe.com/en_US/as3/dev/...e784-8000.html ?


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

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