AS Cookbook

Version: 0.5
Build: 0.20
Date: 24.2.2003
Codes count: 50

Сборник рецептов для программистов на языке сценариев ActionScript в пакетах Macromedia Flash 5 и Macromedia Flash MX.

Хотите включить в сборник свои прототипы или функции? Ознакомьтесь с информацией для авторов.

Новую версию сборника AS CookBook, можно получить в Интернете: http://msa.by.ru/ascookbook.html

Замечания и предложения отправляйте по адресу: ascookbook@tut.by

Товарные знаки других компаний являются собственностью их владельцев.

Copyright © 2002-2003 Sergey Moisevich (MSA)


От редактора

Вашему вниманию предлагается "AS Cookbook" - электронный сборник рецептов. Этот сборник не имеет отношения к издательству "O'Reilly" и к серии книг "Cookbook". Однако именно эта серия вдохновила меня на "подвиг".

Ларри Уолл в предисловии книги "Perl Cookbook" писал:
"Простые вещи должны быть простыми, а сложные… возможными. На один рецепт быстрых блюд приходится бесчисленное множество обычных рецептов. Одна из прелестей жизни в Калифорнии - в том, что мне доступна практически любая национальная кухня. Но даже в границах одной культуры У Каждой Задачи Всегда Найдется Несколько Решений. Как говорят в России, "Сколько поваров, столько и рецептов борща", и я этому верю ..."

Идея создания "AS Cookbook" в электронном виде родилась сама собой. Я просматривал вебузлы в поисках новых прототипов и размышлял: "Всё-таки как было бы хорошо иметь под рукой правильно структурированный, не содержащий ошибок и неточностей, а по возможности и хорошо документированный справочник!" Что-то отдалённо подобное мне и предстоит создать...

Сергей Мойсевич (aka MSA)
1 октябрь 2002 г.

Send feedback to MSA


Что нового

 Home > Что нового

Что нового ?

[ Version: 0.5 Build: 020 Date: 24.2.2003 ]

Array > поиск первого вхождения элемента в массив
Array > поиск последнего вхождения элемента в массив
Array > проверка на вхождение элемента в массив
Math > вхождение в диапазон
Math > градусы и радианы - Anton Volkov
Math > преобразование между полярной и картезианской системами координат - Авлин Анатолий
Modules > объект Таймер. (timer.as) - flashAPI
MovieClip > преобразование координат - Nox Noctis
MovieClip > рисование сегментов - Iv
Number > конвертер в двоичное представление - Robert Penner
Number > проверка на простые числа
Sound > mute -приглушить звук - cyberfunk
XMLNode > nextNode -следующий элемент - Iv

[ Version: 0.4 Build: 019 Date: 19.12.2002 ]

Array > перестановка элементов массива - MSA
Array > подсчет определенных значений
Array > случайная перестановка элементов массива - MSA
Color > инверсия RGB - senocular
Color > преобразование цвета в оттенки серого - MSA
Modules > MSA String Utilities 1.3 - MSA
Modules > String Utility Component - Mike Chambers
Modules > дополнительные методы для объекта Color (colorproto.as) - Peter Hall
Modules > перекашивание клипа (skew.as) - flashAPI

[ Version: 0.3 Build: 016 Date: 9.10.2002 ]

Array > ускоренный метод push() - klitze7-c004
Color > оттенок (Tint) - Robert Penner
Date > локализация метода toString() - Авлин Анатолий
Math > поиск среднего значения
MovieClip > вычисление количества вложенных клипов
MovieClip > отражение (Flip)
Number > проверка на четность/нечетность чисел
Number > целые и дробные части чисел
String > запрет кэширования в именах файлов

[ Version: 0.2 Build: 015 Date: 8.10.2002 ]

Color > изменение Яркости (Bright) - Robert Penner
Color > случайный заданный цвет - MSA
Color > случайный цвет - senocular
Date > проверка на високосный год
Math > процентное отношение - MSA
MovieClip > перемещение клипа курсорными клавишами - Geo
MovieClip > эффект Случайный Заданный Цвет - MSA

[ Version: 0.1 (test) Build: 014 Date: 5.10.2002 ]

Array > перестановка элементов массива - MSA
MovieClip > методы для работы с Цветом и трансформацией Цвета - MSA
MovieClip > эффект Случайный Заданный Цвет - MSA
MovieClip > эффект Случайный Цвет - MSA

[ Version: 0.1 (test) Build: 013 Date: 3.10.2002 ]

Function > win2koi - VM
Math > округление дробных чисел до заданного знака - Ф. Потрошитель
Math > случайные числа по закону Гаусса - MSA


Array

выполнение действия с каждым элементом в массиве | F5, MX | cyberfunk
перестановка элементов массива | F5, MX | MSA
подсчет определенных значений | F5, MX | n/a
поиск минимального и максимального значений | F5, MX | bokel
поиск первого вхождения элемента в массив | F5, MX | n/a
поиск последнего вхождения элемента в массив | F5, MX | n/a
проверка на вхождение элемента в массив | F5, MX | n/a
случайная перестановка элементов массива | F5, MX | MSA
сортировка алгоритмом Quick Sort | F5, MX | Andrй Vallieres
ускоренный метод push() | F5, MX | klitze7-c004


Array : выполнение действия с каждым элементом в массиве

Home > Array > выполнение действия с каждым элементом в массиве

выполнение действия с каждым элементом в массиве

F5, MX
cyberfunk
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 1.10.2002
Cookbook update: 1.10.2002

описание

При вызове метода walk() передается строковое имя функции. Функция будет вызвана для каждого элемента массива с его значением в качестве аргумента.

исходный код

Array.prototype.walk = function(){
  for(var i=0;i < this.length;i++){
    eval(arguments[0])(this[i]);
  }
}

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

function mult(val){
  trace(val * 3);
}

myArray = [1,2,3,4,5];
myArray.walk('mult');

примечание редактора

Приведенный выше код недостаточно оптимален. При переборе массива, всякий раз будет вызываться функция eval() с постоянным аргументом. Для увеличения быстродействия, используйте код приведенный ниже. Отличие состоит в том, что в метод передается указатель (ссылка) на функцию, а не имя в виде строки.

Array.prototype.walk = function(sub){
  if (typeof(sub) != "function" or this.length < 1) { return 0 }
  for (var i=0; i < this.length; i++){ sub(this[i]) }
  return this.length;
}
function mult(val){
  trace(val * 3);
}

myArray = [1,2,3,4,5];
myArray.walk(this.mult);

Добавленные проверки позволят не отрабатывать код, если переданный указатель не будет ссылаться на функцию. Также полезно возвращать некоторые значения. В этом примере, метод возвращает либо нуль (вероятно ошибка), либо число элементов (также равное количеству вызовов функции).


Array : перестановка элементов массива

Home > Array > перестановка элементов массива

перестановка элементов массива

F5, MX
MSA
Version info

Version: 1.2
Created: 6.7.2002
Last modified: 31.10.2002
Cookbook entry: 4.10.2002
Cookbook update: 31.10.2002

описание

метод; переставляет заданные элементы в массиве. Аргументы i и j - индексы элементов для перестановки.

исходный код

// New - fast!
Array.prototype.exchange = function(i,j){
  if (i!=j) {
    var t = this[i];
    this[i] = this[j];
    this[j] = t;
  }
}

// Old - slower!
// К сожалению, самая быстрая на сегодняшний момент
// перестановка элементов, возможно только с помощью временной
// переменной. Все попытки решить эту задачу без нее и с
// меньшим временем выполнения не увенчались успехом.
// Медленный из-за четырех вызовов метода splice(),
// но демонстрирующий механизм выбора значения по умолчанию.

// Thanks to icutommy.
Array.prototype.exchange = function(i,j){
  if (i != j) with (this) {
    splice(i,0,splice(j,1)[0]);
    splice(j,0,splice(i+(i<j?1:-1),1)[0]);
  }
}

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

В методе не реализована проверка на правильность указания индексов. Если какой-либо индекс будет больше и равен размеру массива, это вызовет увеличение массива. Собственно это иногда и требуется. Будьте внимательны.

myArray = new Array (1,2,3,4);
myArray.exchange(0,3);
myArray.exchange(2,1);
trace (myArray);  // результат: 4,3,2,1

примечание редактора

Предыдущая версия работала некорректно. Вероятно, вы могли иметь проблемы с использованием этого прототипа. Спасибо товарищу icutommy за поправку.


Array : подсчет определенных значений

Home > Array > подсчет определенных значений

подсчет определенных значений

F5, MX
n/a
Version info

Version: 1.0
Created: 27.11.2002
Last modified: 27.11.2002
Cookbook entry: 27.11.2002
Cookbook update: 27.11.2002

описание

Метод возвращает число найденных значений (аргумент search).

исходный код

Array.prototype.count = function(search) {
  var i, c = 0;
  var l = this.length;
  do {
    if (this[i] == search) { c++ }
  } while (++i<l);
  return c;
}

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

myArray = [2,0,1,2,2,3,1,4,5,2,6,2];
trace(myArray.count(2));  // Результат: 4


Array : поиск минимального и максимального значений

Home > Array > поиск минимального и максимального значений

поиск минимального и максимального значений

F5, MX
bokel
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 1.10.2002
Cookbook update: 1.10.2002

описание

Метод .min() анализирует массив и возвращает индекс элемента с минимальным значением.
Метод .max() анализирует массив и возвращает индекс элемента с максимальным значением.

исходный код

Array.prototype.min = function(){
  var i = this.length;
  var min = this[0];
  var idx = 0;
  while(i-- > 1){
    if (this[i] < min){ min = this[idx=i] }
  }
  return idx;
}

