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

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

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

Регистрация: Jan 2009
Адрес: Одесса
Сообщений: 309
Отправить сообщение для Fatality с помощью ICQ
Question Зачем нужен кастинг ?

Здраствуйте. Объясните мне пожалуйста, зачем нужен кастинг ? Да да, именно зачем, а не что это такое. Проблемы как таковой нет, но есть здоровый интерес. Вот к примеру написал:
Код AS3:
package {
	import flash.display.Sprite;
	import flash.text.TextField;
	import flash.events.Event;
	import flash.events.MouseEvent;
	public class RootClass extends Sprite {
		private var txt:TextField;
		public function RootClass() {
			stage.addEventListener("click", onStageClick);
		}
		public function onStageClick(event:MouseEvent) {
			txt = new TextField();
			txt.type = "input";
			txt.x = event.stageX;
			txt.y = event.stageY;
			txt.addEventListener("added", onTxtAdded);
			addChild(txt);
		}
		public function onTxtAdded(event:Event) {
			trace(event.target);
			stage.focus = event.target as TextField;
		}
	}
}
Если убрать кастинг, то компилятор начнет материться о невозможности преобразовать тип Object в InteractiveObject. Тут впринципе все понятно, но какого тогда trace(event.target), выдает — [object TextField]. Это компилятор так издевается ? Если он и так знает, что это текстовое поле, то что он от меня хочет ?!

Старый 12.04.2009, 02:50
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 2  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
ну так trace не компилятор выдаёт, а уже плеер(виртуальная машина?) в процессе исполнения. а компилятор ругается во время компиляции.

Старый 12.04.2009, 02:56
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 3  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
трэйс выдаёт то, что выдаёт метод toString()

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

Регистрация: Jan 2009
Адрес: Одесса
Сообщений: 309
Отправить сообщение для Fatality с помощью ICQ
Цитата:
трэйс выдаёт то, что выдаёт метод toString()
Это и так понятно, только сути вопроса не меняет.

Старый 12.04.2009, 04:01
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 5  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
ну если это понятно, тогда зачем так яро обращено внимание в вопросе на этот факт?

кастинг нужен для того, что бы виртуальная машина не обращалась к объекту за списком классов и не искала в нём нужный класс. в случаи с методами/свойствами идёт ещё обращение к таблице методов всех классов, и поиск в ней нужного метода, потом попытка найти в динамических свойствах и т.д.

короче, Вы делает работу за ВМ, тем самым упрощая ей жизнь.

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

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
BlooDHounD, где можно подробнее почитать про работу виртуальной машины?
__________________
тонкий тролль, осеянный благодатью

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

Регистрация: Jan 2009
Адрес: Одесса
Сообщений: 309
Отправить сообщение для Fatality с помощью ICQ
Вот теперь понятно, большое спасибо BlooDHounD, а то меня начинал напрягать этот вопрос.

Старый 14.04.2009, 14:28
Smrad вне форума Посмотреть профиль Отправить личное сообщение для Smrad Найти все сообщения от Smrad
  № 8  
Ответить с цитированием
Smrad

Регистрация: Nov 2008
Сообщений: 205
Отправить сообщение для Smrad с помощью ICQ
Прикольно, а я думал, что даункасты не нужны. Т.е. использование собственно типа как id типа это всегда фейл.

Старый 14.04.2009, 14:44
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 9  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
GAIKER, в интернете.
Smrad, а даункасты и не нужны.

Старый 14.04.2009, 14:47
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 10  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Цитата:
Сообщение от Smrad Посмотреть сообщение
Прикольно, а я думал, что даункасты не нужны. Т.е. использование собственно типа как id типа это всегда фейл.
Не каждый Object есть TextField.

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

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

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


 


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


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