Flash Ripper RSS Readers


+

Архивы сайта Флэш Потрошитель за Апрель 2006


30.Апрель.2006, Community

Куда же подевался Колин Мук?

Эта фотография говорит все. На ней изображены люди, встретившиеся совсем недавно, чтобы поговорить о будущем технологии f, но вместо этого воспользовавшиеся радостями беспроводного интернет-доступа.

Слева направо: Дэниел Дура, Джош Дура, Дэррон Шелл, Майк Чэмберс (спрятался за Дэрроном), Чэфик Казоун, ноутбук Колина Мука, Майк Дауни и Брэндан Холл.

Угадайте, где Колин Мук?

Писал Rost, 07:42 PM Отзывов: 4

 

29.Апрель.2006, Flex 2

ActionScript 3:resources:apis:libraries

  1. corelib
    хэширование MD5, сериализация JSON, парсинг строк и др. данных, и .т.д.

  2. FlexUnit
    аналог JUnit, идет в поставке с тестами графики

  3. Flickr API
    Flex + Flickr явно братья по разуму

  4. Mappr
    Flickr сейчас одно из самых обыгрываемых названий

  5. RSS and Atom libraries
    предлагают забыть о разнице форматов RSS

  6. Odeo
    подкастинг тоже захватили

  7. YouTube
    интерфейс к сервису обмена флэш-видео

Писал Rost, 03:07 AM Отзывов: 0

 

28.Апрель.2006, Components

Метод UIObject.doLater заставляет компоненты отреагировать на габариты их содержимого

Использующие флэш-компоненты от Макромедии сталкиваются с такой проблемой: компоненты, имеющие определяемое пользователем содержимое (например, компонент Window или ScrollPane), не реагируют на изменение размеров этого содержимого. Например, в случае с компонентом ScrollPane, увеличение его контента до размеров, выходящих за видимую область компонента, не приводит автоматически к появлению полос прокрутки, хотя должно. Чтобы ScrollPane и подобные ему отреагировали на изменение своего контента, нужно принудительно вызвать событие изменения размера на компоненте. Сделать это может метод doLater, наследуемый всеми компонентами от класса UIObject (это только один из вариантов его применения):

scrollPane.content._yscale = 1000; // Изменяем размер контента
scrollPane.doLater(scrollPane, "size"); // Заставляем компонент отреагировать на изменение размера контента.

Мелочь, а голова уже не болит ;)

Писал Rost, 10:14 PM Отзывов: 7

 

27.Апрель.2006, Articles

Базовые алгоритмы определения столкновений

Nox Noctis перевел с английского статью о базовых алгоритмах определения столкновений. В статью вошли "теорема о разделяющих осях для разных геометрических фигур, а также приёмы определения столкновений для маленьких и быстро движущихся объектов". Причем большая пиксельная длина этой статьи во многом определена большим количеством просто офигенных интерактивных ее иллюстраций.

Похоже, эта статья -- не последняя: Нокс собирается перевести еще несколько статей этих же авторов, о чем написано на странице "N: уроки по программированию игр во флэше". Почитайте там примечания переводчика внизу.

Спасибище тебе, Нокс!

Писал Rost, 07:16 PM Отзывов: 2

 

26.Апрель.2006, Flex 2

Выведение из ActionScript 1 и 2 одной страницей

Скажи "привет!" AS3-у -- говорит Колин Мук и выкладывает на одной короткой странице тезисы и примечания к своей лекции "Введение в ActionScript 3", прочитанной им на недавно прошедшем фестивале Flash In Da Can в Торонто. Основные темы:

  • Новая виртуальная машина AVM2 и ее отношения с AVM1;
  • Основной язык ("core language") и программный интерфейс проигрывателя (player API) как две взаимодополняющие части языка ActionScript: эволюционное развитие первого и полная переделка второго в новом проигрывателе Flash Player 9;
  • E4X -- работа с XML;
  • API рисования;
  • Бесплатный компилятор ActionScript 3;
  • Модель событий;
  • Мусорные баки и дети Контейнеры и потомки;

Данные тезисы (а еще лучше -- их англоязычный оригинал на сайте Колина, ссылка была выше) можно смело использовать в качестве путеводителя по главным темам языка ActionScript 3.

