![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Привет еще раз. Помогите понять вот что:
private function init(e:Event):void{
e.target.addEventListener(MouseEvent.MOUSE_DOWN, startTest);
}
private function startTest(e:MouseEvent):void{
trace (e.target is Sprite);//true
test(e.target);//ошибка: Implicit coercion of a value with static type Object to a possibly unrelated type flash.display:Sprite.
test2(e.target);//работает
}
private function test(mc:Sprite):void{
mc.x += 50;
}
private function test2(mc:Object):void{
mc.x += 50;
}
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Вы пытаетесь передать в функцию абстракный объект, вместо Sprite. То, что ссылка указывает на Sprite, компилятор ещё не знает.
|
|
|||||
|
Ок. Спасибо, __etc. Запомню это, хотя не понятно все равно - если компилятор не знает, то кто же трэйсит тогда [object Sprite]?? И если передавать просто объект Object, то почему работает - ведь компилятор же не знает, что я передаю DisplayObject, почему пропускает тогда без ошибки? И что такое абстрактный объект? И откуда вы все это знаете?
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Трейс делает интерпретатор, а не компилятор. Ошибка у вас ещё на стадии компиляции, потому что компилятор проверяет все типы и не даст скомпилировать некоррентный код.
Из документации я все это знаю и из простейшего понятия типизации, а также того, что Object — dynamic. |
|
|||||
|
Волгоградец, я всегда пишу так
Может быть и не только Sprite же |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|