Главная / Action Script 3
ПакетВерхний уровень
Классpublic dynamic class Function
НаследованиеFunction Inheritance Object

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Функция — это основная единица кода, которую можно вызвать в ActionScript. Объекты Function, которые являются экземплярами класса Function, представляют в ActionScript как встроенные, так и определяемые пользователем функции.

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

Посмотреть примеры

См. также

Классы
Методы


Общедоступные свойства
 СвойствоОпределено
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
 Inheritedprototype : Object
[статические] Ссылка на модель объекта класса или функции.
Object
Общедоступные методы
 МетодОпределено
  
apply(thisObject:Object, argArray:Array = null):void
Указывает значение thisObject, используемого в любой функции, вызываемой ActionScript.
Function
  
call(thisObject:Object, parameter1:String = null):void
Вызывает функцию, представленную объектом Function.
Function
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
 Inherited
Возвращает строковое представление заданного объекта.
Object
 Inherited
Возвращает элементарное значение заданного объекта.
Object
Сведения о методе
apply()метод
AS3 function apply(thisObject:Object, argArray:Array = null):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Указывает значение thisObject, используемого в любой функции, вызываемой ActionScript. Этот метод также указывает параметры, передаваемые любой вызванной функции. Поскольку apply() — это метод класса Function, он также является методом любого объекта Function в ActionScript.

Параметры указываются как объект Array в отличие от метода Function.call(), в котором параметры представлены в виде списка, разделенного запятыми. Часто бывает полезно, когда ряд передаваемых параметров неизвестен вплоть до фактического выполнения сценария.

Возвращает значение, которое вызванная функция указывает в качестве возвращаемого значения.

Параметры

thisObject:Object — Объект, к которому применяется функция.
 
argArray:Array (default = null) — Массив, элементы которого передаются функции в качестве параметров.

См. также

call()метод 
AS3 function call(thisObject:Object, parameter1:String = null):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Вызывает функцию, представленную объектом Function. Каждая функция в ActionScript представлена объектом Function, и все функции поддерживают этот метод.

Почти всегда вместо этого метода можно прибегнуть к оператору вызова функции (()). Оператор вызова функции создает краткий и легко читаемый код. Этот метод полезен, в основном, тогда, когда параметр thisObject вызова функции необходимо контролировать явным образом. Обычно если функция вызывается как метод объекта, находящегося в теле функции, параметру thisObject присваивается значение myObject, как показано в следующем примере:

  myObject.myMethod(1, 2, 3);
  

В некоторых ситуациях может потребоваться, чтобы thisObject указывал на другой объект (например, если функцию необходимо вызвать как метод объекта, но на самом деле она не сохраняется как метод этого объекта):

  myObject.myMethod.call(myOtherObject, 1, 2, 3); 
  

Чтобы вызвать функцию в качестве регулярной функции, а не метода объекта, можно присвоить значение null параметру thisObject. Например, эквивалентны следующие вызовы функции:

  Math.sin(Math.PI / 4)
  Math.sin.call(null, Math.PI / 4)
  

Возвращает значение, которое вызванная функция указывает в качестве возвращаемого значения.

Параметры

thisObject:Object — Объект, указывающий значение thisObject в теле функции.
 
parameter1:String (default = null) — Параметр, передаваемый функции. Можно указать 0 или несколько параметров.

См. также

Примеры Как пользоваться примерами
FunctionExample.as

В следующем примере классы FunctionExample, SimpleCollection, EventBroadcaster и EventListener используются для показа различных применений функций в ActionScript. Это можно сделать, выполнив следующие действия:
  1. Конструктор FunctionExample создает локальную переменную simpleColl, которая заполняется массивом целых чисел в диапазоне от 1 до 8.
  2. Объект simpleColl выводится на печать методом trace().
  3. Объект EventListener (listener) добавляется в simpleColl.
  4. При вызове функций insert() и remove() этот прослушиватель отвечает на их события.
  5. Создается второй объект SimpleCollection с именем greaterThanFourColl.
  6. Объекту greaterThanFourColl присваивается результат simpleColl.select() с аргументом 4 и анонимной функцией. Метод выбора объекта SimpleCollection — внутренний итератор, использующий в качестве блока анонимный параметр функции.
package {
    import flash.display.Sprite;
    
    public class FunctionExample extends Sprite {
        public function FunctionExample() {
            var simpleColl:SimpleCollection;
            simpleColl = new SimpleCollection(0, 1, 2, 3, 4, 5, 6, 7, 8);
            trace(simpleColl);        // 0, 1, 2, 3, 4, 5, 6, 7, 8

            var listener:EventListener = new EventListener();
            simpleColl.addListener(listener);
            simpleColl.insert(9);        // itemInsertedHandler: 9
            simpleColl.remove(8);        // itemRemovedHandler: 8
            trace(simpleColl);        // 0, 1, 2, 3, 4, 5, 6, 7, 9

            var greaterThanFourColl:SimpleCollection;
            greaterThanFourColl = simpleColl.select(4, function(item:int, value:int){ return item > value });
            trace(greaterThanFourColl);    // 5, 6, 7, 9
        }
    }
}
    
import flash.display.Sprite;
    
class EventBroadcaster {
    private var listeners:Array;

    public function EventBroadcaster() {
        listeners = new Array();
    }
        
    public function addListener(obj:Object):void {
        removeListener(obj);
        listeners.push(obj);
    }
        
    public function removeListener(obj:Object):void {
        for(var i:uint = 0; i < listeners.length; i++) {
            if(listeners[i] == obj) {
                listeners.splice(i, 1);
            }
        }
    }
    
    public function broadcastEvent(evnt:String, ...args):void {
        for(var i:uint = 0; i < listeners.length; i++) {
            listeners[i][evnt].apply(listeners[i], args);
        }
    }    
}
    
class SimpleCollection extends EventBroadcaster {
    private var arr:Array;
        public function SimpleCollection(... args) {
        arr = (args.length == 1 && !isNaN(args[0])) ? new Array(args[0]) : args;
    }
        
    public function insert(obj:Object):void {
        remove(obj);
        arr.push(obj);
        broadcastEvent("itemInsertedHandler", obj);
    }
        
    public function remove(obj:Object):void {
        for(var i:uint = 0; i < arr.length; i++) {
            if(arr[i] == obj) {
                var obj:Object = arr.splice(i, 1)[0];
                broadcastEvent("itemRemovedHandler", obj);
            }
        }
    }

    public function select(val:int, fn:Function):SimpleCollection {
        var col:SimpleCollection = new SimpleCollection();
        for(var i:uint = 0; i < arr.length; i++) {
            if(fn.call(this, arr[i], val)) {
                col.insert(arr[i]);
            }
        }
        return col;
    }
        
    public function toString():String {
        var str:String = new String();
        for(var i:uint = 0; i < arr.length - 1; i++) {
            str += arr[i] + ", ";
        }
        str += arr[arr.length - 1];
        return str;
    }
}

class EventListener {
    public function EventListener() {
    }
    
    public function itemInsertedHandler(obj:Object):void {
        trace("itemInsertedHandler: " + obj);
    }
    
    public function itemRemovedHandler(obj:Object):void {
        trace("itemRemovedHandler: " + obj);        
    }
}