2010-02-03 3 views
3

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

Мои сценарии действий разные. Я убираю классы и вставляю их в 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)); 
     } 

    } 
} 

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

+0

Извините, но почему это помечено как «Flex»? Это, очевидно, не связанный с flex вопрос. Повторно пометили его, чтобы удалить flex tag. –

ответ

1

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

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

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

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

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

+0

У меня есть некоторое нежелание, но я понимаю, что вы говорите. – 2010-02-03 19:32:23

+0

Однако не просто выберите программу в OO только потому, что она популярна. Это может быть не лучший выбор для каждой ситуации. ActionScript дает вам большую гибкость, но вам нужно понять различия между различными парадигмами (функциональными, прототипическими, базовыми OO и т. Д.). – Steve

+0

Если вы хотите добавить возможность повторного использования и увеличить ремонтопригодность, тогда OO - это путь. –

1

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

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

0

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

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

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

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

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

0

Ответ: «Это зависит». Я знаю, что это хромает, но это правда.

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

1) Использование классов даст вам все преимущества Object Oriented Programming Здесь я выделю некоторые из них:

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

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

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

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

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

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

Смежные вопросы