Actionscript 3.0 Тип и класс OPP - PullRequest
0 голосов
/ 05 марта 2010

В чем разница между var myObject: Sprite = new Sprite ();и var myObject: Sprite = new MovieClip ();

Ответы [ 3 ]

1 голос
/ 05 марта 2010

MovieClips и Sprite являются отдельными классами, хотя и связаны друг с другом, потому что MovieClip расширяет Sprite.Таким образом, MovieClip обладает всеми теми же возможностями, что и Sprite, и добавляет еще больше, в основном связанных с анимацией на временной шкале (play (), stop (), gotoAndPlay (), addFrameScript () и т. Д.)

Поскольку MovieClip имеет все те же возможности, что и Sprite, вы можете назначить объект MovieClip переменной, типизированной как Sprite.

var myObject : Sprite = new MovieClip();

Sprite, однако, не разделяет все функции MovieClip, поэтому это не работаетнаоборот:

// Will not work
var myObject : MovieClip = new Sprite();

Если вы хотите узнать цепочку наследования для определенного класса, ознакомьтесь с документацией, например, для MovieClip :.Вы можете видеть, что он расширяет Sprite, который, в свою очередь, расширяет InteractiveObject и т. Д.

В терминах, не зависящих от языка, это называется наследованием, одной из сильных сторон которого является полиморфизм .

0 голосов
/ 05 марта 2010

Разница в том, что

var myObject : Sprite = new Sprite();

объявляет новую переменную типа Sprite и назначает ее с новым Sprite объектом, тогда как

var myObject : Sprite = new MovieClip();

объявляет новую переменную типа Sprite и назначает ее с новым MovieClip объектом.

MovieClip наследуется от Sprite, поэтому нет проблем с наложением MovieClip на Sprite. Есть некоторые различия между MovieClip и Sprite. Основное отличие состоит в том, что MovieClip имеет временную шкалу, а спрайт - нет.

0 голосов
/ 05 марта 2010

Один из них не прав, а один из них:)

var myObject:Sprite = new Sprite(); 

нормально, вы говорите, что это тип Sprite (бит после myObject :), а затем вызываете конструктор Sprite после '=': new Sprite ();

В другом вы все еще говорите, что это тип Sprite (myObject: Sprite), затем вызываете конструктор MovieClip, когда говорите new MovieClip ();

Если вы хотите создать мувиклип:

var newMC:MovieClip = new MovieClip();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...