![]() |
Отличие Sprite от DisplayObject и прочего
Чем отличается тип Sprite от DisplayObject ? И вообще, в чём соль этого DisplayObject? При изменения типа объекта со Sprite на DisplayObject разницы никакой не могу увидеть. Может, кто-то разъяснит?
|
|
Документацию то я читал...просто хотелось бы на конкретном примере, а то не совсем въезжаю
|
Если не въезжаете, то для начала вам надо почитать что-нибудь по общей теории ООП и наследованию)))
|
В ActionScript 3.0 все появляющиеся на экране в приложении элементы принадлежат к типу экранных объектов. В пакет flash.display входит класс DisplayObject, который является базовым классом, расширяемым рядом других классов. Эти классы представляют разные типы экранных объектов, включая векторные фигуры, фрагменты роликов и текстовые поля.
Если вам необходим объект, который будет служить контейнером для других экранных объектов (рисование на экранном объекте с помощью ActionScript), выберите один из подклассов DisplayObjectContainer: • Sprite (если объект будет создан только с помощью ActionScript или в качестве базового класса для заказного экранного объекта, который будет создаваться и обрабатываться исключительно средствами ActionScript). • MovieClip (если вы создаете переменную, относящуюся к символу фрагмента ролика, созданному в инструменте разработки Flash). • Если вы создаете класс, который будет связан с символом фрагмента ролика в библиотеке Flash, выберите один из указанных ниже подклассов DisplayObjectContainer в качестве базового класса вашего класса: • MovieClip (если связанный символ фрагмента ролика имеет содержимое более чем в одном кадре) • Sprite (если связанный символ фрагмента ролика имеет содержимое только в первом кадре) Все просто. |
Цитата:
потом сели в мерседес. там есть руль и колеса. между этими двумя представителями автогигантов нет разницы, если их рассматривать как средства передвижения Однако, я думаю, что sprite отличается от movieclip но ни тот ни другой не отличаются друг от друга, если их рассматривать как DisplayObject ибо все они суть одно - displayobject |
Цитата:
|
2 Crenth:
Выше уже написали, что основное отличие Sprite от Movie Clip в том, что второй поддерживает возможность работы с временной шкалой (читай создавать в клипе несколько кадров). В качестве своих 5-ти копеек к основному вопросу добавлю: Так уж получилось, что чаще использую Sprite, чем DisplayObject или DisplayObjectContainer, хотя во многих ситуациях функционал Sprite не нужен. На сколько я знаю, Sprite реализует интерфейс для программного рисования (свойство graphics у клипов), а DisplayObject и DisplayObjectConatiner — нет. |
ну да, все верно.
мерседес позволяет перемещаться по шкале времени а жигули, увы :) |
Цитата:
|
Вот это сильно раздражает кстати, часто нужен просто контейнер, чтобы его двигать, а Sprite для этого кучу ненужной ерунды ещё создаёт. В принципе, ерунда не мешает, но не красиво.
|
Что вы придумываете? У Sprite на 6 свойств больше (buttonMode, dropTarget, graphics, hitArea, soundTransform, useHandCursor), чем у DisplayObjectContainer + два метода (startDrag, stopDrag). Чем это раздражает?
|
koIIImarik, а как же вы тогда используете "DisplayObject или DisplayObjectContainer"???? Потому что их действительно нельзя создать. Но, правда, если я не ошибаюсь, ошибки не вызовет если переменной-наследнику класса DisplayObject обявить типом DisplayObject. Разве что так...
|
2 iNils:
Да, точно, как-то раньше и не замечал, что их нельзя создавать, наверно просто объявлял тип данных для объектов при необходимости. 2 asterion: Вы абсолютно правы, я объявлял такие типы данных. |
Проще говоря DisplayObject это класс Машина
Sprite - это конкретная модель, например ВАЗ 2109, MovieClip - например, ВАЗ 2121 т.е. нельзя купить (создать) абстрактную Машину - это всегда либо Девятка(Sprite), либо Нива(MovieClip). Обе машины могут ехать, а могут и не ехать)) Только в ниве добалено свойство - "раздатка" и "полный привод". Расширяя класс девятки вы навешиваете своего тюнинга: быдлоспойлеры, тонировка стёкол, надпись HOOLIGAN на заднем стекле... Но девятка не перестаёт быть девяткой, также как не перестаёт быть машиной (хотя это заявление, в данной аналогии можно оспорить))))) |
Цитата:
Код AS3:
Код AS3:
А за вышесказанные объяснения о наследовании и доп. свойствах объектов благодарю - стало понятней) |
Тем что Вы не сможете вызвать у
Код AS3:
|
Цитата:
DisplayObject ( Машина - доступны методы "ехать", "не ехать"). создание происходит так: Код AS3:
Цитата:
|
Ну про создание я понимаю, но вот к примеру в библиотеке есть мувиклип с линком на экспорт "boom". Чем
Код AS3:
Код AS3:
|
тем что tekushee может быть кроме спрайта и мувиклипом и текстфилдом и битмапой. (в первом случае) а во втором только спрайтом
ЗЫ не надо tecushee - назовите currentObject ) |
имхо лучше вернуться к началу обсуждения и юзать спрайты когда нам не надо трогать таймлайн и мувики когда надо, то что у спрайта на пару методов \ св-в больше чем у диплейобджектконтейнера имхо роли особо не играет)
|
имхо - нужно юзать то, что нужно юзать.
если всегда будут спрайты - юзать спрайты. если могут быть не только спрайты, а любой отображаемый объект - юзать DisplayObject или DisplayObjectContainer - если нужна интерактивность (добавление листенеров на события мыши) |
Цитата:
Хочется класс который имеет 2 метода: addChild() и removeChild(). |
Цитата:
Код AS3:
|
С отличием и происхождением Sprite и DisplayObject всё понятно...
А вот каково отличие DisplayObject и DisplayObjectContainer ? Методом смены типа переменных я их так и не нашёл...с виду всё одинаково, или я чего-то не учёл... |
iNils, я тоже так могу :) Только практического смысла в этом 0. Хотя, наверно, моё желание бред на 100%.
|
Вложений: 1
Все дело в наследовании:
|
NBVestal DisplayObject не содержит чайлдов (у него нет методов addChild, removeChild, addChildAt и т.д.)
|
Цитата:
Цитата:
|
Книга Программирование на ActionScript 3.0
http://dl.************/u/3296887/flas...Script_3.0.pdf Страница 301 |
iNils, а интересно как с событиями работать в таком классе )
|
| Часовой пояс GMT +4, время: 00:47. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.