Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Статьи (http://www.flasher.ru/forum/forumdisplay.php?f=101)
-   -   ActionScript 3 Tips and Tricks (http://www.flasher.ru/forum/showthread.php?t=85645)

MerlinTwi 27.09.2006 11:43

ActionScript 3 Tips and Tricks
 
senocular из Сан-Франциско опубликовал 100 советов по ActionScript 3
Для начинающего работать в AS3 эти советы бесценны. Здесь перевод на русский:
  1. Изменение частоты кадров flash-ролика
  2. Методы класса теперь связаны с областью видимости класса
  3. Объект Graphics и методы для рисования
  4. Новые типы переменных
  5. Отображаемые объекты (Display Objects)
  6. Новая директива Import
  7. Приведение типов и оператор as
  8. Уникальность переменных в классах
  9. Новое поведение MouseMove
  10. Ключевое слово delete и члены класса
  11. Класс Dictionary
  12. Метки
  13. Событие MOUSE_LEAVE или как узнать что мышка за пределами SWF
  14. Класс SimpleButton
  15. Немного о синтаксисе в Array
  16. Пакеты в AS3
  17. Вспомогательные классы
  18. Права доступа
  19. Абстрактные классы
  20. Ключевое слово override
  21. Использование прототипов (prototype)
  22. Регулярные выражения RegExp
  23. Подход к сортировке глубин
  24. Полное Копирование объекта
  25. Одинаковые имена свойств
  26. EventDispatcher
  27. События и типы событий
  28. Запись XML в тексте скрипта
  29. Определение имени класса
  30. Вызов super()
  31. Определение метки текущего фрейма (Frame Label)
  32. Несколько аргументов в trace()
  33. Вызов обработчика события без события
  34. URLRequest вместо строки URL
  35. XML или XMLDocument
  36. Загрузка текста и XML с использованием URLLoader
  37. Оператор is вместо instanceof
  38. Timelines как класс
  39. Использование RegExp для проверки email
  40. Событие Render
  41. Оператор @ для работы с атрибутами XML
  42. Распространение событий
  43. Получение спектра звука
  44. Преобразование Number() больше не поддерживает восьмеричную систему
  45. Сборщик мусора
  46. Мягкие ссылки
  47. Использование картинок из библиотеки (library)
  48. Изменения в typeof
  49. getBounds() и getRect()
  50. Разница между for..in и for each..in
  51. Значения по умолчанию для параметров функции
  52. Неопределенное количество аргументов при вызове функции
  53. arguments
  54. Пространство имен (namespaces)
  55. Оператор :: для уточнения пространства имен
  56. Динамичность класса не наследуется
  57. Создание события mouseWithin
  58. Ключевое слово final
  59. MXMLC: SWF Metadata Tag
  60. Класс Proxy
  61. Оператор in
  62. Методы getProperty и setProperty класса Proxy
  63. instance name мувиклипа на сцене
  64. XML и XMLList
  65. Константы
  66. Аналог duplicateMovieClip
  67. Метод callProperty класса Proxy
  68. Копирование динамической графики
  69. TextField.appendText()
  70. Директива include
  71. Двойное объявление переменной
  72. mouseEnabled и блокирование событий
  73. Свойство mouseChildren
  74. Различия между rollOver/rollOut и mouseOver/mouseOut
  75. DisplayObjectContainer contains()
  76. Освобождение слушателей событий при удалении с экрана
  77. Определение добавления или удаления со Stage
  78. Фазы событий
  79. Определение фазы события
  80. Предотвращение распространения события
  81. Глобальные события
  82. Реализация onReleaseOutside в AS3
  83. Document Class
  84. Доступ к stage и root
  85. use namespace
  86. Используйте ColorTransform вместо класса Color
  87. Класс Error, ошибки выполнения
  88. Ошибки: try..catch..finally
  89. Перехват асинхронных ошибок
  90. Операторы (.) и (..) для XML
  91. Array.indexOf и Array.lastIndexOf
  92. "asfunction:" теперь "event:"
  93. Proxy: методы перечисления
  94. Перехват событий мышки и mouseEnabled
  95. Strict Mode
  96. System.totalMemory
  97. Закрытие сетевых соединений
  98. Класс Timer
  99. Взаимодействие между AVM2 и AVM1
  100. Класс ByteArray
Скачать

MerlinTwi 27.09.2006 12:02

Изменение частоты кадров flash-ролика
 
В ActionScript 3, можно динамически менять частоту кадров (frame rate) ролика используя класс Stage.
Класс Stage (flash.display.Stage) связан со сценой главного ролика и имеет свойство frameRate, которое может принимать значения от 0.01 до 1000, и определяет частоту кадров, с которой Flash плеер проигрывает ролик. Изменять это значение можно на лету.
Код:

// изменить частоту кадров на 12 fps:
stage.frameRate = 12;


MerlinTwi 27.09.2006 12:22

Методы класса теперь связаны с областью видимости класса
 
ActionScript 3 полностью базируется на классах. Создавая классы, вы создаете переменные и функции (методы) которые связаны с экземпляром класса. В отличие от ActionScript 2 методы в ActionScript 3 сохраняют область видимости их класса, даже если вызываются из другого объекта, или через Function.call и Function.apply. Например:
Код:

package {
    import flash.display.Sprite;
   
    public class ClassScope extends Sprite {
       
        public function ClassScope() {     
            traceThis(); // "Class Instance"
           
            var obj:Object = new Object();
            obj.traceThis = traceThis;
            obj.traceThis(); // "Class Instance"
           
            traceThis.call(new Sprite()); // "Class Instance"
        }

        public override function toString():String {
            return "Class Instance";
        }
       
        public function traceThis():void {
            trace(this);
        }
    }
}


MerlinTwi 27.09.2006 12:42

Объект Graphics и методы для рисования
 
Как и в ActionScript 1,2 в ActionScript 3 есть методы для динамического рисования в отображаемых объектах (movie clips, sprites, и т.п.), которые имеют свойство graphics (flash.display.Graphics). Свойство graphics выступает в роли специального слоя для рисования, который расположен под всеми дочерним клипами. Так же в ActionScript 3 добавлены новые методы для рисования прямоугольников (в том числе и со скругленными углами), окружностей и эллипсов:
  • drawCircle(x:Number, y:Number, radius:Number):void
  • drawEllipse(x:Number, y:Number, width:Number, height:Number):void
  • drawRect(x:Number, y:Number, width:Number, height:Number):void
  • drawRoundRect(x:Number, y:Number, width:Number, height:Number, ellipseWidth:Number, ellipseHeight:Number):void
Пример:
Код:

// Нарисовать синий прямоугольник со скругленными углами:
var square:Sprite = new Sprite();
square.graphics.beginFill(0xFF);
square.graphics.drawRoundRect(0, 0, 100, 50, 10, 10);
square.graphics.endFill();
addChild(square);


MerlinTwi 27.09.2006 22:02

8. Уникальность переменных в классах
 
В ActionScript 2 переменные со значениями объявленные в теле класса сохранялись в прототипе класса. Из-за этого возникали проблемы с переменными, которые являются ссылками на объекты (например массивы Array):
Код:

class myClass{
  public var list:Array = [1,2,3];
}
var a = new myClass();
var b = new myClass();
trace(a.list === b.list); // true

Здесь a.list и b.list фактически ссылаются на один и тот же массив.
В ActionScript 3 этой проблемы нет, такие переменные будут уникальны.

MerlinTwi 27.09.2006 22:30

Новое поведение MouseMove
 
В ActionScript 2 событие MouseMove срабатывало глобально, неважно над каким клипом находилась мышка, любой listener от Mouse или любой мувиклип получали событие о перемещении мышки.
В ActionScript 3 для того чтобы получать события от мышки, нужно у интерактивного клипа (InteractiveObject такие как Sprites, MovieClips, Stage) добавить слушателя событий мышки (Listener), но события будут приходить только тогда, когда мышка находится над этим клипом. Для того чтобы получать события мышки в любом месте ролика, нужно добавить Listener к Stage.
Код:

stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);

Огион 28.09.2006 12:25

10. Ключевое слово delete и члены класса

MerlinTwi 28.09.2006 13:03

14. Класс SimpleButton
 
В ActionScript 3 появился новый класс SimpleButton (flash.display.SimpleButton). Теперь можно динамически с помощью ActionScript создавать кнопки (Button).
Код:

var myButton:SimpleButton = new SimpleButton();
Класс SimpleButton имеет 4 основных свойства, которые управляют возможными состояниями кнопки: upstate (кнопка не нажата), overState (мышка над кнопкой), downstate (кнопка нажата), и hitAreaState (область реагирования на мышку). Необходимо создать визуальные объекты для этих состояний и присвоить их к соответствующим свойствам.
Код:

myButton.upState = mySprite1;
myButton.overState = mySprite2;
myButton.downState = mySprite3;
myButton.hitAreaState = mySprite4;


Огион 28.09.2006 13:11

11. Класс Dictionary
12. Метки

MerlinTwi 28.09.2006 13:20

17. Вспомогательные классы
 
Один класс описывается в одном .as файле, так было в ActionScript 2 так остается и в ActionScript 3, но теперь есть возможность включать вспомогательные классы в тот же .as файл в дополнение к основному классу.
Вспомогательные классы описываются после блока package и видны только основному классу (или функции) в блоке package, или другим вспомогательным классам, описанным в этом же файле.
Код:

package {
    class MyClass {
        function MyClass() {
            var helper:MyHelper = new MyHelper();
        }
    }
}
class MyHelper {
    function MyHelper() {
        var helper:HelpersHelper = new HelpersHelper();
    }
}
class HelpersHelper {
    function HelpersHelper () {
    }
}

Запомните, что только один класс может быть описан в блоке package. Вспомогательные классы описываются в этом же файле, но после package и могут использоваться только основным классом.


Часовой пояс GMT +4, время: 13:42.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.