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

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

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Я много работаю с GraphicsPath, поэтому безусловно Вектор. Собственно, я уже забыл, когда использовал массив)) Но реально, раньше никогда не приходилось задумываться о рассмотренных здесь вопросах. Имхо, адобовцы сделали что могли. Пока в ЕСМА дженерики не стандартизированы, чудо что хоть такой вектор появился.
__________________
Reality.getBounds(this);

Старый 28.11.2011, 11:57
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 42  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Я хоть убей не понимаю, как может "вектор, у которого все элементы могут быть только Спрайтами", перекастован в "вектор, у которого элементы могут быть чем угодно"
Ну, вероятно, это связано с тем, что на самом деле вектор - не типизированная структура. Вернее, типизация производится на этапе добавления элементов в вектор.
Более того, сейчас ссылку на тест не найду, но
Код AS3:
var vec:Vector.<Sprite> = new Vector.<Sprite>();
vec.push(new Sprite());
 
var s:Sprite = vec[0] as Sprite; // работает быстрее чем
var s:Sprite = vec[0];
__________________
...вселенская грусть

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

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
для размышления
Код AS3:
var a:Vector.<Number> = new Vector.<Number>();
trace("Vector.<Number> is Vector.<Number>:", a is Vector.<Number>);
trace("Vector.<Number> is Vector.<*>:", a is Vector.<*>);
trace("Vector.<Number> is Vector:", a is Vector);
trace("Vector.<Number> is Vector.<Object>:", a is Vector.<Object> );
trace("typeof(Vector.<Number>):",typeof(a));
trace("constructor:", a["constructor"]);
trace();
 
var b:Vector.<String> = new Vector.<String>();
trace("Vector.<String> is Vector.<String>:", b is Vector.<String>);
trace("Vector.<String> is Vector.<*>:", b is Vector.<*>);
trace("Vector.<String> is Vector:", b is Vector );
trace("Vector.<String> is Vector.<Object>:", b is Vector.<Object> );
trace("typeof(Vector.<String>):",typeof(b));
trace("constructor:", b["constructor"]);
trace();
 
var c:Vector.<Object> = new Vector.<Object>();
trace("Vector.<Object> is Vector.<Object>:", c is Vector.<Object>);
trace("Vector.<Object> is Vector.<*>:", c is Vector.<*>);
trace("Vector.<Object> is Vector:", c is Vector );
trace("Vector.<Object> is Vector.<Object>:", c is Vector.<Object> );
trace("typeof(Vector.<Object>):",typeof(c));
trace("constructor:", c["constructor"]);
trace();
 
var d:Vector.<int> = new Vector.<int>();
trace("Vector.<int> is Vector.<int>:", d is Vector.<int>);
trace("Vector.<int> is Vector.<*>:", d is Vector.<*>);
trace("Vector.<int> is Vector:", d is Vector );
trace("Vector.<int> is Vector.<Object>:", d is Vector.<Object> );
trace("typeof(Vector.<int>):",typeof(d));
trace("constructor:", d["constructor"]);
trace();
 
var e:Vector.<uint> = new Vector.<uint>();
trace("Vector.<uint> is Vector.<uint>:", e is Vector.<uint>);
trace("Vector.<uint> is Vector.<*>:", e is Vector.<*>);
trace("Vector.<uint> is Vector:",e is Vector );
trace("Vector.<uint> is Vector.<Object>:", e is Vector.<Object> );
trace("typeof(Vector.<uint>):",typeof(e));
trace("constructor:", e["constructor"]);
trace();
 
var f:Vector.<Boolean> = new Vector.<Boolean>();
trace("Vector.<Boolean> is Vector.<Boolean>:", f is Vector.<Boolean>);
trace("Vector.<Boolean> is Vector.<*>:", f is Vector.<*>);
trace("Vector.<Boolean> is Vector:",f is Vector );
trace("Vector.<Boolean> is Vector.<Object>:", f is Vector.<Object> );
trace("typeof(Vector.<Boolean>):",typeof(f));
trace("constructor:", f["constructor"]);
Результат
Код:
Vector.<Number> is Vector.<Number>: true
Vector.<Number> is Vector.<*>: false
Vector.<Number> is Vector: false
Vector.<Number> is Vector.<Object>: false
typeof(Vector.<Number>): object
constructor: [class Vector.<Number>]

