Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.06.2013, 19:44
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 31  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 567
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Цитата:
И вообще, зачем вам "писать класс на основе DisplayObjectContainer"?
Вам дали Sprite/Shape/MovieClip - пользуйтесь.
А если я хочу закрытый контейнер?

Старый 07.06.2013, 20:10
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 32  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Для чего же тогда было создавать DisplayObject? Только для того чтобы в методах указывать тип переменной?
Не просто в методах, а в методах Списка Отображения, реализованных в плеере ("на с++"))) Это как интерфейс-метка IBitmapDrawable. Метка, что с этим объектом можно делать то-то и то-то. Ну и прицепом набор стандартных свойств типа ширины и высоты.
Цитата:
А если я хочу закрытый контейнер?
Занимай очередь.
__________________
Reality.getBounds(this);

Старый 07.06.2013, 20:38
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 33  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Цитата:
А если я хочу закрытый контейнер?
Боишься своего кода? Если все правильно сделать - "закрытый контейнер" не понадобится.

Код AS3:
public class ClosedContainer extends Sprite {
    public function ClosedContainer() { super(); }
    override public function addChild(child:DisplayObject):DisplayObject { return; }
    override public function addChildAt(child:DisplayObject, index:int):DisplayObject { return; }
    override public function removeChild(child:DisplayObject):DisplayObject { return; }
    override public function removeChildAt(index:int):DisplayObject { return; }
}
А внутри класса используешь super.addChild/removeChild.

Старый 07.06.2013, 21:15
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 34  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
MikroAcse, терпения не хватило переписать ВСЕ методы ДОКа? Там еще много-много вкусняшек, getChildAt(), getChildByName(), numChildren, tabChildren, mouseChildren, contains(), getChildIndex(), getObjectsUnderPoint(), setChildIndex(), swapChildren(), swapChildrenAt().
А теперь представь ту же ситуацию: некто видит что это Спрайт, пихает туда своё чадо и начинает с ним работать как ни в чем ни бывало. Компилятор молчит: вызов методов и свойств абсолютно законный. А в рантайме ошибка едет на ошибке и ошибкой погоняет.
Флэш уже пять лет живет с AS3, и все ништяк. Никто не говорит, что это ужасный баг, который похоронит технологию. Никто не говорит, что надо все бросать и вешать на каждый спрайт по менеджеру. Речь о красоте, как бы пафосно это ни звучало. О том, что Спрайт просто мегаизбыточен. У него полтора десятка публичных методов, убивающих накорню всякую инкапсуляцию. Методов, в 95% случаев не нужных вообще извне. Все они должны быть закрыты так, чтобы при необходимости вы могли создать общий доступ в наследнике. Но не открытый доступ по-умолчанию же! Вы когда класс пишете, старательно закрываете доступ ко всем его внутренностям. Приватные свойства, приватные функции. И только один-два метода сознательно(!) делаете публичными. А в это время в замке у шефа у вашего класса душа нараспашку, и любой объект извне может совершенно спокойно добавлять в него что попало и удалять его внутренние органы без разбора. Все то, на что вы сохраняли ссылки в приватных переменных, легко доступно извне в результате родовой травмы ДОК. И единственный ответ — сделай так, чтоб вся программа ломалась в рантайме, оверрайд же шь! Спасибо, конечно.
Я хочу, чтобы этих публичных свойств и методов НЕ БЫЛО вообще, в принципе. Хочу ДО, который "снаружи" не является контейнером вообще, но внутри дает полное API для работы с собственным списком отображения. Все публичные доступы я смогу написать сам. Мне это понадобится раз в полгода и займет четыре строчки, не родив ни одной ошибки.
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 07.06.2013 в 21:30.
Старый 07.06.2013, 23:14
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 35  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
... А зачем?
Что это за перестраховка от атомных взрывов? Когда я писал только на as3 я тоже болел чем-то таким.
Ошибка в рантайме при дебаге – вполне обычная ситуация. В 9 из 10 случаев эта ошибка не произойдёт если проэксклудить "лишние" с автокомплита. Сразу будет видно, что дёргать. В 1 из 10 случаев словить РТЕ – ну вот совсем не страшно. В Ruby или Python'е можно вообще приватные методы дёргать через :send. И дёргают, и живут, и код настолько красив и отDRYен, что такого в AS3 и встретить нельзя.

