![]() |
|
||||||||||
|
|||||
|
А я до сих пор не увидел опровержений слов Wolsh'а.
Мы имеем дело с JIT, посему, вполне возможно, классы с захардкоденными типами вектора создаются в рантайме.
__________________
Тут мужик танцует и поёт про флэш |
|
||||||
|
Цитата:
var v: Vector.<MySprite> = new Vector.<MySprite>(); trace(v === Vector.<DisplayObject>(v));//false, т.к. это уже новый вектор Цитата:
Цитата:
Цитата:
Цитата:
private function newThisType(length:uint=0) : Vector$object { var v : Vector$object = new Vector.<type>(length); //v.type = this.type; return v; } private function newThisType(length:uint=0) : Vector$object { var v : Vector$object = new Vector(length); v.type = this.type; return v; } При создании класса в рантайм явный вызов castToThisType не потребовался бы. Поправьте если я не прав.
__________________
http://www.chessmax.ru |
|
|||||
|
Весьма любопытно, спасибо.
Скорее, Ваша правда.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Цитата:
Цитата:
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
Цитата:
Цитата:
__________________
http://www.chessmax.ru Последний раз редактировалось Inet_PC; 27.11.2011 в 17:28. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Вектор типа DisplayObject может принимать экземпляры Sprite, это естественно. Но с какой стати вектор типа Sprite должен принимать DisplayObject? Например, TextField? Повторюсь – я вижу баг не в том, как принимают аргумент функции, я считаю что как раз здесь все кошерно. Не кошерно, что компилятор позволяет создавать переменную типа Vector.<*> или Vector.<superclass> и записывать туда ссылку на созданный вектор конкретного подкласса. Получается, что у Вас есть вектор, принимающий любые типы (*) или подтипы superclass, о чем говорит тип переменной. Но на деле эта переменная указывает на вектор, способный работать только с конкретным типом. – не должно работать, так как подразумевает, что "в ячейки" типа Sprite могут быть записаны объекты типа DisplayObject. Дело то не в том, что уже записанные спрайты могут быть прочитаны как ДисплейОбжекты, это то естественно. Дело в том, как Вы будете дальше добавлять в этот вектор новые элементы? При записи то ситуация с типом "перевенута", и получается (псевдокод): Если бы создавался новый экземпляр вектора типа DisplayObject, способный работать с элементами типа DisplayObject, и заполнялся спрайтами из вектора типа Спрайт, то проблем нет. Но переменная только ссылается на экземпляр вектора типа Спрайт. Его элементы могут читаться в переменные типа DisplayObject
__________________
Reality.getBounds(this); |
|
|||||
|
Цитата:
Добавлено через 14 минут Пардон, посмотрел еще раз. Эта функция используется, в основном, в VectorImpl и, судя по-всему, предназначена для "замены" дженериков. Добавлено через 17 минут Кстати, можно попробовать воспользоваться способом использованным в VectorImpl (не проверял)
__________________
משיח לא בא משיח גם לא מטלפן Последний раз редактировалось alatar; 27.11.2011 в 18:13. |
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Цитата:
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
Wolsh
Я полностью с Вами согласен, это не правильно: Цитата:
Что Вы чаще в своих проектах используете вектор или массив?
__________________
http://www.chessmax.ru Последний раз редактировалось Inet_PC; 27.11.2011 в 23:59. |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:48. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|