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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.09.2016, 21:59
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 21  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
Цитата:
, но откуда у нас к нему доступ?
Доступ к статичным методам и свойствам(т.н. методы и свойства класса) имеется из любого места кода, без надобности создавать экземпляры класса.Аналогично ты можешь где угодно написать Math.PI и получить значение пи.
Цитата:
Почему нет ф-ции конструктора в DisplayManager?
Потому что он не нужен т.к. экземпляр класса по сути нигде не создается
Цитата:
Какой класс расширяет DisplayManager?
Object
Цитата:
Для чего метод
Это аналог STAGE в твоем коде, только тут не stage,а рут и в него добавляются твои экраны.
Соответственно в любом месте кода ты можешь написать
Код AS3:
DisplayManager.rootDO
и это будет контейнер в котором содержится все дисплей обжекты приложения.

Старый 18.09.2016, 22:04
lesnoj вне форума Посмотреть профиль Отправить личное сообщение для lesnoj Найти все сообщения от lesnoj
  № 22  
Ответить с цитированием
lesnoj
 
Аватар для lesnoj

Регистрация: Mar 2014
Сообщений: 27
  • Что происходит в DisplayManager проверке
    Код AS3:
    if (curScreen !=-1 && screens && screens[curScreen].parent) {
    ?
  • Почему curScreen= -1?

Старый 18.09.2016, 22:15
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 23  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
curScreen - номер текущего показанного экрана.Если никакой экран не был показан, номер текущего экрана =-1, соответственно перед показом нового экрана предыдущий экран скрывать не надо т.к. его нет.

Старый 21.09.2016, 20:29
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 24  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от undefined Посмотреть сообщение
А что не так, тип *?
Потому что вы никак не сможете в compile time работать с этим типом *.
Вы же не сможете никак понять конкретный его тип.

Как вы будете обращаться к методам и свойствам объекта new cl(), если у него нет типа во время компиляции?
А вдруг там этого метода нет. Ну прост ошибся в o.сeilResult. Заметили, что в этой конструкции буковка "с" кириллическая? Ну вот... А компилятор бы заметил.
Объявляя объекту тип "*" вы обрекаете новичка на тонну трудноустранимых ошибок, львиную часть которых обработал бы компилятор, не давая даже скомпилить приложение.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от dimarik Посмотреть сообщение
Потому что вы никак не сможете в compile time работать с этим типом *.
Вы же не сможете никак понять конкретный его тип.

Как вы будете обращаться к методам и свойствам объекта new cl(), если у него нет типа во время компиляции?
А вдруг там этого метода нет. Ну прост ошибся в o.сeilResult. Заметили, что в этой конструкции буковка "с" кириллическая? Ну вот... А компилятор бы заметил.
Объявляя объекту тип "*" вы обрекаете новичка на тонну трудноустранимых ошибок, львиную часть которых обработал бы компилятор, не давая даже скомпилить приложение.
Полностью согласен.
Я лично вообще не использую тип * уже давно. Когда был новичком, натыкался на такие проблемы, о которых уже написал dimarik.
__________________
Ко мне можно и нужно обращаться на ты)

Старый 21.09.2016, 20:41
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 26  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
Цитата:
Сообщение от dimarik Посмотреть сообщение
Потому что вы никак не сможете в compile time работать с этим типом *.
Вы же не сможете никак понять конкретный его тип.

Как вы будете обращаться к методам и свойствам объекта new cl(), если у него нет типа во время компиляции?
А вдруг там этого метода нет. Ну прост ошибся в o.сeilResult. Заметили, что в этой конструкции буковка "с" кириллическая? Ну вот... А компилятор бы заметил.
Объявляя объекту тип "*" вы обрекаете новичка на тонну трудноустранимых ошибок, львиную часть которых обработал бы компилятор, не давая даже скомпилить приложение.
ну так не new cl(), а new cl() as DisplayObject.Тип вполне конкретный.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от undefined Посмотреть сообщение
ну так не new cl(), а new cl() as DisplayObject.Тип вполне конкретный.
Ну а тогда что тебе мешает написать вместо зведочки DisplayObject?
Какой смысл писать неизвестный тип, если ты все равно его приводишь к известному?
__________________
Ко мне можно и нужно обращаться на ты)

Старый 21.09.2016, 20:45
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 28  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Тогда тем более не сможете обратиться к свойствам и методам этого объекта даже в compile time. Кому нужен обычный DisplayObject?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 21.09.2016, 20:50
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 29  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Полностью согласен.
Я лично вообще не использую тип * уже давно. Когда был новичком, натыкался на такие проблемы, о которых уже написал dimarik.
Иногда без него никак.Например если надо один и тот же метод сделать хэндлером для двух разных ивентов например:
Код AS3:
private function onClose(e:*):void {
    if (e is MouseEvent) {
        //закрываем по клику мыши
    } else if (e is KeyboardEvent) {
        //закрываем по нажатию кнопки на клаве
    }
}
Добавлено через 2 минуты
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Ну а тогда что тебе мешает написать вместо зведочки DisplayObject?
Какой смысл писать неизвестный тип, если ты все равно его приводишь к известному?
Например то, что getDefinitionByName возвращает тип Object.И привожу я то, что создается после new cl().

Добавлено через 3 минуты
Цитата:
Сообщение от dimarik Посмотреть сообщение
Тогда тем более не сможете обратиться к свойствам и методам этого объекта даже в compile time. Кому нужен обычный DisplayObject?
Как понять "обратиться к свойствам и методам в compile time"? Обращение происходит исключительно в runtime

Старый 21.09.2016, 21:13
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 30  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от undefined Посмотреть сообщение
Иногда без него никак.Например если надо один и тот же метод сделать хэндлером для двух разных ивентов например:
Код AS3:
private function onClose(e:*):void {
    if (e is MouseEvent) {
        //закрываем по клику мыши
    } else if (e is KeyboardEvent) {
        //закрываем по нажатию кнопки на клаве
    }
}
Все наследники Event наследуют Event. Дайте себе и людям хоть шанс. Туда не придет неEvent и это будет проверено при компиляции.

Код AS3:
private function onClose(event:Event):void {
    switch (true) {
        case event is MouseEvent:
            trace("MouseEvent");
            break;
        case event is KeyboardEvent:
            trace("KeyboardEvent");
            break;
    }
}
Цитата:
Как понять "обратиться к свойствам и методам в compile time"? Обращение происходит исключительно в runtime
Языки с высокой степенью типизации сделаны не для того, чтобы мы проверяли результат исполнения приложения во время исполнения. Нет, люди специально сидели и думали. Ночами не спали и придумали, что все равно всех рантайм кейсов не покроешь, и придумали типизацию. Когда ты пишешь свою нетленку на ActionScript 3.0 и нажимаешь Ctrl+B (Build all), то ты понимаешь где ошибся. Строгая типизация тебе помогает. Но представь себе, что вместо исправления ошибки в compile time ты заменяешь тип объекта на Object или *. Компилишь и все ок. Можно отдавать заказчику. А когда они словят этот эксепшен в рантайме? Может и никогда. Пофит сплошной. Приложуха сбилдилась и даже немного работает.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

Теги
классы , ООП

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

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


 


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


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