Почему лучше использовать классы в AS3 - PullRequest
3 голосов
/ 03 февраля 2010

Мне не нравятся внешние файлы. Большинство разработчиков предпочитают это и утверждают, что это лучше. Объясните, почему лучше использовать классы в ActionScript 3.0.

Мои ActionScripts разные. Я убираю классы и вставляю их в Flash IDE. 9 из 10 раз работает нормально. У меня вопрос Сократов, но я действительно чувствую себя неосведомленным об этом, так как кода для того, что я пытаюсь сделать, меньше Веселитесь вместе с этим.

Вот учебник, который я проанализировал - "пример тестирования вывода клавиатуры"

//AFTER
//remove curly brackets and "outer shell of class definitions"
//remove class function "don't need it"
//function at bottom, remove "public", make sure it has a body {}
var _time_scale:Number = .25; 
var _frames_elapsed:int = 0; 
var _clip:MovieClip; 

function handleEnterFrame(e:Event):void { 
_frames_elapsed++; 
_clip.gotoAndStop(Math.round(_clip.totalFrames * _frames_elapsed * _time_scale)); 
}

//BEFORE
package { 
    import flash.display.MovieClip; 
    import flash.display.Sprite; 
    import flash.events.Event; 

    public class Main extends Sprite { 

        private var _time_scale:Number = .25; 
        private var _frames_elapsed:int = 0; 
        private var _clip:MovieClip; 

        public function Main():void { 
            _clip = new SomeClip; 
            addEventListener(Event.ENTER_FRAME, handleEnterFrame); 
        } 

        private function handleEnterFrame(e:Event):void { 
            _frames_elapsed++; 
            // we multiply the "real" time with our timescale to get the scaled time 
            // we also need to make sure we give an integer as a parameter, so we use Math.round() to round the value off 
            _clip.gotoAndStop(Math.round(_clip.totalFrames * _frames_elapsed * _time_scale)); 
        } 

    } 
}

Ответа может не быть, но должно быть определительное объяснение, которое имеет смысл.

Ответы [ 5 ]

1 голос
/ 03 февраля 2010

Я бы не сказал, что лучше использовать классы. Я бы сказал, что лучше следовать некоторому типу структуры и / или парадигмы, особенно при кодировании больших программ, которые нельзя просто скопировать и вставить. Actionscript дает вам много возможностей для структурирования. Вы можете придерживаться прототипной / бесклассовой парадигмы, кода с использованием только процедур и т. Д.

Однако, когда вы проходите мимо небольших программ, структура окупается в удобстве сопровождения.

1 голос
/ 03 февраля 2010

Это звучит как 2 вопроса:

1) Почему плохо помещать код в Flash IDE (CS4)?Во-первых, редактор во flash IDE исторически ужасен.Он просто не имеет функций, которые я ожидаю от редактора кода.

Во-вторых, может быть трудно найти код, который находится на временной шкале.

В-третьих, когда вы вносите измененияв ide и проверьте его в своем хранилище кода (вы используете контроль версий, верно?), изменения являются двоичными и не могут быть легко отслежены и распространены.

2) Почему хорошая ориентация объекта?Ориентация объекта - это инкапсуляция.Это не единственный способ сделать что-то, но в настоящее время он самый популярный.Вот страница, которая хорошо объясняет это: http://www.alagad.com/blog/post.cfm/what-does-object-oriented-programming-do-for-me

0 голосов
/ 04 февраля 2010

Ответ: «Это зависит».Я знаю, что это неубедительно, но это правда.

Моя личная философия - использовать классы, если у вас более 50 строк кода (по крайней мере, класс документа).

1) Использование классов даст вам все преимущества Объектно-ориентированного программирования Здесь я выделю некоторые из них:

  • Масштабируемость: вы можетеповторно использовать ваши классы, если вы решите, и создавать их разные экземпляры.На том же токене вы можете перенести класс в другой проект Flash, и он сразу же заработает.
  • Расширяемый / Наследование: Если вам нужно использовать тот же класс, но вам нужно сделать очень небольшие изменения, выможет создать дочерний или подкласс для наследования, а затем переопределить части, где вам нужно внести изменения.

2) Как упоминалось в предыдущем отзыве, Flash не предназначен для использования при кодировании.Несмотря на то, что за прошедшие годы он был значительно изменен для соответствия кодированию, ему все еще не хватает хорошего интерфейса кодирования.

3) Если у вас есть флеш-проекты, которые скрыты в слоях, их может быть сложно найти.Разделение вашего кода и анимации временной шкалы повысит удобство сопровождения ваших проектов.

В вашем примере, я думаю, что вполне нормально поместить его в ваш файл flash fla, если вы используете его только один раз, и вы никогда его не измените.

Но гипотетически давайте предположим, что вам нужно создать больше проектов Flash (FLA) или мувиклипов в тех же проектах, используя один и тот же код.Конечно, вы можете без проблем скопировать и вставить их в новые FLA-файлы или видеоклипы.Но когда / если вы хотите изменить _time_scale всех проектов, вам придется перейти к кадру, в котором находится код, и изменить его для каждого FLA.Представьте, что у вас есть 10 изменений в вашем коде.Если вы используете класс и помещаете его в общую область, все, что вам нужно сделать, это изменить код этого класса один раз и перекомпилировать все файлы FLA.

По моему опыту, 90% времени вам понадобитсякод, чтобы быть в классе.Остальные 10% - это когда у вас есть что-то действительно прямое и простое для выполнения, а код состоит всего из нескольких строк - например, метод navigateToURL (getURL) ... и т.д.

0 голосов
/ 04 февраля 2010
  • Классы способствуют логическому разделению вашего кода на повторно используемые объекты.
  • В свою очередь это помогает сделать вашу программу объектно-ориентированной.Есть веская причина, по которой C #, Java, Objective-C, AS3 являются объектно-ориентированными языками.
  • ОО-системы, как правило, хорошо масштабируются, построены на абстрактных данных реальных объектов (своего рода), тем самым делая ихлегче визуализировать, многократно использовать и инкапсулировать информацию несколько безопаснее.
  • Как уже упоминалось, внешние классы можно редактировать с помощью гораздо лучших IDE и управлять версиями.

И не говоря уже о всех подводных камнях временного кода.Единственный раз, когда я пишу код на временной шкале, это если я делаю быстрый эксперимент или тест класса.Обычно 40 строк кода макс.

0 голосов
/ 03 февраля 2010

Это отличный вопрос для обсуждения. + 1

Стив делает несколько замечательных замечаний, особенно следуйте ЧЕМ-ТО. Имена переменных CamelCase лучше, чем имена переменных under_score? Никаких реальных предпочтений, но если вы смешиваете и сопоставляете, это усложняет последующее наблюдение. Использование переменной с именем varA выглядит чище и создает меньший файл исходного кода, чем thisVariableThatShallDescribeTheLetterA, но как только ваше приложение начинает расти, более описательное имя помогает все больше и больше.

Это может увеличить размер вашего приложения или исходного кода, но возможность поддерживать и отслеживать имеет огромное значение. Приложение, над которым мы сейчас работаем, начиналось с небольшого размера, поэтому классы не казались важными, и благодаря богу хитрости области видимости это приложение теперь ОГРОМНО. Теперь мы играем в догонялки, пытаясь разделить нашу AS на классы, чтобы мы могли их найти, а не просто полагаться на знания наших программистов о том, где что находится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...