Array.prototype.max = function(){
  var i = this.length;
  var max = this[0];
  var idx=0;
  while(i-- > 1){
    if (this[i] > max){ max = this[idx=i] }
  }
  return idx;
}

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

a = [1,5,2,6,8];
idx = a.min();
trace("Found minimum " + a[idx] + " at " + idx);
idx = a.max();
trace("Found maximum " + a[idx] + " at " + idx);


Array : поиск первого вхождения элемента в массив

Home > Array > поиск первого вхождения элемента в массив

поиск первого вхождения элемента в массив

F5, MX
n/a
Version info

Version: 1.1
Created: 5.1.2003
Last modified: 5.1.2003
Cookbook entry: 5.1.2003
Cookbook update: 5.1.2003

описание

метод; возвращает индекс элемента для первого совпадения (аргумент find). Если значение не найдено, метод возвращает -1.

исходный код

// Вариант А
Array.prototype.indexOf = function(find){
  var l = this.length;
  var i = -1;
  do {} while ((++i<=l)&&(this[i]!=find));
  return (i>l ? -1 : i);
}

// Вариант Б
Array.prototype.indexOf = function(find) {
  var l = this.length;
  if (l > 0) {
    var i = 0;
    do {
       if (this[i] == find) { return i; }
    } while (++i<l);
  }
  return -1;
}

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

n/a

примечание редактора

Я привел два варианта решения подобной задачи. Вариант "Б" выполняется немного быстрее. Вариант "А" смотрится компактней и не использует принудительный выход из цикла.


Array : поиск последнего вхождения элемента в массив

Home > Array > поиск последнего вхождения элемента в массив

поиск последнего вхождения элемента в массив

F5, MX
n/a
Version info

Version: 1.1
Created: 5.1.2003
Last modified: 5.1.2003
Cookbook entry: 5.1.2003
Cookbook update: 5.1.2003

описание

метод; возвращает индекс элемента для последнего совпадения (аргумент find). Если значение не найдено, метод возвращает -1.

исходный код

Array.prototype.lastIndexOf = function(find){
  var i = this.length-1;
  if (i >= 0) do {
    if (this[i] == find) { return i; }
  } while (i-- > 0);
  return -1;
}

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

n/a


Array : проверка на вхождение элемента в массив

Home > Array > проверка на вхождение элемента в массив

проверка на вхождение элемента в массив

F5, MX
n/a
Version info

Version: 1.1
Created: 5.1.2003
Last modified: 5.1.2003
Cookbook entry: 5.1.2003
Cookbook update: 5.1.2003

описание

Метод проверят вхождение элемента в массиве (аргумент find). Возвращает True в случае если такой элемент существует или False в противном случае. Этот метод должен использоваться совместно с методом indexOf - поиск первого вхождения элемента в массив.

исходный код

Array.prototype.in_array = function(find){
  return (this.indexOf(find) > -1 ? true : false);
}

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

n/a


Array : случайная перестановка элементов массива

Home > Array > случайная перестановка элементов массива

случайная перестановка элементов массива

F5, MX
MSA
Version info

Version: 1.0
Created: 4.11.2002
Last modified: 4.11.2002
Cookbook entry: 4.11.2002
Cookbook update: 4.11.2002

описание

метод без аргументов, переставляет элементы случайным образом. Метод основан на алгоритме Фишера-Йетса и реализует перестановку с сохранением одинакового числа вероятностей для каждой возможной комбинации.

исходный код

Array.prototype.shuffle = function() {
  var i = this.length-1;
  if (i) do {
    this.exchange(i, Math.floor(Math.random()*(i+1)));
  } while (--i);
}

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

Этот метод должен использоваться совместно с методом "exchange" (перестановка элементов массива).

myArray = new Array (1,2,3,4,5,6,7,8,9,10);
myArray.shuffle();
trace (myArray);


Array : сортировка алгоритмом Quick Sort

Home > Array > сортировка алгоритмом Quick Sort

сортировка алгоритмом Quick Sort

F5, MX
Andrй Vallieres
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 1.10.2002
Cookbook update: 1.10.2002

описание

Метод реализует сортировку элементов массива алгоритмом Quick Sort. (На сегодняшний день, алгоритм Quick Sort считается самым быстрым. Автор алгоритма математик Хоаp.)

исходный код

Array.prototype.qSort = function ( low0, high0 ){
  var low = low0;
  var high = high0;
  var mid;
  if ( high0 > low0){
    mid = this[ Math.round( ( low0 + high0 ) / 2 ) ];
    while( low <= high ){
      while ( ( low < high0 ) and ( this[low] < mid ) ){
        low++;
      }
      while ( ( high > low0 ) and ( this[high] > mid ) ){
        high--;
      }
      if( low <= high ) {
        T = this[low];
        this[low] = this[high];
        this[high] = T;
        low++;
        high--;
      }
    }
    if ( low0 < high ){
       this.qSort ( low0, high );
    }
    if ( low < high0 ){
       this.qSort ( low, high0 );
    }
    return this;
  }
}

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

anyArray.qSort (0, anyArray.length - 1);

примечание редактора

Описание алгоритма Quick Sort (быстрая сортировка): Весь набор данных представляется в виде отрезка. Затем выбирается число, которое находится между минимальным и максимальным значениях в этом отрезке. Самый оптимальный вариант для поиска этого числа за рациональное время, - не имеет решения. Хоаp предлагал брать случайное число. (В приведенном прототипе это число берется из середины массива.) Далее отрезок делится на две части. Где слева помещаются значения меньшие задуманного числа, а в правой большие. Такие операции производятся рекурсивно для двух получившихся частей. Каждая часть становится отрезком и снова делится. Это будет происходить до тех пор, пока отрезок можно разделить.


Array : ускоренный метод push()

Home > Array > ускоренный метод push()

ускоренный метод push()

F5, MX
klitze7-c004
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 1.10.2002
Cookbook update: 9.10.2002

описание

Метод выполняется на 60-65% быстрее, чем стандартный метод push(). Важное отличие этого метода в том, что он не возвращает размер массива и не может добавлять сразу несколько значений.

исходный код

Array.prototype.pushIt = function(e){
  this[this.length] = e;
}

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

x = new Array();
for (var i = 0; i < 100; i++) { x.pushIt(i) }
trace(x.length);
// результат: 100


Color

изменение Яркости (Bright) | F5, MX | Robert Penner
инверсия RGB | F5, MX | senocular
инверсия Цвета (Invert Color) | F5, MX | Robert Penner
оттенок (Tint) | F5, MX | Robert Penner
преобразование цвета в оттенки серого | F5, MX | MSA
случайный заданный цвет | F5, MX | MSA
случайный цвет | F5, MX | senocular


Color : изменение Яркости (Bright)

Home > Color > изменение Яркости (Bright)

изменение Яркости (Bright)

F5, MX
Robert Penner
Version info

Version: n/a
Created: 1.6.2001
Last modified: 30.6.2001
Cookbook entry: 6.10.2002
Cookbook update: 6.10.2002

описание

Метод позволяет изменять яркость, как на панели эффектов в Flash редакторе. Аргумент bright должен находится в диапазоне 0..100.

исходный код

Color.prototype.setBrightness = function (bright) {
  var percent = 100 - Math.abs(bright);
  var offset = 0;
  if (bright > 0) offset = 256 * (bright / 100);
  var trans = new Object();
  trans.ra = trans.ga = trans.ba = percent;
  trans.rb = trans.gb = trans.bb = offset;
  this.setTransform(trans);
}

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

col = new Color (mc);
col.setBrightness(80);

примечание редактора

Код можно записать короче. И заодно избавиться от временных переменных.

Color.prototype.setBrightness = function (value) {
  var t = new Object();
  t.ra = t.ga = t.ba = 100-Math.abs(value);
  t.rb = t.gb = t.bb = (value > 0 ? 256*(value/100) : 0);
  this.setTransform(t);
}
col = new Color (mc);
col.setBrightness(80);


Color : инверсия RGB

Home > Color > инверсия RGB

инверсия RGB

F5, MX
senocular
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 22.11.2002
Cookbook update: 22.11.2002

описание

Метод без аргументов; инвертирует текущий цвет rgb.

исходный код

Color.prototype.invertRGB = function(){
  this.setRGB(0xFFFFFF-this.getRGB());
}

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

// interts the color of this clip when the mouse is down
onClipEvent(load){
  col = new Color(this);
  col.setRGB(0xff8822);
}

onClipEvent(mouseDown){
  col.invertRGB(); //invert
}

onClipEvent(mouseUp){
  col.invertRGB(); // unvert ;)
}


Color : инверсия Цвета (Invert Color)

Home > Color > инверсия Цвета (Invert Color)

инверсия Цвета (Invert Color)

F5, MX
Robert Penner
Version info

Version: n/a
Created: 15.6.2001
Last modified: 15.6.2001
Cookbook entry: 1.10.2002
Cookbook update: 1.10.2002

описание

Метод создает негатив, путем инвертирования всех цветов.

исходный код

Color.prototype.negative = function () {
  var trans = new Object();
  trans.ra = trans.ga = trans.ba = -100;
  trans.rb = trans.gb = trans.bb = 255;
  this.setTransform(trans);
}

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

col = new Color (mc);
col.negative();


Color : оттенок (Tint)

Home > Color > оттенок (Tint)

оттенок (Tint)

F5, MX
Robert Penner
Version info

Version: 1.0
Created: 1.6.2001
Last modified: 30.6.2001
Cookbook entry: 9.10.2002
Cookbook update: 9.10.2002

описание

Метод реализует эффект Tint как на панели эффектов в Flash редакторе. Аргументы r,g,b должны находится в диапазоне 0-255, amount 0-100.

