Просмотр полной версии : Как отключить tabEnabled сразу для всех MovieClip?
джонатан
23.10.2010, 23:23
Здравствуйте! Подскажите, как на AS3, реплизовать вот такой AS2 код:
MovieClip.portotype.tabEnabled = false;
Спасибо.
А вы уже пробовали и у вас не получилось?
Кстати правильно будет - prototype.
Так не будет работать, и правильно, потому что свойство это не в прототипе. Не пытайтесь переделать встроенные классы плеера, это как объять необъятное, у вас все равно не получится.
джонатан
24.10.2010, 23:19
Ну я имел ввиду, как сделать подобное, чтобы у всех объектов сразу стал tabEnabled = false
koIIImarik
24.10.2010, 23:43
На 100% не уверен, но по-моему вашу задачу решает следующий код, прописанный в корневом классе приложения:
this.tabEnabled = false;
this.tabChildren = false;
При беглом тесте в моей флешке, вроде, жёлтая рамка при табуляции не появляется.
Вопрос был о MovieClip. Как вариант, унаследуйте его и реализуйте необходимую функциональность. Соответственно, в приложении используйте экземпляры кастомного класса.
koIIImarik
25.10.2010, 09:49
2 dimarik:
Специально сейчас попробовал унаследовать главный класс приложения от MovieClip, а не от Sprite, но жёлтые рамки не появляются так же.
koIIImarik, в Вашем примере рамок не будет вообще. Вообще. Не будет. Вы ставите запрет на их отображание начиная с root иерархии дисплейлиста приложения. Т.е. у всех наследников InteractiveObject, входящих в дисплейлист не будет ни одной рамки. Неужели этот так трудно понять? Если вопрос ставился именно о наследниках MovieClip, а вопрос именно так и ставился, то вариант через прототипы был бы подходящим, если бы "tabEnabled", как заметил wvxvw было бы прототипным.
джонатан
25.10.2010, 15:02
Всем спасибо.
Psycho Tiger
25.10.2010, 16:31
2 dimarik:
Специально сейчас попробовал унаследовать главный класс приложения от MovieClip, а не от Sprite, но жёлтые рамки не появляются так же.
Главное от InteractiveObject унаследоваться - а Sprite, MovieClip или TextField это дело 10.
джонатан
25.10.2010, 18:12
Дело 10? Это что еще за шифр? :)
Psycho Tiger
25.10.2010, 18:17
Дело десятое.
джонатан
25.10.2010, 19:08
Аааа, чёт не догадался я :)
super.tabEnabled = false;
super.tabChildren = false;
super.focusRect = false;
super.stage.stageFocusRect = false;
В руте.
джонатан
28.10.2010, 16:19
Супер, спасибо, это получается будет применено к суперклассу, т.е. extends MovieClip, а если скажем для текстовых полей? Отдельный класс сделать можно и наследоваться от текстфилда и по такой же схеме?
cleptoman
28.10.2010, 16:33
не будет оно применено к суперклассу
данная запись показывает, что используется метод определенный в суперклассе, а не переопределенный в наследнике (если он был переопределен).
и в данном случае вам без разницы от какого вы дисплейОбжекта наследуетесь. вопрос в иерархии. факт в том, что если написать
super.tabChildren = false;
в рутовом классе, то все это будет применяться ко всем детям и детям детей и....
Немного опередили )
Супер, спасибо, это получается будет применено к суперклассу, т.е. extends MovieClip.
Это будет применено ко всем DisplayObject определенной ветки дисплей-листа.
super указывает на то, что будет использовано свойство или метод, объявленные выше в иерархии классов. tabEnabled, focusRect объявлены в InteractiveObject, tabChildren - в DisplayObjectContainer.
Прошу заметить, что иерархия классов и иерархия дисплей-листа - это разные понятия.
"В руте" - означало объект документ-класса приложения. Это Самый Верхний уровень в дереве дисплейлиста приложения. Выше только Stage (если приложение запускается из этого же swf) или Ветка Родителя (инстанс Loader'а, которым загрузили swf).
tabChildren запрещает перемещение фокуса табуляцией по... детям. Запретив перечислять в Самом Главном Родителе, автоматом добиваемся запрета во всех остальных его ветках и листьях. Осталось запретить самого Родителя, поставив ему tabEnabled = false.
koIIImarik
01.11.2010, 01:43
2 etc:
Вы привели участок кода:
super.stage.stageFocusRect = false;
Я попробовал в своей тестовой флешке написать это и удалить tabEnabled/tabChildren, результатом оказалось то, что рамка табуляции так же пропала. Подскажите, для чего нужно прописывать tabEnabled/tabChildren если и stageFocusRect достаточно, чтобы убрать рамку выделения?
koIIImarik, ну фокус же все равно будет переходить по мувикам. Чтобы этого не происходило, отключаем ещё и tabChildren.
koIIImarik
01.11.2010, 22:05
Так и думал, спасибо за ответ =)
спасибо! код помог!
но пришлось сократить своё флешку до одного кадра с двух и убрать "стоп" так как она дико лажала с моими кнопочками и крутящимся курсором... (прелоадер всё ровно не стал ставить... не большая получилась)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.