Красота – это прекрасно и чудесно. Только это всё таки просто код.

Старый 08.06.2013, 01:56
Final Hope вне форума Посмотреть профиль Найти все сообщения от Final Hope
  № 36  
Ответить с цитированием
Final Hope
Banned
[+5 04.06.13]
[+1 08.06.13]

Регистрация: May 2013
Сообщений: 52
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Я хочу, Хочу ДО
Wolsh, да всё-всё! Тише-тише! Уже все поняли, чего вы хотите. Вот: http://www.adobe.com/ru/support/contact/ Дело за малым.
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Только это всё таки просто код.
Который через сто лет даже в школе читать не будут.)

Старый 08.06.2013, 02:16
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 37  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Wolsh, я представляю, что мог бы написать про избыточность UI

Старый 08.06.2013, 02:18
Final Hope вне форума Посмотреть профиль Найти все сообщения от Final Hope
  № 38  
Ответить с цитированием
Final Hope
Banned
[+5 04.06.13]
[+1 08.06.13]

Регистрация: May 2013
Сообщений: 52
Да весь AS избыточен. В топку его. Машинный код - за ним будущее!

Старый 08.06.2013, 09:24
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 39  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Согласен с Wolsh, что избыточность методов чисто морально напрягает. Там ещё эвент диспетчер не всегда нужен. Но на практике это не приносит проблем, а иногда даже полезно. Вот недавно возился с minimalComps компонентами, пришлось в одном случае сверху насильно выдрать маску из компонента.
__________________
Дети не должны знать о своих родителях

Старый 08.06.2013, 20:35
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 40  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
... А зачем?
Что это за перестраховка от атомных взрывов? Когда я писал только на as3 я тоже болел чем-то таким.
Ошибка в рантайме при дебаге – вполне обычная ситуация. В 9 из 10 случаев эта ошибка не произойдёт если проэксклудить "лишние" с автокомплита. Сразу будет видно, что дёргать. В 1 из 10 случаев словить РТЕ – ну вот совсем не страшно. В Ruby или Python'е можно вообще приватные методы дёргать через :send. И дёргают, и живут, и код настолько красив и отDRYен, что такого в AS3 и встретить нельзя.

Красота – это прекрасно и чудесно. Только это всё таки просто код.
Давай все будет теперь public и без типизации? Работает и ладно.

Давай серьезно и без деградарующих примеров других языков? А то получается так: был AS1 и все торчало наружу. Появился AS2 и народ обрадовался, что есть классы, типизация, модификаторы доступа (хотя до private можно было легко достучаться через ['имя']). Появился AS3, народ от счастья с ума сходит от возможностей. Но проходит время и Psycho Tiger по сути говорит, что мы мучаемся и надо писать в стили AS1.

Собственно, Wolsh излагает то, о чем я ему душу изливал недели две назад. Я был страшно недоволен отсутствием примитивного контейнера для компонентов. Это не болезнь, это желание иметь законченный и целостный компонент. И не перестраховка от атомных взрывов, а защита от дурака. Я хочу быть уверенным, что мой компонент случайно не сломают добавив туда что нить через addChild. Или что загрузив в компонент свой спрайт, не сломают компонент через parent. И если поломки через addChild и тп, можно защитится через переопределение. То из-за parent придется переопределять все. А можно забить. Или же все реализовать в FP примитивный контейнер, где почти все методы и свойства protected и по необходимости делать реализацию для public. Плохо от этого точно не было бы.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:39.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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