исходный код

Color.prototype.setTint = function (r, g, b, amount) {
  var percent = 100 - amount;
  var trans = new Object();
  trans.ra = trans.ga = trans.ba = percent;
  var ratio = amount / 100;
  trans.rb = r * ratio;
  trans.gb = g * ratio;
  trans.bb = b * ratio;
  this.setTransform(trans);
}

Color.prototype.removeTint = function () {
  this.setTint (0, 0, 0, 0);
}

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

myColor = new Color (this);
myColor.setTint(100,100,100,50);

примечание редактора

Я оптимизировал этот код, в результате чего он стал быстрее на 50-54%. Вам может показаться странным, что некоторые операции вычисляются многократно. Но в некоторых случае это оказывается быстрее, чем заводить временную переменную с промежуточными значениями.

Color.prototype.setTint = function (r, g, b, amount) {
  this.setTransform({ra: 100-amount,
                     ga: 100-amount,
                     ba: 100-amount,
                     rb: r*amount/100,
                     gb: g*amount/100,
                     bb: b*amount/100});
}


Color : преобразование цвета в оттенки серого

Home > Color > преобразование цвета в оттенки серого

преобразование цвета в оттенки серого

F5, MX
MSA
Version info

Version: 1.0
Created: 8.12.2002
Last modified: 8.12.2002
Cookbook entry: 10.12.2002
Cookbook update: 10.12.2002

описание

Метод конвертирует RGB цвет в Grayscale и основан на том же алгоритме, на котором работают черно-белые телевизоры. Метод можно вызывать с аргументом и без него. Если аргумент rgb был задан, то он конвертируется в оттенки серого и устанавливается для объекта Color, иначе будет взят текущий цвет объекта (если он был установлен методом setRGB).

исходный код

Color.prototype.toGrayscale = function(rgb) {
  if (rgb == null) { rgb = this.getRGB() }
  var gray = Math.round(
    (.3*(rgb&0xFF0000)>>16)+
    (.59*(rgb&0x00FF00)>>8)+
    (.11*(rgb&0x0000FF)));
  this.setRGB(gray<<16|gray<<8|gray);
}

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

col1 = new Color(aaa);
col1.setRGB(0xFF0000);
col1.toGrayscale();

col2 = new Color(bbb);
col2.toGrayscale(0x00FF00);


Color : случайный заданный цвет

Home > Color > случайный заданный цвет

случайный заданный цвет

F5, MX
MSA
Version info

Version: 1.0
Created: 5.10.2002
Last modified: 5.10.2002
Cookbook entry: 6.10.2002
Cookbook update: 6.10.2002

описание

Метод генерирует новый, случайный цвет объекта Color, используя заданный диапазон значений.

исходный код

// rl,rh - red low .. red height
// gl,gh - green low .. green height
// bl,bh - blue low .. blue height
Color.prototype.setRandomRange = function(rl,rh,gl,gh,bl,bh){
  this.setRGB(
    (rl + rl==rh ? 0 : Math.round(Math.random()*(rh-rl))) << 16 |
    (gl + gl==gh ? 0 : Math.round(Math.random()*(gh-gl))) << 8  |
    (bl + bl==bh ? 0 : Math.round(Math.random()*(bh-bl)))
  );
  return this.getRGB();
}

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

В примере цвет клипа изменяется только по Красной составляющей.

onClipEvent (load) {
  col = new Color(this);
}

onClipEvent (enterFrame) {
  // Change only RED
  col.setRandomRange(0,255,0,0,0,0);
}


Color : случайный цвет

Home > Color > случайный цвет

случайный цвет

F5, MX
senocular
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 6.10.2002
Cookbook update: 6.10.2002

описание

Метод генерирует, устанавливает и возвращает случайный цвет для объекта Color.

исходный код

Color.prototype.setRandom = function(){
  var ran = Math.floor(Math.random()*0xFFFFFF);
  this.setRGB(ran);
  return ran;
}

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

col = new Color(_root.clip);
col.setRandom();


Date

локализация метода toString() | F5, MX | Авлин Анатолий
проверка на високосный год | F5, MX | n/a


Date : локализация метода toString()

Home > Date > локализация метода toString()

локализация метода toString()

F5, MX
Авлин Анатолий
Version info

Version: 1.1
Created: 1.11.2001
Last modified: 9.10.2002
Cookbook entry: 9.10.2002
Cookbook update: 9.10.2002

описание

Метод getMonthNameRu() возвращает название месяца; getDayNameRu() возвращает день недели; toStringRu() возвращает полную дату в виде строки.

исходный код

Date.prototype.getMonthNameRu = function () {
  return ["\xFFнварь","февраль","март","апрель","май","июнь","июль",
  "август","сент\xFFбрь","окт\xFFбрь","но\xFFбрь","декабрь"][this.getMonth()];
}

Date.prototype.getDayNameRu = function () {
  return ["Воскресенье","Понедельник","Вторник","Среда",
  "Четверг","П\xFFтница","Суббота"][this.getDay()];
}

Date.prototype.toStringRu = function () {
  return this.getDayNameRu() add " " add this.getDate() add " " add
  this.getMonthNameRu() add " " add this.getFullYear() add " " add
  this.getHours() add ":" add this.getMinutes() add ":" add this.getSeconds();
}

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

d = new Date();
trace (d.toStringRu());
// Результат: Среда 9 октябрь 2002 0:34:25


Date : проверка на високосный год

Home > Date > проверка на високосный год

проверка на високосный год

F5, MX
n/a
Version info

Version: 1.0
Created: 8.10.2002
Last modified: 8.10.2002
Cookbook entry: 8.10.2002
Cookbook update: 8.10.2002

описание

Метод возвращает True, если текущий или переданный в аргументе (year) год является високосным, в противном случае возвращается False.

исходный код

Date.prototype.isLeapYear = function(year) {
  if (year == null) { year = this.getFullYear() }
  return (year < 1601 && year % 4 == 0) ||
         (year % 400 == 0 && year % 100 != 0) ||
          year % 4 == 0 ? true : false;
}

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

t = new Date();
trace(t.isLeapYear(2004)); // true
trace(t.isLeapYear()); // false
// на этот момент был год 2002 :)


Function

win2koi F5, MX VM


Function : win2koi

Home > Function > win2koi

win2koi

F5, MX
VM
Version info

Version: 1.0
Created: 16.2.2002
Last modified: 16.2.2002
Cookbook entry: 2.10.2002
Cookbook update: 2.10.2002

описание

Конвертация строки из WIN-1251 в KOI8-R кодировку

исходный код

function win2koi(text) {
  var koi,w2k,k,i,N=length(text);
  koi ="225226247231228229246250233234235236237238239240";
  koi+="242243244245230232227254251253255249248252224241";
  koi+="193194215199196197214218201202203204205206207208";
  koi+="210211212213198200195222219221199217216220192209";
  while(i++<N) {
    k=ord(substring(text,i,1))-192;
    if(k>=0){w2k+=chr(substring(koi,3*k+1,3));
    } else if(k==-8) {w2k+=chr(163);
    } else if(k==-24){w2k+=chr(179);
    } else {w2k+=substring(text,i,1);}
  }
  delete koi; delete k; delete i; delete N;
  return(w2k);
}

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

Достаточно скопировать ее код и вставить куда-нибудь в свой проект, например в первый кадр основной линейки (root). В этом случае ее можно будет вызывать из любого места клипа командой:

text = _root.win2koi(text);


Key

Returns the last key pressed F5, MX flashguru


Key : Returns the last key pressed

Home > Key > Returns the last key pressed

Returns the last key pressed

F5, MX
flashguru
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 1.10.2002
Cookbook update: 1.10.2002

описание

Метод возвращает последнюю нажатую клавишу в виде строки.

исходный код

Key.last=function(){
  return String.fromCharCode(Key.getCode());
}

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

n/a


Math

вхождение в диапазон | F5, MX | n/a
вычисление дистанции (Distance) | F5, MX | jonox@walmac.com.au
градусы и радианы | F5, MX | Anton Volkov
округление дробных чисел до заданного знака | F5, MX | Ф. Потрошитель
поиск среднего значения | F5, MX | n/a
преобразование между полярной и картезианской системами координат | F5, MX | Авлин Анатолий
процентное отношение | F5, MX | MSA
случайные числа по закону Гаусса | F5, MX | MSA


Math : вхождение в диапазон

Home > Math > вхождение в диапазон

вхождение в диапазон

F5, MX
n/a
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 7.1.2003
Cookbook update: 7.1.2003

описание

метод сравнивает значение аргумента x с диапазоном заданным аргументами min и max. Если какой-либо лимит был превышен или принижен, метод возвращает число ограничивающие диапазон (_min или _max), или возвращает число x без изменения.

исходный код

Math.constrain = function(x, _min, _max){
  return this.min(this.max(x, _min), _max);
};

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

trace(Math.constrain(0,5,20));    // 5
trace(Math.constrain(10,5,20));   // 10
trace(Math.constrain(30,5,20));   // 20


Math : вычисление дистанции (Distance)

Home > Math > вычисление дистанции (Distance)

вычисление дистанции (Distance)

F5, MX
jonox@walmac.com.au
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 1.10.2002
Cookbook update: 1.10.2002

описание

Метод вычисляет расстояние между двумя объектами.

исходный код

Math.distance = function (x1, y1, x2, y2) {
  var deltaX = x2-x1;
  var deltaY = y2-y1;
  return Math.sqrt(deltaX*deltaX + deltaY*deltaY);
}

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

n/a


Math : градусы и радианы

Home > Math > градусы и радианы

градусы и радианы

F5, MX
Anton Volkov
Version info

