Все о 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_STAGE, this.addedToStage0); sp1.addEventListener(Event.ADDED_TO_STAGE, this.addedToStage1); sp2.addEventListener(Event.ADDED_TO_STAGE, this.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_STAGE, this.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