Статьи Adobe Flash CS4 Все о Actionscript 3.0

Discussion in 'Статьи' started by geforce, 7 Sep 2009.

  1. geforce

    geforce Member

    Joined:
    21 Aug 2008
    Messages:
    300
    Likes Received:
    26
    Reputations:
    -5
    Все о Adobe Flash CS4 и Actionscript 3.0

    Adobe Flash CS4 Actionscript 3.0

    ActionScript 3 создан на базе спецификации ECMA-357, также известной как ECMAscript for XML.

    -------------------------------------------------------------------------------------------------------------------------------------------

    Историческая справка.

    ECMA расшифровывается как "Европейская Ассоциация Производителей Компьютеров". Ассоциация основана в 1961 году. Сейчас она уже далеко не только европейская, и носит название ECMA International. В неё входят такие известные компании, как Microsoft, Intel, IBM, и многие другие. Целью организации является разработка, поддержка и распространение стандартов в области компьютерных технологий. Подробнее об этой организации можно почитать на оффициальном сайте ECMA International.

    В частности, среди разработанных ECMA International стандартов есть спецификация ECMA-262 или ECMAscript (последнее, третье, издание которой вышло в декабре 1999 года). Спецификация ECMAscript задает стандарты для скриптовых языков программирования. Этой спецификации соответствуют Javascript, Jscipt и ActionScript 1-2.


    -------------------------------------------------------------------------------------------------------------------------------------------

    Спецификация E4X (ECMA-357, последнее, второе, издание - декабрь 2005 года), в соответствии с которой построен ActionScript 3, является логическим продолжением спецификации ECMA-262. Эта спецификация расширяет концепции языка ECMAscipt для упрощения работы с XML данными.

    В работе над E4X участвовали специалисты компаний Macromedia, Microsoft, BEA software, AOL/Netscape, Mozilla Foundation и некоторые другие.

    Основными целями спецификации E4X является:
    - добавить в язык ECMAscript встроенную поддержку XML объектов (в форме литералов)
    - добавить в язык ECMAscript операторы, упрощающие доступ и навигацию по XML документу
    - минимизаровать изменения отоносительно ECMA-262, чтобы разработчикам, разбирающимся в ECMAscript не пришлось обучаться узко специфическим техникам.

    "Родная" среда разработки для ActionScript 3 - Flex Builder


    -------------------------------------------------------------------------------------------------------------------------------------------

    Плюсы и минусы.

    + Объектно-ориентированная анимация
    + Преобразование 3D-объектов
    + Улучшенное сглаживание фигур
    + Поддержка Adobe Pixel Bender&trade
    + Поддержка метаданных (XMP)
    + Поддержка POST и GET запросов
    + Поддержка класов (class)
    - Поддержка Flash плеера не ниже 8.5

    -------------------------------------------------------------------------------------------------------------------------------------------

    CS4 и CS3 в сравнении

    По сравнению со старым он безусловно претерпел изменения, понравились новые поля ввода каких-либо цифровых значений — значение в поле изменяется при драге мышкой вправо или влево. Причем такие поля понатыканы везде, в том числе и на панели таймлайна, позволяя изменять частоту кадров или время одного кадра одним кликом. Таким же образом можно быстро переходить к конкретному кадру.

    Появились новые инструменты по работе с твинами, можно создавать как классические твины, так и новые, в том числе 3D. Кстати, о 3D, я, конечно, слышал о том, что будет трехмерная трансформация, но мои попытки собрать руками обыкновенный кубик потерпели крах, потому как банальной z-сортировки попросту нет. Хотя об этом говорили неоднократно, но чувствуешь себя несколько обманутым, или, скорее, недоумеваешь, если сказали «А», почему не стали говорить «Б»?

    Положение камеры настраивается сразу на весь документ, что, в общем-то, логично. Но если редактировать какие-то спрайты из библиотеке (т. е. обычный Edit, а не Edit in place), то там камера точно так же будет смещена, как во всем документе. Это очень неудобно, когда все спрайты уезжают чёрт знает куда при редактировании и стоят ровненько, когда размещаем весь спрайт-контейнер на сцене.


    -------------------------------------------------------------------------------------------------------------------------------------------

    О дырах и багах

    Обнаружил интересный баг работы события ADDED_TO_STAGE:

    PHP:
    var sp0:Sprite = new Sprite();
    var 
    sp1:Sprite = new Sprite();
    var 
    sp2:Sprite = new Sprite();
    function 
    addedToStage0(event:Event):void {
        
    trace('sp0 addedToStage:',event);
    }
    function 
    addedToStage1(event:Event):void {
        
    sp1.addChild(sp0);
    }
    function 
    addedToStage2(event:Event):void {
        
    sp2.addChild(sp1);
    }
    sp0.addEventListener(Event.ADDED_TO_STAGEthis.addedToStage0);
    sp1.addEventListener(Event.ADDED_TO_STAGEthis.addedToStage1);
    sp2.addEventListener(Event.ADDED_TO_STAGEthis.addedToStage2);
    addChild(sp2);
    Сколько раз будет вызван обработчик addedToStage для sp0? Я всегда полагал, что один раз. Оказывается, он будет вызван три (!) раза. Это о багах.

    Теперь о дыре, обнаруженной BlooDHounD-ом вместе со мной. У класса LoaderInfo есть один интересный статический метод getLoaderInfoByDefinition, принимающий в качестве аргумента любой объект и возвращающий объект LoaderInfo. Дело в том, что LoaderInfo, который он возвращает, имеет ссылки на content (document class нашего приложения), а значит на stage и прочие объекты, доступ к которым, вообще говоря, должен быть ограничен. На лицо серьезная дыра, позволяющая обращаться к stage из любого объекта или класса, не говоря уже об ApplicationDomain, причем, независимо от того, в каком домене находится объект, вызывающий данный метод. Простой пример:


    PHP:
    package {
        
    import flash.display.DisplayObject;
        
    import flash.display.LoaderInfo;
        
    import flash.display.Sprite;
        
    import flash.events.Event;

        public class 
    HackSpider extends Sprite {
                    
            public function 
    HackSpider()    {
                
    super();
                
    super.addEventListener(Event.ADDED_TO_STAGEthis.handler_addedToStage);
                
    LoaderInfo.getLoaderInfoByDefinition(HackSpider).content.stage.addChild(this);
            }
            
            private function 
    handler_addedToStage(event:Event):void {
                var 
    doc:DisplayObject super.stage.getChildAt(0);
                
    trace(doc);
                
    super.graphics.beginFill(0);

    Сборники:
    http://flash-mx.ru/forum/topic_show.pl?tid=607
    http://etcs.ru/blog/category/as3/
    http://etcs.ru/blog/cs4/flash_cs4_first_impression/


    Автор:

    Geforce3Dx
     
    #1 geforce, 7 Sep 2009
    Last edited: 7 Sep 2009
  2. -=ReD_DeviL=-

    -=ReD_DeviL=- Banned

    Joined:
    9 Sep 2009
    Messages:
    0
    Likes Received:
    2
    Reputations:
    -10
    слышал от многих что cs3 лучше но по мне cs4 получше
     
    1 person likes this.