Version: n/a
Created: 24.1.2003
Last modified: 24.1.2003
Cookbook entry: 30.1.2003
Cookbook update: 30.1.2003

описание

Метод toRadians() возвращает значение аргумента degrees в радианах. Метод toDegrees() возвращает значение аргумента radians в градусах.

исходный код

// New - fast!
// Новая версия прототипов подразумевает не выполнять
// повторяющиеся вычисления, а изначально посчитать их
// с высокой точностью.
// Это сократит время выполнения и объем выходного swf-файла.

Math.toRadians = function(degrees){
  return degrees*0.017453292519943295769236907684886;
}

Math.toDegrees = function(radians){
  return radians/0.017453292519943295769236907684886;
}

// Old - slower!
// Я оставлю также старую версию, для лучшей наглядности
// алгоритма преобразования.

Math.toRadians = function(degrees){
  return degrees / 180 * Math.PI;
}

Math.toDegrees = function(radians){
  return radians * 180 / Math.PI;
}

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

n/a


Math : округление дробных чисел до заданного знака

Home > Math > округление дробных чисел до заданного знака

округление дробных чисел до заданного знака

F5, MX
Ф. Потрошитель
Version info

Version: 1.0
Created: 15.4.2002
Last modified: 22.9.2002
Cookbook entry: 2.10.2002
Cookbook update: 2.10.2002

описание

Метод возвращает округленное до заданного знака (аргументом decPlaces) дробное число (theNumber).

исходный код

Math.roundTo = function(theNumber, decPlaces) {
  if (decPlaces>=0) {
    var temp = this.pow(10, decPlaces);
    return this.round(theNumber*temp)/temp;
  }
}

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

trace (Math.roundTo(1.14579, 2)); // результат: 1.15


Math : поиск среднего значения

Home > Math > поиск среднего значения

поиск среднего значения

F5, MX
n/a
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 9.10.2002
Cookbook update: 9.10.2002

описание

Метод вычисляет и возвращает среднее значение переданных аргументов.

исходный код

Math.average = function (){
  var s = 0;
  for (var i=0; i<arguments.length; i++){
    s += Number(arguments[i]);
  }
  return s/arguments.length;
}

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

trace (Math.average(10,20)); // Результат: 15
trace (Math.average(20,50,100,200,80)); // Результат: 90


Math : преобразование между полярной и картезианской системами координат

Home > Math > преобразование между полярной и картезианской системами координат

преобразование между полярной и картезианской системами координат

F5, MX
Авлин Анатолий
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 9.1.2003
Cookbook update: 9.1.2003

описание

методы; выполняют преобразование между полярной и картезианской системами координат. Должны использоваться вместе с методами .toRadians(), .toDegrees() (градусы и радианы).

исходный код

//  Polar To Cartesian
Math.toCartesian = function(r, a) {
  var ar = Math.toRadians(a);
  var X = r*Math.cos(ar);
  var Y = r*Math.sin(ar);
  return {X:X, Y:Y};
}

//  Cartesian To Polar
Math.toPolar = function(x, y) {
  var R = Math.sqrt(x*x + y*y);
  var A = Math.toDegrees(Math.atan2(y, x));
  return {R:R, A:A};
}

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

n/a


Math : процентное отношение

Home > Math > процентное отношение

процентное отношение

F5, MX
MSA
Version info

Version: 1.0
Created: 20.4.2002
Last modified: 20.4.2002
Cookbook entry: 6.10.2002
Cookbook update: 6.10.2002

описание

Очень простой и полезный метод. Возвращает процентное отношение l к h. Для преобразование к целым числам используйте Math.round().

исходный код

Math.percentage = function(l,h){
  return (l/h)*100;
}

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

percent = Math.percentage(50,100); // Результат: 50
percent = Math.percentage(100,50); // Результат: 200

// и еще

bytesPercent = Math.percentage(mc.getBytesLoaded(), mc.getBytesTotal());
scrollPercent = Math.percentage(textfield.scroll,textfield.maxscroll);


Math : случайные числа по закону Гаусса

Home > Math > случайные числа по закону Гаусса

случайные числа по закону Гаусса

F5, MX
MSA
Version info

Version: 1.0
Created: 14.5.2002
Last modified: 14.5.2002
Cookbook entry: 2.10.2002
Cookbook update: 2.10.2002

описание

Метод генерирует и возвращает случайные числа с нормальным распределением, со стандартным отклонением 1 и нулевым математическим ожиданием (то есть распределенные по закону Гаусса).

исходный код

Math.gaussian_random = function () {
  var a,b,c;
  do {
     a = 2*this.random()-1;
     b = 2*this.random()-1;
     c = a*a + b*b;
  } while (c >= 1);
  return b * this.sqrt( (-2 * this.log(c)) / c );
}

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

for (var i=0; i < 4; i++){
  trace ( Math.gaussian_random() );
}

// результат:
// -0.553706737520932
// 1.73354889457448
// -1.468329587323
// 1.61771273101301


Modules

MSA String Utilities 1.3 | F5, MX | MSA
String Utility Component | F5, MX | Mike Chambers
дополнительные методы для объекта Color (colorproto.as) | F5, MX | Peter Hall
объект Таймер. (timer.as) | MX | flashAPI
перекашивание клипа (skew.as) | F5, MX | flashAPI


Modules : MSA String Utilities 1.3

Home > Modules > MSA String Utilities 1.3

MSA String Utilities 1.3

F5, MX
MSA
Version info

Version: 1.3
Created: 27.7.2002
Last modified: 1.11.2002
Cookbook entry: 20.11.2002
Cookbook update: 20.11.2002

описание

Модуль предназначен для использования в пакетах Macromedia Flash 5 или выше. Реализует достаточный набор расширенных методов объекта String для изменения, преобразования и форматирования текста. В особенности удобен в таких случаях, когда необходимо использовать моноширинные шрифты, но предназначен не только для этого. Очень быстрый и оптимизированный.

исходный код

//*****************************************************************************/
//   MSA String Utilities                 Version 1.3                         //
//   (c) Copyright 2001-2002              All Rights Reserved                 //
//   Sergey A. Moisevich (MSA)            webdesign@ring.by                   //
//   Created 27/07/2002                   Last Modified 1/11/2002             //
//*****************************************************************************/
//   Request                              Flash Player 5 or higher            //
//*****************************************************************************/

String.prototype.constructor.MSAStringVersion = 1.3;

// Constant declarations

String.prototype.LINE  = "\n";
String.prototype.TAB   = "\t";
String.prototype.SPACE = " ";
String.prototype.ZERO  = "0";
String.prototype.EMPTY = "";

String.prototype.isEmpty = function(){
  return (this.length == 0);
}

String.prototype.insert = function(index, str) {
  return this.substr(0,index) + str + this.substr(index);
}

String.prototype.del = function(index, count) {
  return this.substr(0,index) + this.substr(index+count);
}

String.prototype.truncate = function(width) {
  return this.substr(0,width);
}

String.prototype.truncateOf = function(search){
  var p = this.indexOf(search);
  return (p >= 0 ? this.substr(0,p) : this);
}

String.prototype.make = function (char, width) {
  var s = char.isEmpty() ? this.SPACE : char;
  do { s = s + s } while (s.length < width);  // fix Flash 5 bag: s += s
  return s.length == width ? s : s.truncate(width);
}

String.prototype.fill = function (str, count) {
  if (str.isEmpty()) { return this.EMPTY }
  var s = str;
  var len = s.length*count;
  do { s = s + s } while (s.length < len);
  return s.length == len ? s : s.truncate(len);
}

String.prototype.addCharL = function (char, width) {
  return this.make(char, width-this.length) + this;
}

String.prototype.addCharR = function (char, width) {
  return this + this.make(char, width-this.length);
}

String.prototype.left = function (width) {
  return this.addCharR(this.SPACE, width);
}

String.prototype.center = function (width) {
  var half = Math.floor(width/2 + this.length/2);
  return this.addCharL(this.SPACE, half) + this.make(this.SPACE, width-half);
}

String.prototype.right = function (width) {
  return this.addCharL(this.SPACE, width);
}

String.prototype.align = function (obj) {
  if (obj.a < 0) { return this.left(obj.w) }
  return obj.a > 0 ? this.right(obj.w) : this.center(obj.w);
}

String.prototype.charReplace = function (index, char) {
  return this.substr(0,index) + char + this.substr(index+1);
}

String.prototype.replace = function(search, replace){
  var tlen = this.length;
  var slen = search.length-1;
  var ch, ch2 = search.charAt(0);
  var f = false, i = 0;
  var s = new String();
  do {
    ch = this.charAt(i);
    if(ch == ch2){
      f = true;
      var j = 0;
      while (++j <= slen) {
        if(this.charAt(i+j) != search.charAt(j)){
           f = false;
           break;
        }
      }
    }
    if(f){
      s = s + replace;  // fix Flash 5 bag: s += replace
      i += slen;
      f = false;
    } else { s = s + ch }
  } while (++i < tlen);
  return s;
}

String.prototype.remove = function(search){
  return this.replace(search, this.EMPTY);
}

String.prototype.delSpace = function(){
  return this.replace(this.SPACE, this.EMPTY);
}

String.prototype.tab2space = function(num){
  return this.replace(this.TAB, this.make(this.SPACE,num));
}

String.prototype.trimL = function(){
  var i = 0, len = this.length;
  do {} while (i++ < len && this.charCodeAt(i) < 33);
  return i < len ? this.substring(i) : this.EMPTY;
}

String.prototype.trimR = function(){
  var i = this.length-1;
  do {} while (i-- >= 0 && this.charCodeAt(i) < 33);
  return i == -1 ? this.EMPTY: this.truncate(i+1);
}

