Инжект связей при компиляции
На сцене есть прямоугольник - Sprite.
Так же в проекте есть класс RotateSprite. Код AS3:
Или можно допустить, что существует некий третий класс, который при компиляции заинжектит связь... Если такое возможно, то как это реализовать? Какие либо махинации с метаданными?... Ещё варианты?... Конечная цель сего действия - крутящий прямоугольник на сцене. Код класса RotateSprite до момента компиляции и соответственно после компиляции - БЕЗ ИЗМЕНЕНИЙ!. В RotateSprite дописывать руками ссылку на прямоугольник - нельзя! |
Цитата:
Добавлено через 5 минут Можно сделать "декорирования" или при добавлении в список отображения передавать прямоугольник в метод, где его будет крутить. Но это не будет подменой extends. |
Такого инжекта в as3 нет. Если пользуетесь fla -> swc/swf в качестве библиотеки с ассетами, отнаследуйтесь от класса нужного мувиклипа, в котором и будет нарисован прямоугольник. Либо нарисуйте прямоугольник в graphics-контейнере экземпляра класса RotateSprite, либо создайте экземпляр прямоугольника в этом классе, либо передайте ссылку на этот прямоугольник и рулите им (композиция).
|
Товарищи, мне кажется, что вы забываете про управление / передачу контекста вызова. Например:
Код AS3:
|
А если просто расширить этот прямоугольник классом RotateSprite? Так можно?
|
Цитата:
|
Разумеется, множественное наследование аналогично Пайтоновскому в AS3 так просто не получить. Да и зачем. Эзотерика это всё, но если очень надо - пожалуйста:
1. Вспоминаем реализацию наследования на прототипах, например, как в JS; 2. Смотрим вот это; 3. Примешиваем Proxy, контролируем каждый access & call, и перенаправляем куда надо, не забыв про подмену контекста исполнения; 4. Можно реализовать гетДеседентс и доступ к атрибутам ( ".." и "@" ) 5. А ещё можно попытаться найти мой старенький MagicObject, замешанный как раз на Proxy. Там гордиться особо не чем, но идею объяснит. Добавлено через 1 минуту А вообще есть Haxe для таких вещей. Добавлено через 7 минут MagicObject & post. |
Цитата:
|
Часовой пояс GMT +4, время: 17:00. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.