Vector.<String> is Vector.<String>: true
Vector.<String> is Vector.<*>: true
Vector.<String> is Vector: false
Vector.<String> is Vector.<Object>: false
typeof(Vector.<String>): object
constructor: [class Vector.<*>]

Vector.<Object> is Vector.<Object>: true
Vector.<Object> is Vector.<*>: true
Vector.<Object> is Vector: false
Vector.<Object> is Vector.<Object>: true
typeof(Vector.<Object>): object
constructor: [class Vector.<*>]

Vector.<int> is Vector.<int>: true
Vector.<int> is Vector.<*>: false
Vector.<int> is Vector: false
Vector.<int> is Vector.<Object>: false
typeof(Vector.<int>): object
constructor: [class Vector.<int>]

Vector.<uint> is Vector.<uint>: true
Vector.<uint> is Vector.<*>: false
Vector.<uint> is Vector: false
Vector.<uint> is Vector.<Object>: false
typeof(Vector.<uint>): object
constructor: [class Vector.<uint>]

Vector.<Boolean> is Vector.<Boolean>: true
Vector.<Boolean> is Vector.<*>: true
Vector.<Boolean> is Vector: false
Vector.<Boolean> is Vector.<Object>: false
typeof(Vector.<Boolean>): object
constructor: [class Vector.<*>]
__________________
:)


Последний раз редактировалось Aquahawk; 28.11.2011 в 13:22.
Старый 28.11.2011, 13:34
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 44  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Это было ясно из исходников приведенных выше.
__________________
משיח לא בא
משיח גם לא מטלפן

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

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
так это значит что если в будущем добавятся ещё специальные векторы не только для интов и намбера, то они перестанут удовлетворять условию is Vector.<*>? Может нарушиться обратная совместимость. Бяка это получается.
__________________
:)

Старый 28.11.2011, 15:46
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 46  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Просто не использовать такое приведение и проблем не будет.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 28.11.2011, 22:54
incvizitor вне форума Посмотреть профиль Отправить личное сообщение для incvizitor Найти все сообщения от incvizitor
  № 47  
Ответить с цитированием
incvizitor
 
Аватар для incvizitor

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
2 топикстартер:

Вообще глобальный мепринимает Object

Так что наверное метод должен принимать Оbject. Работайте с ним по такому принципу:
Код AS3:
var v:Object = new Vector.<DisplayObject>(new Sprite());
if (Vector.<*>(v))
	trace("handle vector");
Компилятор не прочекает тип параметров Вашего метода, однако и параметры метода Vector он прочекать не сможет.

Кстати прикол:
Код AS3:
var v:Object = Vector.<Sound>(new Vector.<DisplayObject>());
trace(1);
Даже RTE не выдало =)
__________________
ranga

Старый 29.11.2011, 00:26
crazyone вне форума Посмотреть профиль Отправить личное сообщение для crazyone Найти все сообщения от crazyone
  № 48  
Ответить с цитированием
crazyone
 
Аватар для crazyone

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
Это потому что Vector.<Sound>(vector) создает новый вектор:
Цитата:
If a Vector is passed as the sourceArray argument and its base type is not T, or if an Array is passed and its elements are not all instances of data type T, an attempt is made to convert the values to the base type. If the values can be automatically converted, the result Vector contains the converted values. If no conversion can be made, an error occurs.
И хотя в хелпе написано "an error occurs", я наблюдал только картину, когда Vector.<Sound>(Vector.<Sprite>) возвращал вектор, заполненный сплошными null.

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

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

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


 


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


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