String.prototype.trim = function(){
  return this.trimL().trimR();
}

String.prototype.addWords = function(){
  var l = arguments.length;
  if (l==0) { return this }
  var i = 0, s = this;
  do {
    s = s + (this.charCodeAt(this.length-1) > 32 ?
      this.SPACE + arguments[i] : arguments[i]);
  } while (++i < l);
  return s;
}

String.prototype.addLines = function(){
  var l = arguments.length;
  if (l==0) { return this }
  var i = 0, s = this + (this.isEmpty() ? arguments[0] : this.LINE + arguments[0]);
  while (++i < l) {
    s = s + this.LINE + arguments[i];
  }
  return s;
}

String.prototype.floatFrom = function (num, prec) {
  var s = (Math.round(Math.pow(10,prec)*num)/Math.pow(10,prec)).toString();
  if (prec == 0 || prec == null) { return s }
  var p = s.indexOf(".");
  if (p < 0) { return s + "." + this.make(this.ZERO, prec) }
  return s + this.make(this.ZERO, prec-(s.length-p-1));
}

String.prototype.numberFrom = function (num, prec) {
  var s = this.floatFrom(num, prec);
  var p = (prec > 0 ? s.indexOf(".") : s.length) -3;
  var m = s.charCodeAt(0) == 45 ? 1 : 0;
  for (var i=p; i > m; i-=3){ s = s.insert(i,",") }
  return s;
}

String.prototype.decimalFrom = function (num, width) {
  var s = Math.round(num).toString();
  var p = s.charCodeAt(0) == 45 ? 1 : 0;
  return width > s.length-p ? s.insert(p,this.make(this.ZERO,width-s.length+p)) : s;
}

String.prototype.hexFrom = function (num, width) {
  var s = Math.round(num).toString(16);
  var p = s.charCodeAt(0) == 45 ? 1 : 0;
  return width > s.length-p ? s.insert(p,this.make(this.ZERO,width-s.length+p)) : s;
}

String.prototype.binaryFrom = function (num, width){
  var s = Math.round(num).toString(2);
  var p = s.charCodeAt(0) == 45 ? 1 : 0;
  return width > s.length-p ? s.insert(p,this.make(this.ZERO,width-s.length+p)) : s;
}

String.prototype.format = function(){
  if (arguments.length == 0 || this.isEmpty() ) { return this }
  var j, ch2, f = false, arg = 0;
  var len = this.length, i = 0;
  var s = new String();
  do {
    var ch = this.charAt(i);
    if (ch == "%") {
      j = i+1;
      var argsave, tmp;
      var num = 0;
      var _o = {w:0,a:1,p:2};
      do {
        ch2 = this.charCodeAt(j);
        if (ch2 == 45) {
          _o.a = -1;
          continue;
        } else if (ch2 == 124) {
          _o.a = 0;
          continue;
        } else if (ch2 > 47 && ch2 < 58) {
          num = num*10+(ch2-48);
          continue;
        } else if (ch2 == 46) {  //.
          if (num>0) { _o.w = num; num = 0 }
          _o.pf = true;
          continue;
        } else if (ch2 == 58) { //:
          argsave = arg;
          arg = num;
          num = 0;
          continue;
        }
        if (ch2 > 97) {
          if (_o.pf) { _o.p = num }
          else if (_o.w == 0) { _o.w = num }
        }
        if (ch2 == 98) {         //b
          tmp = this.binaryFrom(arguments[arg], _o.p);
          f = true;
        } else if (ch2 == 100) { //d
          tmp = this.decimalFrom(arguments[arg], (_o.pf == true ? _o.p : null) );
          f = true;
        } else if (ch2 == 102) { //f
          tmp = this.floatFrom(arguments[arg], (_o.pf == true ? _o.p : null) );
          f = true;
        } else if (ch2 == 110) { //n
          tmp = this.numberFrom(arguments[arg], (_o.pf == true ? _o.p : null) );
          f = true;
        } else if (ch2 == 115) { //s
          tmp = String(arguments[arg]);
          if (_o.pf) { tmp = tmp.truncate(_o.p) }
          f = true;
        } else if (ch2 == 120) { //x
          tmp = this.hexFrom(arguments[arg], (_o.pf == true ? _o.p : null) );
          f = true;
        }
        if (f) {
          if (_o.w != 0) { tmp = tmp.align(_o) }
          s = s + tmp;
          if (argsave != nill) { arg = argsave }
          else { arg++ }
          i = j;
          f = false;
          break;
        } else {
          s = s + ch;
          break;
        }
      } while(++j < len);
      continue;
    } else { s = s + ch }
  } while (++i < len);
  return s;
}

// Adapted for Russian charset
// Unicode support
String.prototype.upperCase = function() {
  var i = 0;
  var l = this.length;
  var s = new String();
  var e = "ё".charCodeAt(0);
  var lUni = "а".charCodeAt(0)-1;
  var hUni = lUni+33;
  do {
    var ch = this.charCodeAt(i);
    if ((ch>96 && ch<123) || (ch>lUni && ch<hUni)) {
       s = s + String.fromCharCode(ch-32);
    } else if (ch == e) {
       s = s + "Ё";
    } else {
       s = s + String.fromCharCode(ch);
    }
  } while (++i<l);
  return s;
}

// Adapted for Russian charset
// Unicode support
String.prototype.lowerCase = function() {
  var i = 0;
  var l = this.length;
  var s = new String();
  var e = "Ё".charCodeAt(0);
  var lUni = "А".charCodeAt(0)-1;
  var hUni = lUni+33;
  do {
    var ch = this.charCodeAt(i);
    if ((ch>64 && ch<91) || (ch>lUni && ch<hUni)) {
      s = s + String.fromCharCode(ch+32);
    } else if (ch == e) {
      s = s + "ё";
    } else {
      s = s + String.fromCharCode(ch);
    }
  } while (++i<l);
  return s;
}

// hide from for..in loops
//========================
ASSetPropFlags(String.prototype,
   ["lowerCase", "upperCase", "format", "binaryFrom", "hexFrom", "decimalFrom",
    "numberFrom", "floatFrom", "addLine", "addWord", "trim", "trimR", "trimL",
    "tab2space", "delSpace", "remove", "replace", "charReplace", "align", "right",
    "center", "left", "addCharR", "addCharL", "fill", "make", "truncateOf",
    "truncate", "del", "insert", "isEmpty", "EMPTY", "ZERO", "SPACE", "TAB",
    "LINE"], 1);

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

n/a


Modules : String Utility Component

Home > Modules > String Utility Component

String Utility Component

F5, MX
Mike Chambers
Version info

Version: 1.5
Created: n/a
Last modified: n/a
Cookbook entry: 10.10.2002
Cookbook update: 10.10.2002

описание

Модуль расширяет методы объекта String.

исходный код

/*
String Utility Component version 1.5

Mike Chambers

thanks to Branden Hall, Ben Glazer, Christian Cantrell, Nik Schramm
*/

/*
    This allows user to check from other include files whether or not the stringUtils
    library has been included.

    Example:

    if(!String.stringUtilsDefined)
    {
        trace("stringUtils.as not found");
    }
*/
String.prototype.constructor.stringUtilsDefined = true;
String.prototype.constructor.stringUtilsVersion = 1.5;

/**
*	This methods trims all of the white space from the left side of a String.
*/
String.prototype.ltrim = function()
{

    var size = this.length;
    for(var i = 0; i < size; i++)
    {
        if(this.charCodeAt(i) > 32)
        {
            return this.substring(i);
        }
    }
    return "";

}

/**
*	This methods trims all of the white space from the right side of a String.
*/
String.prototype.rtrim = function()
{
    var size = this.length;
    for(var i = size; i > 0; i--)
    {
        if(this.charCodeAt(i) > 32)
        {
            return this.substring(0, i + 1);
        }
    }
    return "";
}

/**
*	This methods trims all of the white space from both sides of a String.
*/
String.prototype.trim = function()
{
    return this.rtrim().ltrim();
}

/**
*	This methods returns true if the String begins with the string passed into
*	the method. Otherwise, it returns false.
*/

String.prototype.beginsWith = function(s) {
    return (s == this.substring(0, s.length));
};

/**
*	This methods returns true if the String ends with the string passed into
*	the method. Otherwise, it returns false.
*/
String.prototype.endsWith = function(s) {
    return (s == this.substring(this.length - s.length));
};

String.prototype.remove = function(remove)
{
    return this.replace(remove, "");
}

String.prototype.replace = function(replace, replaceWith)
{
    sb = new String();
     found = false;
    for (var i = 0; i < this.length; i++)
    {
        if(this.charAt(i) == replace.charAt(0))
        {
            found = true;
            for(var j = 0; j < replace.length; j++)
            {
                if(!(this.charAt(i + j) == replace.charAt(j)))
                {
                    found = false;
                    break;
                }
            }
            if(found)
            {
                sb += replaceWith;
                i = i + (replace.length - 1);
                continue;
            }
        }
        sb += this.charAt(i);
    }
    return sb;
}

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

n/a


Modules : дополнительные методы для объекта Color (colorproto.as)

Home > Modules > дополнительные методы для объекта Color (colorproto.as)

дополнительные методы для объекта Color (colorproto.as)

F5, MX
Peter Hall
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 10.10.2002
Cookbook update: 10.10.2002

описание

Модуль добавляет в объект Color методы для работы с HSB представлением цветов и некоторые эффекты.

исходный код