Наверное, стоит выложить их тут по-русски. Перевод тезисов Колина на русский язык (стиль и оформление -- авторские):

© 2006 Colin Moock's Notes on His ActionScript 3.0 Lectures at FIDC:

обзор

общее введение в ActionScript 3.0

более глубокое изучение выбранных тем

  • E4X
  • api дисплея
  • модель событий
  •  

    начнем с начала

    новая виртуальная машина: "AVM2"

    ActionScript 1.0 и ActionScript 2.0: "AVM1"

    AVM1 и AVM2 работают одновременно в одном проигрывателе

    AVM2 переписана с нуля

  • произодительность
  • сложность
  • больше никаких хаков (спасибо, но все равно не верится ;)
  • основной язык (core language) против API проигрывателя (player API)

    ActionScript состоит из "основного языка" и "api проигрывателя"

    Основной язык ActionScript 3.0 как следующий шаг в эволюции ActionScript 2.0

    api проигрывателя: капитальный ремонт; решительные и далеко идущие изменения

    основной язык: главные изменения

    полностью переконструирован для производительности

  • "запечатанные" классы против динамических классов
  • исключения на этапе выполнения (runtime exceptions)

    E4X

    регулярные выражения

    основной язык: второстепенные изменения

    предупреждения о недостающих объявлениях типов

    ключевое слово final

    модификаторы public, internal, protected, private

    каждый класс должен быть в пакете

    переопределения (overrides) должны быть объявлены

    переменные и функции уровня пакета

    выражения на уровне класса

    константы

    связанные методы

    типы int, uint, Number

    * против Object

    Void теперь void

    значения параметров по умолчанию

    параметр ... (rest)

    ошибки при несовпадении аргументов/параметров

    выражение is приходит на смену instanceof

    цикл for-each-in

    flash player api

    полностью переписан и реорганизован

    значительно более ооп-ориентирован

    основные моменты

  • api дисплея
  • модель событий
  • посимвольные и построчные метрики текста (per-character and per-line text metrics) -- ура!
  • отражение (reflection): describeType()
  • двоичный сокет (binary socket)
  • двоичные данные (binary data (ByteArray))
  • flex

    Flex Builder

    Flex Framework

    Flex Data Services

    бесплатно!

    бесплатный компилятор из командной строки: ActionScript 3.0 + Flex Framework

    E4X

    XML является встроенным типом данных в ActionScript 3.0

    var novel:XML = <BOOK ISBN="0141182806"> <TITLE>Ulysses</TITLE> <AUTHOR>Joyce, James</AUTHOR> <PUBLISHER>Penguin Books Ltd</PUBLISHER> </BOOK>;

    novel.AUTHOR // Все элементы-потомки <BOOK> с именем "AUTHOR"

    trace(novel.TITLE); // Выводит: Ulysses

    trace(novel.@ISBN); // Выводит: 0141182806

    novel.AUTHOR = "Hemingway, Ernest";

    novel.PUBLISHER = "Scribner";

    novel.@ISBN = "0684800713";

    E4X: обход XML-дерева с помощью for-each-in

    var order:XML = <ORDER> <ITEM SKU="209"> <NAME>Trinket</NAME> <PRICE>9.99</PRICE> <QUANTITY>3</QUANTITY> </ITEM> <ITEM SKU="513"> <NAME>Gadget</NAME> <PRICE>149.99</PRICE> <QUANTITY>1</QUANTITY> </ITEM> <ITEM SKU="374"> <NAME>Toy</NAME> <PRICE>39.99</PRICE> <QUANTITY>2</QUANTITY> </ITEM> </ORDER> // Задать начальное значение суммарной стоимости как 0. var total:Number = 0; // Этот цикл срабатывает один раз для каждого элемента <ITEM>. for each (var item:XML in order.*) { total += item.QUANTITY * item.PRICE; } trace(total);

    E4X: фильтрующие логические условия (filtering predicate)

    var staff:XML = <STAFF> <EMPLOYEE ID="501" HIRED="1090728000000"> <NAME>Marco Crawley</NAME> <MANAGER>James Porter</MANAGER> <SALARY>25000</SALARY> <POSITION>Designer</POSITION> </EMPLOYEE> <EMPLOYEE ID="500" HIRED="1078462800000"> <NAME>Graham Barton</NAME> <MANAGER>James Porter</MANAGER> <SALARY>35000</SALARY> <POSITION>Designer</POSITION> </EMPLOYEE> <EMPLOYEE ID="238" HIRED="1014699600000"> <NAME>James Porter</NAME> <MANAGER>Dorian Schapiro</MANAGER> <SALARY>55000</SALARY> <POSITION>Manager</POSITION> </EMPLOYEE> </STAFF> // XMLList, содержащий всех работников var allEmployees:XMLList = staff.*; // XMLList, содержащий Marco и Graham var employeesUnderJames:XMLList = allEmployees.(MANAGER == "James Porter");

    api дисплея

    делит работу дисплея на три уровня

  • отображение (display)
  • интерактивность (interactivity)
  • сдерживание (containment)
  • основные классы api дисплея

    нова платформа основа создания отображаемых объектов (они же -- объекты дисплея)

    var t:TextField = new TextField()

    var mc:MovieClip = new MovieClip()

    список отображения

    иерархия всех отображаемых в данный момент объектов

    корнем (root) иерархии является экземпляр объекта Stage

    экземпляр объекта Stage -- это контейнер

    первый потомок Stage's загружается автоматически: это главный класс .swf-приложения

    отображаемые объекты могут существовать в состоянии открепления (detached) отдельно от списка отображаемых объектов (display list)

    состояние объекта (его свойства) сохраняются, даже когда он отделен от списка отображения

    контейнеры и потомки

    DisplayObjectContainer.addChild()

    DisplayObjectContainer.removeChild()

    DisplayObjectContainer.addChildAt()

    DisplayObjectContainer.removeChildAt()

    автоматическое сворачивание уровней глубины (depths auto-collapse) при удалении потомков

    векторное рисование

    Классы Sprite и Shape определяют объект Graphics для векторного рисования

    var rect:Shape = new Shape(); rect.graphics.lineStyle(1); rect.graphics.beginFill(0x0000FF, 1); rect.graphics.drawRect(0, 0, 75, 50);

    пример использования api дисплея

    package { import flash.display.*; import flash.text.TextField; public class GreetingApp extends Sprite { public function GreetingApp() { // Создать прямоугольник var rect:Shape = new Shape(); rect.graphics.lineStyle(1); rect.graphics.beginFill(0x0000FF, 1); rect.graphics.drawRect(0, 0, 75, 50); // Создать текстовое сообщение var greeting_txt:TextField = new TextField(); greeting_txt.text = "Hello world"; greeting_txt.x = 60; // Добавить элементы в список отображаемых addChild(greeting_txt); // Глубина 0 addChild(rect); // Глубина 1 // Создать круг var circle:Shape = new Shape(); circle.graphics.lineStyle(1); circle.graphics.beginFill(0xFF0000, 1); circle.graphics.drawCircle(0, 0, 25); circle.x = 75; circle.y = 35; // Поместить круг под прямоугольником addChildAt(circle, getChildIndex(rect)); } } }

    собственные классы для работы с дисплеем

    классы дисплея можно расширять

    package { import flash.display.Shape; public class Rectangle extends Shape { public function Rectangle (w:Number = 100, h:Number = 100, lineThickness:Number = 1, lineColor:uint = 0x000000, fillColor:uint = 0xFFFFFF) { graphics.lineStyle(lineThickness, lineColor); graphics.beginFill(fillColor, 1); graphics.drawRect(0, 0, w, h); } } }

    addChild(new Rectangle(10, 10));

    модель событий: регистрация

    основной код

    someObj.addEventListener(EventName, listenerFunction)

    public function listenerFunction (e:EventType):void { trace("вызвано событие"); }

    код примера

    var s:Sprite = new Sprite(); s.addChild(new Rectangle(25, 25)); s.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener);

    public function mouseDownListener (e:MouseEvent):void { trace("слушатель события mouse down услышал то, что нужно"); // Метод связян с текущим объектом (делегирование событий встроено в проигрыватель) trace("текущий объект: " + this); }

    модель событий: поток событий

    объекты дисплея используют трехфазный поток событий:

  • сбор событий(capture)
  • целевой объект события (target)
  • пузырь и его всплывание (bubble)
  • var s:Sprite = new Sprite(); s.addChild(new Rectangle(25, 25)); s.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener); // Регистрация родителя для фазы сбора addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener, true); // Регистрация родителя для фазы пузырения addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener); addChild(s);

    public function mouseDownListener (e:MouseEvent):void { trace("слушатель события mouse down услышал то, что нужно"); trace(" фаза события: " + e.eventPhase); trace(" текущая цель события: " + e.currentTarget + ", final target: " + e.target + "\n"); }

    модель событий: ваши собственные события

    package { import flash.events.*; public class Game extends EventDispatcher { // ИМЯ_СОБЫТИЯ: пишите их ВСЕГДА_ЗАГЛАВНЫМИ // для разделения слов используйте символ подчеркивания // имена хороши в своем настоящем времени public static const GAME_OVER:String = "GAME_OVER"; public function die ():void { dispatchEvent(new Event(Game.GAME_OVER)); } } }

     

    Писал Rost, 02:19 PM Отзывов: 6

     

    24.Апрель.2006, Flash Player

    Был Flash Player 8.5, стал Flash Player 9

    Update: Обратите внимание, что вышел релиз Flash Player под Linux!

    Качать здесь: Flash Player 9 for Linux.

    Adobe официально присвоила следующей, третьей и последней, бета-версии самого ожидаемого сейчас флэш-проигрывателя имя Flash Player 9 вместо временного имени Flash Player 8.5.

    Выход релизов Adobe Flex (среда для кодеров), Adobe Flash (для дизайнеров, кодовое имя -- Blaze, спасибо constantiner -- поправил (спасибо еще раз))) и Flash Player 9 ожидается летом 2006 года.

    Ну вот, опять в отпуск ехать не захочется (update: a в отпуск-то и не пускают, хахаха ;).

    Писал Rost, 04:35 PM Отзывов: 8

     

    19.Апрель.2006, Open Source

    Flashr 4 Flickr

    Kelvin Luck выпустил и развивает библиотеку flashr -- API-обертку для работы с фото-сайтом flickr (на самом деле это нечто большее, чем просто фото-сайт), известным своей открытостью и готовностью обмениваться фотоинформацией и ее метаданными типа заголовков, описаний, тэгов и даже комментариев к фото с любым приложением по протоколу REST. Впрочем, о последнем читателю можно сейчас же забыть, так как задача flashr заключается в том, чтобы дать флэш-программистам возможность говорить с flickr на языке ActionScript, и flashr с этой задачей справляется. А поскольку flickr находится рядом с пиком своей популярности (только не знаю, с какой от него стороны ;-) то и flashr пригодится. Существует также полная документация к flashr и несколько примеров его работы, включая просто неоценимое приложение для тестирования методов API flashr.

    Писал Rost, 01:18 PM Отзывов: 2

     

    17.Апрель.2006, Contests

    The Battle of the Script-2006

    Сайт ActionScript.com объявил о начале конкурса "The Battle of the Script-2006: Injecting TextScript". Тема -- владение библиотекой для создания текстовых эффектов под названием TextScript. Организаторы конкурса призывают не зацикливаться на сложных задачах и просто поиграть. Прием работ заканчивается 1 Мая 2006 года, призы есть.

    Подробности: The Battle of the Script-2006: Injecting TextScript.

    Писал Rost, 06:16 PM Отзывов: 2

     

    14.Апрель.2006, Flex 2

    Спецификация языка ActionScript 3.0

    Adobe опубликовала эскиз официальной спецификации языка ActionScript 3.0.

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

    Писал Rost, 01:07 PM Отзывов: 4

     

    Примечания: Статус документа: в процессе
    ++


    Этот сайт окупается за счет саперов. Они говорят:
    +++




    ++++



    © 2002-2008 Производство: Рост Прибыли · О проекте · Подписка на новости (RSS)