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

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

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

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 396
По умолчанию Несоответствие типов

Друзья, помогите, плиз. Столкнулся сегодня с непонятной мне проблемой.
Имею вот такие присвоения:

Код AS3:
	public class ActionEntity extends EventDispatcher
	{
		protected var _recipientMiscEffects: Vector.<CUEntity> = new Vector.<CUEntity>; // Вектор прочих обновлений реципиента в формате CharacterUpdates
 
		public function execute() : void // Запуск действия 
		{			
			if (_contact.recipientReadyUpdates) _recipientMiscEffects.push (_contact.recipientReadyUpdates);
		}
	}
 
	public class ContactEntity 
	{
		private var _recipientReadyUpdates: Vector.<CUEntity> = new Vector.<CUEntity>; 	// Готовые пакеты обновлений для реципиента 
 
		public function get recipientReadyUpdates() : Vector.<CUEntity> {return _recipientReadyUpdates}
	}
Вроде всё просто как грабли, но в рантайме получаю исключение:

[Fault] exception, information=TypeError: Error #1034: Type Coercion failed: cannot convert __AS3__.vec::Vector.<data.characterUpdates::CUEntity>@7bc5281 to data.characterUpdates.CUEntity.

Что за фигня? Никогда такого не встречал. Тип точно один и тот же. Единственное, что в векторе <CUEntity> могут встречаться экземпляры его наследников, но это никогда не мешало... В общем, я в полном тупике и не понимаю, где проверять.

Спасибо.
__________________
Не сломано - не чини!

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,428
Ну, у тебя вектор для элементов CUEntity, а ты суешь в него не CUEntity, а вектора.
_recipientMiscEffects.push (_contact.recipientReadyUpdates);

Текст ошибки говорит сам за себя: "Не могу сконвертировать Вектор.<CUEntity> в CUEntity".
__________________
Reality.getBounds(this);

Старый 19.09.2018, 09:52
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 3  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 396
wolsh, привет, рад видеть

Спасибо, и правда. Как-то я неадекватно хелп понял. Специально про push почитал, что принимает он один или несколько элементов для добавления в массив. Но вот почему я решил, что эти "несколько" можно упаковать в вектор, сам не понимаю

По итогу выкрутился топорно: пробежал через while и поэлементно перенёс, хотя это конечно порно.
__________________
Не сломано - не чини!

Старый 19.09.2018, 16:51
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 4  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 358
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
а может быть проще будет сделать слияние?
Код AS3:
if (_contact.recipientReadyUpdates) _recipientMiscEffects.concat(_contact.recipientReadyUpdates);
__________________
while(live()) { hope(); }

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

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,063
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
@ZergMaster ну создал ты новую коллекцию из двух, которую потом не используешь, и зачем?
__________________
местонахождение

Старый 20.09.2018, 19:25
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 6  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 358
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
СлаваRa почему не используешь? Я так понял, человеку нужно было сложить два вектора, для чего он пытался использовать push, но когда не вышло - делает push перебором через while. Вот я и предложил использовать concat
__________________
while(live()) { hope(); }

Старый 20.09.2018, 20:20
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 7  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,063
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
concat - не модифицирует исходный вектор, в отличие от splice
__________________
местонахождение

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

Регистрация: May 2008
Адрес: Питер
Сообщений: 358
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
а, ну да.
Код AS3:
var _tempRecipientMiscEffects: Vector.<CUEntity> = _recipientMiscEffects;
_recipientMiscEffects = _contact.recipientReadyUpdates ? _tempRecipientMiscEffects.concat(_contact.recipientReadyUpdates) : _tempRecipientMiscEffects;
__________________
while(live()) { hope(); }

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

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

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


 


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


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