![]() |
Namespaced methods overriding.
Вопрос касается объявления кастомных неймспесов, создания методов с ними и их переопределение.
Сразу оговорюсь что пользуюсь intellij idea 12+. Я могу определить методы в своем неймспесе и их использовать внутри класса, в котором они определены, но не могу переопределить их в дочерних классах, так как на них ругается компилятор(синтаксический анализор идеи молчит). Для примера я привел небольшую иерархию как она не работает. Есть такая структура: Код AS3:
Пожалуйста помогите разобратся с этой темой, кто шарит. З.Ы. Я перешарил весь форум в поисках ответа или годного примера, но его не нашел. Помню был тред в котором обсуждалась возможность перегрузки методов во флеше и кто-то хвастался как он ловко запилил неймспейсы для использования "своей перегрузки" в своей игрушке( фича изменяла режим работы какой-то внутриигровой хреновины: нормальный и турбо) В общем если кто-то это помнит или встречал буду очень признателен за ссылку. |
Сейчас не на чем попробовать, но вообще доступ к члену пространства имен либо через :, либо через ::. Т.е. я бы попробовал:
Код:
override function namespace_1:foo (arguments) { ... }Код:
override function namespace_1::foo (arguments) { ... } |
Цитата:
Сначала должно идти ключ. слово override, потом неймспейс. тут пример в конце http://help.adobe.com/en_US/ActionSc...0204-7f9e.html Код AS1/AS2:
|
У меня тоже не получилось заставить наследника видеть объявленные в пакете неймспейсы.
Если в наследнике объявить заново неймспейсы с теми же литералами (uri), то все работает. Либо объявить неймспейсы в суперклассе, но опять же, прописав литералы руками (поскольку это константы, ссылки на объявленные вовне неймспейсы не сработают, как и ссылки на литералы вовне // строковые константы в отдельном файле). |
Вложений: 1
Рабочий пример с переопределением метода область видимости которого определена неймспейсом
Вложение 29870 ТС. немного не правильно подошел к реализации. |
Цитата:
2) Задача была именно в том что бы метод, вызывающий занеймспейсеный метод был в том же классе и наследовался. В общем у тебя структура не такая как описал я в примере. 3) и самое главное - никаких use namespace в классе. заметь что неймспейс может менятся динамически и то что ты написал не подходит. |
надеюсь в этот раз я правильно понял.
Код AS3:
|
Цитата:
Цитата:
На данном этапе все свелось к 2 костылям: 1) Или в родительском классе сделать метод protected, namespace_1, namespace_2, и в потомках переопределять protected вариант, так как в них юзается только один вариант метода, а не оба. 2) В родителе заново определять неймспейс с теми же литералами(и отказаться от автоматических литералов, которые симпатичнее). |
Цитата:
Код AS3:
Хелп говорит, что первый метод должен работать, однако компилятор утверждает что не знает никакого test.Namespace1. При этом сами методы класса, объявленные с этим же неймспейсом, у него проблем не вызывают((( Явно какой-то баг. Добавлено через 14 минут То есть вот так нельзя (не может инициализировать неймспейсы ссылками на объявленные в пакете неймспейсы) Код AS3:
Код AS3:
Код AS3:
|
Ну у скиннера же есть пример как делать
http://dump.thekeppleeffect.com/NamespaceStrategy.as |
| Часовой пояс GMT +4, время: 16:11. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.