Macromedia Flash 5. Объектно - ориентированное программирование

       

Объекты


personA = new Object();

personA - это новый Объект. Теперь можно добавить объекту новые свойства, как это показано ниже:

personA.name = "Ann"; personA.age = 31;

Это означает, что:

  • personA имеет свойство name; (имя), значение которого равно "Ann"
  • personA имеет свойство age (возраст), значение которого равно 31
  • Достаточно просто. То же самое можно сделать по другому:

    personA = { name:"Ann", age:31 }

      Примечание

    ActionScript игнорирует пробелы и табуляцию. Например, создать объект personA можно было бы так:

    personA = { name : "Bob", site : "bob.com", favs : { site1 : "flash.com", site2 : "flesh.com" } }

    Это иногда полезно для облегчения понимания, но имеет свой недостаток - невозможность построчных комментариев. Полезно запомнить следующий синтаксис для быстрого создания объектов:

    o = { x:x, y:y, z:{a:a, b:b} }

    Обратите внимание на скобки, запятые, двоеточия и отсутствия точки с запятой в конце строки.



    Фигурные скобки { } быстрый и удобный способ создания объекта. Вот другой объект:

    personB = new Object(); personB.name = "Bob"; personB.age = 25; personB.hobby = "drinking";

    А это то же самое:

    personB = { name:"Bob", age:25, hobby:"drinking" }

    Это было просто. Теперь у нас есть два объекта: personA и personB. Каждый из них имеет два свойства: name и age, а PersonB имеет еще одно дополнительное свойство hobby (хобби). Если вам что-то не понятно, посмотрите пример еще раз, потому что следующее предложение содержит очень важную информацию.

    Также где-то есть третий объект, имеющий два свойства - personA и personB. Это дает нам первое представление об ООП в работе. Все содержится внутри объекта.

    Если ваши глаза начали стекленеть, подождите... Давайте рассмотрим такую метафору. Представьте, что кто-то переезжает. Это событие влечет за собой перевозку вещей. Здесь есть два подхода. Первый - подогнать грузовик (желательно со съемным тентом) к входной двери и затем погрузить в него вещи, ящики, полки и заплатить шоферу. Это самый быстрый и самый простой способ переезда и он прекрасно работает в жизни. "Нормальный" способ переезда - рассовать вещи по коробкам и подписать (какими-нибудь закорючками) все коробки, согласно их содержанию. Это включает принятие тысячи решений и неотложных действий в час и это хороший тест для супругов, если вы когда-нибудь такой искали.


    Боб и Энн переезжают. Давайте поможем им разложить их вещи по коробкам. Объекты, подобны коробкам, так что это не причинит вреда вашему обучению. Общеизвестно, что американцы самые "переезжающие" люди в мире (ok, после тибетских кочевников). Трое из пяти американцев переезжают каждые пять лет, совершаются миллионы и миллионы переездов. Дальнейшее исследование показало, что в каждом из этих переездов, имеется ящик с пометкой "important stuff" (важные вещи). Учитывая то огромное значение, которое имеет для американцев ящик "important stuff", мы и начнем с него.

    importantStuff = new Object(); importantStuff.money = 500; importantStuff.papers = 96; importantStuff.annPassport = "er246vjl"; importantStuff.bobPassport = "kl554mkt";

    Заметили, что мы добавили несколько единиц в ящик? А если мы поместим туда что-нибудь еще, что уже находится в другом ящике, например шкатулку с побрякушками?

    importantStuff.jewelryBox = 1;

    Это кажется правильным, но если Энн захочет найти свое ожерелье, сможет ли она сделать это? Мы поместили список вещей в каждый ящик, но ее ожерелья нет в списке. Что мы действительно должны сделать - создать список того, что находится в шкатулке с побрякушками, что-нибудь вроде этого:

    importantStuff.jewelryBox = new Object(); importantStuff.jewelryBox.necklace1 = "Pearl"; // подделка importantStuff.jewelryBox.necklace2 = "Diamond"; // подделка

    Теперь шкатулка с побрякушками имеет список ее содержимого (конечно же не забываем комментировать при необходимости). Это не лучшее решение для Энн, потому что список ее драгоценностей, находится внутри закрытой шкатулки. Ей потребуется все открыть, чтобы найти свое ожерелье. Однако является удачей для нас то, как объекты ведут себя в ActionScript, поэтому оставим ящики так, как они есть. Надеюсь у нее нет возражений на этот счет.

    Мы поместили объект в объект - ящик в ящик. Теперь не проблема увидеть другой путь. Предложите им использовать два транспортных средства для переезда: автомобиль и грузовик. Часть ящиков сложить в один, часть в другой. "Important stuff" находится в автомобиле, так что ожерелье может быть найдено в car.importantstuff.jewelrybox.necklace1. Это очень похоже на то, что произошло, когда мы создали personA и personB. Мы создавали свои объекты просто "где-нибудь" и это где-нибудь всегда находится внутри объекта, когда вы создаете объекты в ActionScript. В мире Энн и Боба легко увидеть, что, в конечном счете, предельным контейнером будет Земля, Вселенная, ОМ. В ActionScript OM также существует, принимая форму "объекта, вызывающего Объект".



    Итак, эти объекты в объектах кажутся достаточно простыми, но чтобы действительно понять происходящее с ними, придется копнуть много глубже. И с этим углубленным пониманием к вам придет Великая Сила. Осознайте, прочувствуйте ее, текущую по вашим венам. Доверься своим чувствам, Люк. Я твой отец. Давным давно, в далекой, далекой галактике ...

    Давайте попробуем поместить объект внутрь personA, просто посмотрим, как это работает.

    personA.favs = new Object( );

    Мы только что добавили новое свойство к personA. Проверьте ваш пульс и продолжайте, когда он придет в норму. Мы легко можем добавить свойства к этому новому объекту favs:

    personA.favs.site1 = "flash.com"; personA.favs.site2 = "google.com";

    Или, как было описано выше:

    personA.favs = { site1:"flash.com", site2:"google.com" }

    Теперь можете сказать:
    personA имеет свойство favs, которое имеет свойство site1, со значением "flash.com".
    personA имеет свойство favs, которое имеет свойство site2, со значением "google.com".

      Просто как Flash

    Если это кажется запутанным, хорошо возвратиться непосредственно к Flash'у (с который мы будем много работать). Это всегда было одним из самых лучших конкретных примеров полноценности объектно-ориентированной структуры. Если на сцене имеется мувик (movieclip) personA, то _root имеет свойство, называемое personA. Если вы помещаете мувик в personA и называете его favs, то можете сказать:

    personA имеет свойство, называемое _x, значение которого равно 5.

    personA имеет мувиклип, называемый favs, свойство которого, называемое _x имеет значение равное 100.

    Очевидно, что можно думать о мувиклипах, как об объектах, а о вещах подобных _x или _width, как о свойствах (фактически это то, чем они и являются на самом деле).

    Итак, теперь, когда вы понимаете, как поместить объект в объект, вы знаете все, что необходимо знать об ООП. Это конечно шутка, но не настолько, насколько вы могли бы подумать. Тут важно понять то, что объект подразумевается находящимся внутри другого объекта. Возможно вы знаете все это, часто помещая один мувик внутрь другого, но всегда полезно подвести итог.

     


    Содержание раздела