/*****************************************************
*
*	Peter Hall 2002
*	www.peterjoel.com
*
*	Additional methods for the Color object
*
*	myCol.setHSB({H:hue, S:sat, B:bri})
*	myCol.getHSB()
*		- returns {H:hue, S:sat, B:bri}
*	myCol.inkOver(0xRRGGBB,percent)
*	myCol.setTint(0xRRGGBB,percent)
*	myCol.colorize(0xRRGGBB,0xRRGGBB)
*
*	Static methods:
*
*	Color.RGB_to_HSB(0xRRGGBB)
*		- returns {H:hue, S:sat, B:bri}
*	Color.HSB_to_RGB({H:hue, S:sat, B:bri})
*		- returns 0xRRGGBB
*
*
*	The colour-space conversion is based purely on
*	my own interpretation and intuitive notion of the
*	colour spaces. These methods may produce results
*	which vary slightly from conversions carried out
*	by different graphical software that you may be
*	used to.
*
*
*	Please feel free to use this sample for your own
*	work. If you find it useful, please tell me about
*	it - I'd love to hear.
*
*	If this sample enables you or your company to make
*	significant financial gain, you might like to make
*	a contribution to show your appreciation. A good
*	guideline is the value of one hour's work at the
*	rate you (or your company) are charging for the
*	project.
*
******************************************************/

Color.RGB_to_HSB = function(colRGB){

    var red = (colRGB&0xFF0000)>>16;
    var gre = (colRGB&0x00FF00)>>8;
    var blu = colRGB&0x0000FF;

    var max = Math.max(red,Math.max(gre,blu));
    var min = Math.min(red,Math.min(gre,blu));

    var colHSB = {}
    colHSB.B = Math.round(max*100/255);

    if(max==min){ // if grey
        colHSB.S = 0;
        colHSB.H = 0;
    }else{
        colHSB.S = Math.round(100*(max-min)/max);
        // find hue
        var hue;
        var tmpR = (max-red)/(max-min);
        var tmpG = (max-gre)/(max-min);
        var tmpB = (max-blu)/(max-min);
        if(red==max){
            hue = tmpB - tmpG;
        }else if(gre==max){
            hue = 2 + tmpR - tmpB;
        }else if(blu==max){
            hue = 4 + tmpG - tmpR;
        }
        colHSB.H = (Math.round(hue*60) + 360)%360;
    }

    return colHSB;

}

Color.HSB_to_RGB = function(colHSB){
    var sat = colHSB.S;
    var bri = colHSB.B;

    var red, gre, blu;
    // if grey don't bother doing any more
    if(sat==0){
        red = bri;
        gre = bri;
        blu = bri;
    }else{

        var hue = (colHSB.H+360)%360;
        var hue2 = Math.floor(hue/60);

        var dif = (hue%60)/60;
        var mid1 = bri*(100-sat*dif)/100;
        var mid2 = bri*(100-sat*(1-dif))/100;
        var min = bri*(100-sat)/100;

        if(hue2 == 0){
            red = bri;
            gre = mid2;
            blu = min;
        }else if(hue2 == 1){
            red = mid1;
            gre = bri;
            blu = min;
        }else if(hue2 == 2){
            red = min;
            gre = bri;
            blu = mid2;
        }else if(hue2 == 3){
            red = min;
            gre = mid1;
            blu = bri;
        }else if(hue2 == 4){
            red = mid2;
            gre = min;
            blu = bri;
        }else{
            red = bri;
            gre = min;
            blu = mid1;
        }
    }
    return (Math.round(red*255/100)<<16 | Math.round(gre*255/100) <<8 | Math.round(blu*255/100));
}

Color.prototype.setHSB = function(colHSB){
    var hue = (colHSB.H == null) ? 0 : (360+colHSB.H)%360;
    var sat = (colHSB.S == null) ? 100 : colHSB.S;
    var bri = (colHSB.B == null) ? 100 : colHSB.B;
    this.setRGB(Color.HSB_to_RGB({H:hue,S:sat,B:bri}));
}

Color.prototype.getHSB = function(){
    return Color.RGB_to_HSB(this.getRGB());
}

// the effect of throwing ink of the colour specified
// amount is the dilution
Color.prototype.inkOver = function(col,amount){
    if(typeof(col1)=="object"){
        col1 = Color.HSB_to_RGB(col1);
    }
    var red = (col&0xFF0000)>>16;
    var gre = (col&0x00FF00)>>8;
    var blu = col&0x0000FF;

    var inkTrans = {
        ra: 100 + amount*(red/255-1),
        ga: 100 + amount*(gre/255-1),
        ba: 100 + amount*(blu/255-1)
    }
    this.setTransform(inkTrans);
}

Color.prototype.setTint = function(col,amount){
    if(typeof(col)=="object"){
        col = Color.HSB_to_RGB(col);
    }
    var red = (col&0xFF0000)>>16;
    var gre = (col&0x00FF00)>>8;
    var blu = col&0x0000FF;
    var tintTrans = {
        ra:100-amount,
        ga:100-amount,
        ba:100-amount,
        rb:red*amount/100,
        gb:gre*amount/100,
        bb:blu*amount/100
    }
    this.setTransform(tintTrans);
}
// applies colours specified in the arguments to a
// greyscale image.
// White is replaced by col1, black is replaced by col2
// greys in between are coloured smoothly between the two colours
Color.prototype.colorize = function(col1,col2){
    if(typeof(col1)=="object"){
        col1 = Color.HSB_to_RGB(col1);
    }
    if(typeof(col2)=="object"){
        col2 = Color.HSB_to_RGB(col2);
    }
    var r1 = (col1&0xFF0000)>>16;
    var g1 = (col1&0x00FF00)>>8;
    var b1 = col1&0x0000FF;
    var r2 = (col2&0xFF0000)>>16;
    var g2 = (col2&0x00FF00)>>8;
    var b2 = col2&0x0000FF;
    var colTrans = {
        ra: (r1-r2)*100/255,
        ga: (g1-g2)*100/255,
        ba: (b1-b2)*100/255,
        rb: r2,
        gb: g2,
        bb: b2
    }
    this.setTransform(colTrans);
}
// one for the Anglophiles... :)
Object.prototype.Colour = Color;
ASSetPropflags(Object.prototype,["Colour"],3);

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

n/a


Modules : объект Таймер. (timer.as)

Home > Modules > объект Таймер. (timer.as)

объект Таймер. (timer.as)

MX
flashAPI
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 22.2.2003
Cookbook update: 22.2.2003

описание

Модуль реализует объект Timer.

исходный код

// DoubleYou
// [flashAPI].mx timer
//
// it's part of [flashAPI] project
// http://www.doubleyou.com/flashAPI
//
// [02.03.08] nacho@doubleyou.com

/*
    constructor :
        theTimer = new Timer(miliseconds);
        -> miliseconds : miliseconds to launch onTimer event

    methods :
        start()
        -> start the timer

        stop()
        -> stop the timer

        reset()
        -> reset the timer to 0

    properties :
        interval
        -> miliseconds to launch onTimer event

    events :
        onTimer()
        -> events launch in each interval

        onStart()
        -> events lauch at start time

        onStop()
        -> events launch at stop time

    example :
        var theTimer = new Timer(1000);
        theTimer.onTimer = function()
        {
            trace("another second left of your life...");
        }
        theTimer.start();

*/

Timer = function(miliseconds){
  // length of this timer
  this.interval = miliseconds;
}

Timer.prototype.start = function(){
  // reset the timer
  this.reset();
}

Timer.prototype.reset = function(){
  // reset the time from which this counts
  if (this.ID) clearInterval(this.ID);
  this.ID = setInterval(this,"onTimer",this.interval);
}

Timer.prototype.stop = function(){
  clearInterval(this.ID);
  this.onStop();
}

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

n/a


Modules : перекашивание клипа (skew.as)

Home > Modules > перекашивание клипа (skew.as)

перекашивание клипа (skew.as)

F5, MX
flashAPI
Version info

Version: n/a
Created: n/a
Last modified: 15.2.2002
Cookbook entry: 11.10.2002
Cookbook update: 11.10.2002

описание

Модуль из пакета FlashAPI. Методы реализуют эффект перекашивания для клипа.

исходный код

// DoubleYou
// [flashAPI] skew
//
// it's part of [flashAPI] project
// http://www.doubleyou.com/flashAPI
//
// [02.02.15] nacho@doubleyou.com
// based on skew engine & x-y offset
// written by Andres Sebastian Yaсez Duran (lifaros@yahoo.com)

MovieClip.prototype.skewReset = function(x0,y0)
{
    this.skewTo(x0,y0,0,0,0,0);
}

MovieClip.prototype.skew = function(x0, y0, h_skew, v_skew, x_offset, y_offset)
{
    this.image._x = 0.5*Math.SQRT2*(-x_offset-y_offset);
    this.image._y = 0.5*Math.SQRT2*(x_offset-y_offset);
    this.image._rotation = -45;
    this._rotation = 45+(h_skew+v_skew)/2;
    this._yscale = Math.sin((90+v_skew-h_skew)*0.5*(Math.PI/180))*Math.SQRT2*100;
    this._xscale = Math.cos((90+v_skew-h_skew)*0.5*(Math.PI/180))*Math.SQRT2*100;
    this._y = y0 + y_offset;
    this._x = x0 + x_offset;
}

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

n/a


MovieClip

вычисление количества вложенных клипов | F5, MX | n/a
методы для работы с Цветом и трансформацией Цвета | F5, MX | MSA
отражение (Flip) | F5, MX | n/a
перемещение клипа курсорными клавишами | MX | Geo
преобразование координат | F5, MX | Nox Noctis
рисование сегментов | MX | Iv
эффект Рельеф (Emboss) | F5, MX | Martin
эффект Случайный Заданный Цвет | F5, MX | MSA
эффект Случайный Цвет | F5, MX | MSA


