Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.10.2013, 13:49
zaidite вне форума Посмотреть профиль Отправить личное сообщение для zaidite Найти все сообщения от zaidite
  № 1  
Ответить с цитированием
zaidite

Регистрация: Dec 2008
Сообщений: 41
Question Инжект связей при компиляции

На сцене есть прямоугольник - Sprite.

Так же в проекте есть класс RotateSprite.

Код AS3:
public class RotateSprite extends Sprite 
{
     public function RotateSprite()
     {
          addEventListener(Event.ENTER_FRAME, _rotate);
     }
 
     private function _rotate (event:Event)
     {
          this.rotation += 1;
     }
 
}
Каким образом их можно связать друг с другом, чтобы при компиляции RotateSprite стал наследоваться именно от Sprite прямоугольника и начал бы крутить именно этот прямоугольник?

Или можно допустить, что существует некий третий класс, который при компиляции заинжектит связь...
Если такое возможно, то как это реализовать?

Какие либо махинации с метаданными?...

Ещё варианты?...

Конечная цель сего действия - крутящий прямоугольник на сцене. Код класса RotateSprite до момента компиляции и соответственно после компиляции - БЕЗ ИЗМЕНЕНИЙ!.

В RotateSprite дописывать руками ссылку на прямоугольник - нельзя!

Старый 20.10.2013, 14:04
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 2  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
чтобы при компиляции RotateSprite стал наследоваться именно от Sprite прямоугольник
Подменить extends нельзя. Можно придумать миллион способов реализации, но это будет всё та же передача ссылки. Из - за слова Инжект в голову приходит, что Вы пользуетесь фраймворком, но там не все так просто.

Добавлено через 5 минут
Можно сделать "декорирования" или при добавлении в список отображения передавать прямоугольник в метод, где его будет крутить. Но это не будет подменой extends.

Старый 20.10.2013, 14:10
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 3  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Такого инжекта в as3 нет. Если пользуетесь fla -> swc/swf в качестве библиотеки с ассетами, отнаследуйтесь от класса нужного мувиклипа, в котором и будет нарисован прямоугольник. Либо нарисуйте прямоугольник в graphics-контейнере экземпляра класса RotateSprite, либо создайте экземпляр прямоугольника в этом классе, либо передайте ссылку на этот прямоугольник и рулите им (композиция).
__________________
тут я

Старый 21.10.2013, 12:04
~~~ вне форума Посмотреть профиль Отправить личное сообщение для ~~~ Посетить домашнюю страницу ~~~ Найти все сообщения от ~~~
  № 4  
Ответить с цитированием
~~~
 
Аватар для ~~~

блогер
Регистрация: Nov 2003
Адрес: 117593, Россия, Москва
Сообщений: 211
Записей в блоге: 2
Отправить сообщение для ~~~ с помощью ICQ Отправить сообщение для ~~~ с помощью AIM Отправить сообщение для ~~~ с помощью Yahoo Отправить сообщение для ~~~ с помощью Skype™
Товарищи, мне кажется, что вы забываете про управление / передачу контекста вызова. Например:
Код AS3:
_rotate.call(myTargetAsThis, event);
В AS3 полная свобода в плане динамики и полиморфизма: вы можете, например, расширять (наследоваться от) класса, который 1) расширяет Proxy; 2) подменяет контекст по вашему желанию. Таким образом можно реализовать хоть множественное наследование. Я уж не говорю про некое подобие конструирования классов и их экземпляров в рантайме
__________________
WebLog:http://flashimp.ru
IDE: http://Visuvio.com

Старый 21.10.2013, 12:14
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 5  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
А если просто расширить этот прямоугольник классом RotateSprite? Так можно?

Старый 28.10.2013, 23:22
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 6  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
В AS3 полная свобода в плане динамики и полиморфизма: вы можете, например, расширять (наследоваться от) класса, который 1) расширяет Proxy; 2) подменяет контекст по вашему желанию.
Когда я в первые прочёл эти слова, то понял их слишком однозначно - что да, можно сделать множественное наследие. Но ведь невозможно сделать множественное наследие? По сути это будет класс в котором будут создаваться разные классы к свойствам которых можно добраться через геттер этого супер класса?

Старый 28.10.2013, 23:41
~~~ вне форума Посмотреть профиль Отправить личное сообщение для ~~~ Посетить домашнюю страницу ~~~ Найти все сообщения от ~~~
  № 7  
Ответить с цитированием
~~~
 
Аватар для ~~~

блогер
Регистрация: Nov 2003
Адрес: 117593, Россия, Москва
Сообщений: 211
Записей в блоге: 2
Отправить сообщение для ~~~ с помощью ICQ Отправить сообщение для ~~~ с помощью AIM Отправить сообщение для ~~~ с помощью Yahoo Отправить сообщение для ~~~ с помощью Skype™
Разумеется, множественное наследование аналогично Пайтоновскому в AS3 так просто не получить. Да и зачем. Эзотерика это всё, но если очень надо - пожалуйста:
1. Вспоминаем реализацию наследования на прототипах, например, как в JS;
2. Смотрим вот это;
3. Примешиваем Proxy, контролируем каждый access & call, и перенаправляем куда надо, не забыв про подмену контекста исполнения;
4. Можно реализовать гетДеседентс и доступ к атрибутам ( ".." и "@" )
5. А ещё можно попытаться найти мой старенький MagicObject, замешанный как раз на Proxy. Там гордиться особо не чем, но идею объяснит.

Добавлено через 1 минуту
А вообще есть Haxe для таких вещей.

Добавлено через 7 минут
MagicObject & post.
__________________
WebLog:http://flashimp.ru
IDE: http://Visuvio.com

Старый 28.10.2013, 23:52
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 8  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
Эзотерика это всё, но если очень надо - пожалуйста:
Спасибо! Ответ знал, но не смог не спросить)

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:52.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
Инжект связей , связи , связь кода с объектом
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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