Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Отличие Sprite от DisplayObject и прочего (http://www.flasher.ru/forum/showthread.php?t=137689)

Psycho Tiger 21.03.2010 12:33

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

iNils 21.03.2010 15:50

Что вы придумываете? У Sprite на 6 свойств больше (buttonMode, dropTarget, graphics, hitArea, soundTransform, useHandCursor), чем у DisplayObjectContainer + два метода (startDrag, stopDrag). Чем это раздражает?

asterion 21.03.2010 21:23

koIIImarik, а как же вы тогда используете "DisplayObject или DisplayObjectContainer"???? Потому что их действительно нельзя создать. Но, правда, если я не ошибаюсь, ошибки не вызовет если переменной-наследнику класса DisplayObject обявить типом DisplayObject. Разве что так...

koIIImarik 21.03.2010 22:30

2 iNils:
Да, точно, как-то раньше и не замечал, что их нельзя создавать, наверно просто объявлял тип данных для объектов при необходимости.

2 asterion:
Вы абсолютно правы, я объявлял такие типы данных.

Котяра 22.03.2010 09:56

Проще говоря DisplayObject это класс Машина
Sprite - это конкретная модель, например ВАЗ 2109,
MovieClip - например, ВАЗ 2121
т.е. нельзя купить (создать) абстрактную Машину - это всегда либо Девятка(Sprite), либо Нива(MovieClip).
Обе машины могут ехать, а могут и не ехать))
Только в ниве добалено свойство - "раздатка" и "полный привод".
Расширяя класс девятки вы навешиваете своего тюнинга: быдлоспойлеры, тонировка стёкол, надпись HOOLIGAN на заднем стекле...
Но девятка не перестаёт быть девяткой, также как не перестаёт быть машиной (хотя это заявление, в данной аналогии можно оспорить)))))

NBVestal 22.03.2010 10:46

Цитата:

Сообщение от iNils (Сообщение 894505)
DisplayObject и DisplayObjectContainer - абстрактные классы, их нельзя создать.

Но вот можно например создать переменную с тимпом DisplayObject:

Код AS3:

var obj:DisplayObject;

Чем она будет отличаться от спрайта?

Код AS3:

var obj:Sprite;

Есть предположение, что границей объекта, или я не прав?

А за вышесказанные объяснения о наследовании и доп. свойствах объектов благодарю - стало понятней)

Wolsh 22.03.2010 10:53

Тем что Вы не сможете вызвать у
Код AS3:

var obj:DisplayObject

методы класса Sprite.

Котяра 22.03.2010 11:11

Цитата:

Сообщение от NBVestal (Сообщение 894712)
Код AS3:

var obj:DisplayObject;


этим вы не создали объект, а создали переменную которая ссылается на объект типа
DisplayObject ( Машина - доступны методы "ехать", "не ехать").

создание происходит так:

Код AS3:

var obj:DisplayObject = new DisplayObject ()

Цитата:

ArgumentError: Error #2012: DisplayObject$ class cannot be instantiated.

NBVestal 22.03.2010 11:27

Ну про создание я понимаю, но вот к примеру в библиотеке есть мувиклип с линком на экспорт "boom". Чем

Код AS3:

var tekushee:DisplayObject;
tekushee = new boom();

будет отличаться от

Код AS3:

var tekushee:Sprite;
tekushee = new boom();

?

Котяра 22.03.2010 11:37

тем что tekushee может быть кроме спрайта и мувиклипом и текстфилдом и битмапой. (в первом случае) а во втором только спрайтом
ЗЫ не надо tecushee - назовите currentObject )


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

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