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

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

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

Регистрация: Sep 2010
Сообщений: 47
По умолчанию describeType и типы параметров конструктора

Ковырялся в исходниках SwiftSuspenders и наткнулся на такой коммент (org.swiftsuspenders.injectionpoints.ConstructorInjectionPoint)
Цитата:
In many cases, the flash player doesn't give us type information for constructors until the class has been instantiated at least once. Therefore, we do just that if we don't get type information for at least one parameter.
т.е в некоторых случаях describeType не отражает типы параметров конструктора, пока класс не будет инстанциирован хотя бы раз.
А в каких именно случаях?

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

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Дело в том что у конструктора есть статический инициализатор, он называется cinit в документации avm2 overview. Это обычная функция куда засунута инициализация статических констант в случае если они определены как результат вызова статической функции и ещё некоторые вещи. В принципе пока мы не используем этот класс он может быть не инициализирован. Возможно что разбор класса производится при инициализации класса. В обычной ситуации если не использовать класс то он и не вкомпилится. Я сделал флешку с принудительно вкомпиленными классами которые нигде не используются, и сделал
Код AS3:
trace(describeType(getDefinitionByName("TestClass")));
однако всё было описано корректно. Более извращённых ситуаций я не могу предположить. Сие тестировалось под дебаговым плеером версии 10.2. Статик инициализатор был вызван прямо после getDefinitionByName в полном соответствии с ожиданиями.
возможно этот баг относится к ранним версиям девятого плеера.
__________________
:)


Последний раз редактировалось Aquahawk; 08.01.2012 в 11:30.
Старый 08.01.2012, 03:12
Flashrunner вне форума Посмотреть профиль Отправить личное сообщение для Flashrunner Найти все сообщения от Flashrunner
  № 3  
Ответить с цитированием
Flashrunner

Регистрация: Sep 2010
Сообщений: 47
Цитата:
возможно этот баг относится к ранним версиям девятого плеера.
Да, так и есть. Но исправлен он был только в 10.1, как мне ответил автор библиотеки. А наблюдался он во всех случаях, когда не был инстанциирован класс.

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

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

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


 


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


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