Тема: error 1061
Показать сообщение отдельно
Старый 04.09.2010, 18:07
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 10  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
Сообщение от in4core Посмотреть сообщение
Ну да если объект диспейконтейнер просто тогда да. Согласен. Но тогда и надо писать так:

Код AS3:
if (parent is DisplayObjectContainer) {
( parent as MovieClip ).play();
}
разницу видим?
Видим. Это называется небезопасное приведение типов
Вот здесь вы проверяете: parent является ли DisplayObjectContainer - так он и так им является, иначе что это за parent. Единственная ситуация, когда это условие не проканает - parent == null.
Ладно проверили, убедились, что parent не null. Далее вы ему, сразу так не церемонясь, заявляете, что он MovieClip. Откуда такая уверенность? А что если он Sprite? Так вот если он будет Sprite, то (parent as MovieClip) в рантайме у вас превратиться в null. А у null вы попытаетесь вызвать метод play();, за что получите рантайм-ошибку.

Так что человек здесь все правильно делал:
Код AS3:
if( parent is MovieClip )
	(parent as MovieClip).play();
Вы какую мысль пытались донести?


Последний раз редактировалось i.o.; 04.09.2010 в 18:10.