MovieClip : вычисление количества вложенных клипов

Home > MovieClip > вычисление количества вложенных клипов

вычисление количества вложенных клипов

F5, MX
n/a
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 9.10.2002
Cookbook update: 9.10.2002

описание

Метод клипа; возвращает число вложенных в него клипов.

исходный код

MovieClip.prototype.childCount = function() {
  var c = 0;
  for (var i in this){
    if (typeof(this[i]) == "movieclip"){ c++ }
  }
  return c;
}

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

trace (_root.childCount());
trace (anymc.childCount());


MovieClip : методы для работы с Цветом и трансформацией Цвета

Home > MovieClip > методы для работы с Цветом и трансформацией Цвета

методы для работы с Цветом и трансформацией Цвета

F5, MX
MSA
Version info

Version: 1.0
Created: 4.10.2002
Last modified: 4.10.2002
Cookbook entry: 4.10.2002
Cookbook update: 4.10.2002

описание

Методы позволяют управлять цветом без использования временных переменных.
.setRGB(c) - устанавливает цвет "с" для клипа (с - число);
.getRGB() - возвращает последний установленный цвет;
.assignRGB(mc)  - присвоит такой же цвет, который был установлен для клипа mc;
.setTransform(t) - привязывает объект трансформации;
.getTransform() - возвращает объект трансформации;
.assignTransform(mc) - присвоит тот же объект трансформации, который был установлен для клипа mc.

исходный код

MovieClip.prototype.setRGB = function(c){
  with (new Color(this)){ setRGB(c) }
}

MovieClip.prototype.getRGB = function(){
  with (new Color(this)){ return getRGB() }
}

MovieClip.prototype.assignRGB = function(mc){
  with (new Color(this)) { setRGB(mc.getRGB()) }
}

MovieClip.prototype.setTransform = function(t){
  with (new Color(this)) { setTransform(t) }
}

MovieClip.prototype.getTransform = function(){
  with (new Color(this)) { return getTransform() }
}

MovieClip.prototype.assignTransform = function(mc){
  with (new Color(this)) { setTransform(mc.getTransform()) }
}

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

mc.setRGB(15255);
mc2.assignRGB(mc);
mc.setTransform({ra:-100,rb:-100,ga:-100,gb:255,ba:255,bb:255});
mc3.assignTransform(mc);


MovieClip : отражение (Flip)

Home > MovieClip > отражение (Flip)

отражение (Flip)

F5, MX
n/a
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 9.10.2002
Cookbook update: 9.10.2002

описание

Методы flipX и flipY отражают оригинальный клип по вертикали и горизонтали, подобно Flash редактору Flip Horizontal и Flip Vertical.

исходный код

MovieClip.prototype.flipX = function () {
  this._xscale = -this._xscale;
}

MovieClip.prototype.flipY = function () {
  this._yscale = -this._yscale;
}

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

mc.flipX(); // Flip Horizontal
mc.flipY(); // Flip Vertical


MovieClip : перемещение клипа курсорными клавишами

Home > MovieClip > перемещение клипа курсорными клавишами

перемещение клипа курсорными клавишами

MX
Geo
Version info

Version: 0.2
Created: 5.10.2002
Last modified: 5.10.2002
Cookbook entry: 6.10.2002
Cookbook update: 6.10.2002

описание

Метод позволяет перемещать мувиклип со скоростью заданной в параметре (_s) с помощью курсорных клавиш и клавиш цифровой клавиатуры (NumLock off).

исходный код

MovieClip.prototype.drag = function(_s) {
  if (_s) {
    Key.addListener(this);
    this.onKeyDown = function() {
      this._x += _s*(Key.isDown(Key.RIGHT)-Key.isDown(Key.LEFT)+
                     Key.isDown(33)+Key.isDown(34)-
                     Key.isDown(35)-Key.isDown(36));
      this._y += _s*(Key.isDown(Key.DOWN)-Key.isDown(Key.UP)-
                     Key.isDown(33)+Key.isDown(34)+
                     Key.isDown(35)-Key.isDown(36));
    };
  } else {
     Key.removeListener(this);
     delete this.onKeyDown;
  }
}

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

В данном примере клип лежащий в основной линейке с именем mc, после вызова метода, можно перемещать клавиатурой со скоростью 5 пикселов/фрейм.

_root.mc.drag(5);


MovieClip : преобразование координат

Home > MovieClip > преобразование координат

преобразование координат

F5, MX
Nox Noctis
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 30.1.2003
Cookbook update: 30.1.2003

описание

toGlobal() - метод без аргументов; преобразовывает координаты клипа (локальные) в координаты линейки _root (глобальные), и возвращает объект класса Object, определяющий координаты х и y в качестве свойств.
toLocal() - метод должен вызываться с аргументом класса Object, определяющим глобальные координаты в качестве свойств x и y; преобразовывает глобальные координаты к координатам клипа (локальные), так же как и предыдущий, возвращает преобразованные координаты в объекте Object в качестве свойств x и y.

исходный код

MovieClip.prototype.toGlobal = function() {
  var xy = {x:this._x, y:this._y};
  var href = this._parent;
  while (href != _root) {
    xy.x += href._x;
    xy.y += href._y;
    href = href._parent;
  }
  return xy;
}

MovieClip.prototype.toLocal = function(coord) {
  var xy = coord;
  var href = this._parent;
  while (href != _root) {
    xy.x -= href._x;
    xy.y -= href._y;
    href = href._parent;
  }
  return xy;
}

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

// глобальные координаты
myObj = mc.toGlobal();

// локальные координаты
myObj = mc.toLocal({x:globalX, y:globalY});


MovieClip : рисование сегментов

Home > MovieClip > рисование сегментов

рисование сегментов

MX
Iv
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 14.2.2003
Cookbook update: 14.2.2003

описание

метод; предназначен для вырисовывания сегментов в заданных координатах и с заданными пропорциями.

исходный код

Math.rad = Math.PI/180;
MovieClip.prototype.fncDrawSegment = function(rx, ry, x, y, sgm, s1, s2) {
  if (!s1 and !s2 or s1 == s2) {
    var grad = 360;
    var segm = grad/sgm;
    var x1 = rx+x;
    var y1 = y;
    this.moveTo(x1, y1);
  } else {
    s1>s2 ? s1 -= 360 : "";
    var x1 = rx*Math.cos(s1*Math.rad)+x;
    var y1 = ry*Math.sin(s1*Math.rad)+y;
    var grad = s2-s1;
    var segm = grad/sgm;
    this.moveTo(x, y);
    this.lineTo(x1, y1);
  }
  for (var s = segm+s1; s<grad+.1+s1; s += segm) {
    var x2 = rx*Math.cos((s-segm/2)*Math.rad)+x;
    var y2 = ry*Math.sin((s-segm/2)*Math.rad)+y;
    var x3 = rx*Math.cos(s*Math.rad)+x;
    var y3 = ry*Math.sin(s*Math.rad)+y;
    // begin tnx 2 Robert Penner
    var cx = 2*x2-.5*(x1+x3);
    var cy = 2*y2-.5*(y1+y3);
    this.curveTo(cx, cy, x3, y3);
    // end tnx 2 Robert Penner :)
    x1 = x3;
    y1 = y3;
  }
  if (grad != 360) {
    this.lineTo(x, y);
  }
};

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

_root.onEnterFrame = function() {
  _root.clear();
  _root.lineStyle(0);
  _root.beginFill(0xFF0000);
  a>=360 ? a -= 360 : a += 2;
  b>=360 ? b -= 360 : b += 3;
  _root.fncDrawSegment(150, 100, 200, 250, 8, a, b);
  _root.endFill();
  _root.lineStyle(0);
  _root.beginFill(0xFF00FF);
  _root.fncDrawSegment(150, 100, 200, 200, 8, a, b);
  _root.endFill();
};


MovieClip : эффект Рельеф (Emboss)

Home > MovieClip > эффект Рельеф (Emboss)

эффект Рельеф (Emboss)

F5, MX
Martin
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 1.10.2002
Cookbook update: 1.10.2002

описание

Метод создает эффект рельефа (Emboss), подобно Photoshop'у.

исходный код

MovieClip.prototype.emboss = function (distance){
  for (obj in this){
    if (typeof(this[obj]) == "movieclip"){ this[obj].duplicateMovieClip("embed", 1) }
  }
  embed._x += distance;
  color = new Color(embed);
  t = {ra:'-100', rb:'255', ga:'-100', gb:'255', ba:'-100', bb:'255', aa:'50'};
  color.setTransform(t);
}

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

emboss(distance) //'distance' defines the emboss direction (+in / -out)


MovieClip : эффект Случайный Заданный Цвет

Home > MovieClip > эффект Случайный Заданный Цвет

эффект Случайный Заданный Цвет

F5, MX
MSA
Version info

Version: 1.1
Created: 4.10.2002
Last modified: 5.10.2002
Cookbook entry: 4.10.2002
Cookbook update: 6.10.2002

описание

Метод назначает новый, случайный цвет клипу, используя заданный диапазон значений.

исходный код

MovieClip.prototype.randomColorRange = function (rl,rh,gl,gh,bl,bh) {
  with (new Color(this)) {
    setRGB( (rl + rl==rh ? 0 : Math.round(Math.random()*(rh-rl))) << 16 |
            (gl + gl==gh ? 0 : Math.round(Math.random()*(gh-gl))) << 8  |
            (bl + bl==bh ? 0 : Math.round(Math.random()*(bh-bl))) );
  }
}

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

В примере цвет изменяется только по Красной составляющей.

onClipEvent (enterFrame) {
  randomColorRange(0,255,0,0,0,0);
}


MovieClip : эффект Случайный Цвет

Home > MovieClip > эффект Случайный Цвет

эффект Случайный Цвет

F5, MX
MSA
Version info

Version: 1.1
Created: 4.10.2002
Last modified: 5.10.2002
Cookbook entry: 4.10.2002
Cookbook update: 5.10.2002

описание

Метод без аргументов. Назначает новый, случайный цвет.

исходный код

MovieClip.prototype.randomColor = function () {
  with (new Color(this)) { setRGB(Math.round(Math.random()*0xFFFFFF)) }
}

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

onClipEvent (enterFrame) { randomColor() }


Number

конвертер в двоичное представление | F5, MX | Robert Penner
проверка на простые числа | F5, MX | n/a
проверка на четность/нечетность чисел | F5, MX | n/a
целые и дробные части чисел | F5, MX | n/a


Number : конвертер в двоичное представление

Home > Number > конвертер в двоичное представление

конвертер в двоичное представление

F5, MX
Robert Penner
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 21.2.2003
Cookbook update: 21.2.2003

описание

метод без аргументов; возвращает двоичное представление числа (32разряда) в виде строки.

исходный код

Number.prototype.toBinary = function() {
  var output = "";
  var digit = 0;
  var mask = 0;
  var num = this;
  for (var i = 31; i>=0; i--) {
    mask = 1 << i;
    digit = (num & mask) >> i;
    if (i == 31) {digit *= -1;}
    output += digit;
    num >> 1;
  }
  return output;
};

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

n/a


Number : проверка на простые числа

Home > Number > проверка на простые числа

проверка на простые числа

F5, MX
n/a
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 14.2.2003
Cookbook update: 14.2.2003

описание

метод без аргументов; проверяет принадлежность числа к простым числам.

исходный код

Number.prototype.isPrime = function() {
  if (!this) {return false;}
  if (isNaN(this)) {return false;}
  if (this<2) {return false;}
  var iCount = 2;
  do {
    if ((this%iCount) == 0) {return false;}
    iCount++;
  } while (iCount <= Math.sqrt(this));
  return true;
}

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

n/a


Number : проверка на четность/нечетность чисел

Home > Number > проверка на четность/нечетность чисел

проверка на четность/нечетность чисел

F5, MX
n/a
Version info

Version: 1.1
Created: n/a
Last modified: 9.10.2002
Cookbook entry: 9.10.2002
Cookbook update: 9.10.2002

описание

Метод isEven() проверяет число на четность и возвращает True, если число является четным или False в противном случае. Метод isOdd() проверяет число на нечетность и возвращает True, если число является нечетным или False в противном случае.

исходный код

Number.prototype.isEven = function () {
  return (this % 2 == 0);
}

Number.prototype.isOdd = function () {
  return (this % 2 != 0);
}

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

a = Number(10);
trace (a.isEven());  // true
trace (a.isOdd());   // false

// or

trace (Number(11).isEven());  // false
trace (Number(11).isOdd());   // true


Number : целые и дробные части чисел

Home > Number > целые и дробные части чисел

целые и дробные части чисел

F5, MX
n/a
Version info

Version: 1.1
Created: n/a
Last modified: 9.10.2002
Cookbook entry: 9.10.2002
Cookbook update: 9.10.2002

описание

Метод int() возвращает целую часть объекта Number. Метод frac() возвращает дробную часть объекта Number.

исходный код

Number.prototype.int = function() {
  return Math.floor(this);
}

Number.prototype.frac = function() {
  return this - Math.floor(this);
}

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

Внимание! Из-за погрешностей при работе с дробными числами, результат может оказаться не совсем точным.

trace(Number(8524.15478).int());
\\ Результат: 8524
trace(Number(8524.15478).frac());
\\ Результат: 0.154780000000756


Sound

mute -приглушить звук F5, MX cyberfunk


Sound : mute -приглушить звук

Home > Sound > mute -приглушить звук

mute -приглушить звук

F5, MX
cyberfunk
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 29.1.2003
Cookbook update: 29.1.2003

описание

метод без аргументов; включает или выключает громкость звучания. Проигрывание звука тем самым не прекращается.

исходный код

Sound.prototype.mute = function(){
  if(!this.muted){
    this.oldVol=this.getVolume();
    this.setVolume(0)
  }else{
    this.setVolume(this.oldVol);
  }
  this.muted=!this.muted;
}

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

mySnd = new Sound(this);
mySnd.attachSound("loop");
mySnd.start(0,10000);
mySnd.setVolume(30);

on(release){ mySnd.mute(); }


String

запрет кэширования в именах файлов F5, MX n/a


String : запрет кэширования в именах файлов

Home > String > запрет кэширования в именах файлов

запрет кэширования в именах файлов

F5, MX
n/a
Version info

Version: 1.1
Created: n/a
Last modified: 9.10.2002
Cookbook entry: 9.10.2002
Cookbook update: 9.10.2002

описание

Метод используется для предотвращения загрузки файлов из кэша броузера.

исходный код

String.prototype.noCache = function() {
  if ((_root._URL.substr(0,5)).toLowerCase() ne "file:") {
    return this + (this.indexOf("?") < 0 ? "?" : "&")
                + "noCache=" + (new Date().getTime());
  } else { return this }
}

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

loadMovieNum("yourFile.swf".noCache(), 1);
loadVariablesNum("yourFile.txt".noCache(), 1);
myXML.load("yourFile.xml".noCache());


XMLNode

nextNode -следующий элемент F5, MX Iv


XMLNode : nextNode -следующий элемент

Home > XMLNode > nextNode -следующий элемент

nextNode -следующий элемент

F5, MX
Iv
Version info

Version: n/a
Created: n/a
Last modified: n/a
Cookbook entry: 11.1.2003
Cookbook update: 11.1.2003

описание

метод без аргументов; возвращает следующий элемент XMLNode в дереве документа XML. Если при переборе достигнут конец документа, метод возвращает значение null.

исходный код

XMLNode.prototype.nextNode = function() {
  if (this.firstChild != null) {
    return this.firstChild;
  }
  var n = this;
  while (n.nextSibling == null) {
    if (n.parentNode) {
      n = n.parentNode;
    } else {
      return null;
    }
  }
  return n.nextSibling;
};

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

myXML = new XML ("<n1><n2><n3></n3><n4><n5><n6><n7><n8><n9></n9></n8></n7></n6></n5></n4></n2><n10></n10></n1>");
nod = myXML.firstChild;
while (nod) {
  trace (nod.nodeName);
  nod = nod.nextNode();
}


Список авторов

количество работ
Andrй Vallieres

Email | n/a
ICQ | n/a
Home page | n/a
1
Anton Volkov

Email | wolf@perm.ru
ICQ | n/a
Home page | n/a
1
bokel

Email | n/a
ICQ | n/a
Home page | www.bokelberg.de/actionscript
1
cyberfunk

Email | n/a
ICQ | n/a
Home page | www.cyberfunk.net
2
flashAPI

Email | n/a
ICQ | n/a
Home page | www.doubleyou.com/flashAPI
2
flashguru

Email | flashguru@flashkit.com
ICQ | n/a
Home page | n/a
1
Geo

Email | igeo@swissinfo.org
ICQ | n/a
Home page | www.satisfashion.ru/atl/index.php
1
Iv

Email | dembicki@narod.ru
ICQ | n/a
Home page | dembicki.narod.ru
2
jonox@walmac.com.au

Email | jonox@walmac.com.au
ICQ | n/a
Home page | n/a
1
klitze7-c004

Email | n/a
ICQ | n/a
Home page | n/a
1
Martin

Email | martin@vulcanonet.com
ICQ | n/a
Home page | www.vulcanonet.com
1
Mike Chambers

Email | n/a
ICQ | n/a
Home page | n/a
1
MSA

Email | ascookbook@tut.by
ICQ | n/a
Home page | msa.by.ru
10
Nox Noctis

Email | n/a
ICQ | n/a
Home page | n/a
1
Peter Hall

Email | n/a
ICQ | n/a
Home page | www.peterjoel.com
1
Robert Penner

Email | source@robertpenner.com
ICQ | n/a
Home page | www.robertpenner.com
4
senocular

Email | n/a
ICQ | n/a
Home page | n/a
2
VM

Email | vm@vmstudio.com
ICQ | n/a
Home page | www.vmstudio.com
1
Авлин Анатолий

Email | avlin@v6.ru
ICQ | 66643669
Home page | n/a
2
Ф. Потрошитель

Email | rost@rs.com.ua
ICQ | n/a
Home page | flash-ripper.com
1


Для авторов

Присылайте ваши коды, и я включу их в следующею версию AS Cookbook.

Пожалуйста, придерживайтесь следующей структуры письма:

Author: ваше имя, или прозвище
Email: электронный адрес (публикуется как контактный)
ICQ: номер icq
Home page: ваш web-сайт

Function name: краткое название функции или метода (одно предложение)
Flash version: F5 и/или MX
Version: версия прототипа (функции)
Created: дата начальной версии
Last modified: дата последнего обновления
Description:
Описание функции или метода

Source code:
Исходный код

Usage note:
примечание по использованию

Sample:
пример использования

Я оставляю за собой право, не включать в сборник прототипы (функции):

  • содержащие "ламерный" код;
  • имеющих нескольких авторов (то есть опубликованных ранее на других ресурсах и под другим именем);
  • не имеющих существенной пользы и т.п.

Все коды будет приводиться к одному стилю. Не следует обильно комментировать ваш код, лучше описать его действия в Description. Это может выглядеть так: функция реализует полярный метод Бокса-Мюллера для преобразования двух независимых случайных чисел … и т.п.

Ваши письма присылайте на адрес: ascookbook@tut.by