Loading:


    Object __resolve [AS 2]

    Klasa: Object

    Kompatybilność: ActionScript 1.0, Flash 5+

     

    Referencja do zdefiniowanej przez użytkownika funkcji, która jest wywoływana jeśli kod ActionScript odwołuje się do niezdefiniowanej właściwości lub metody.

     

    Jeśli kod ActionScript odwołuje się do niezdefiniowanej właściwości lub metody, wtedy Flash Player określa, czy właściwość obiektu __resolve jest zdefiniowana. Jeśli tak, funckja do której się odnosi właściwość jest wykonywana oraz przekazana zostaje nazwa niezdefiniowanej metody lub właściwości.

     

    To pozwala programiście wspomagać wartości dla niezdefiniowanych właściwości oraz instrukcji pod niezdefiniowane metody oraz imituje, że niezdefioniowane właściwości lub metody są aktualnie definiowane. Ta właściwość jest pomocna dla aktywowania wysoko przezroczystych komunikacji klient/serwer oraz jest rekomendowaną drogą wykonywania metod po stronie serwera.



    Napisz Artyku³

    Listing

    //#1

    var myObject:Object = new Object();
    myObject.__resolve = function (name) {
        return "Hello, world!";
    };
    trace (myObject.property1); // zwróci: Hello, world!
    trace (myObject.property2); // zwróci: Hello, world!


    //#2


    var myObject:Object = new Object();
    myObject.myFunction = function (name) {
        trace("Method " + name + " was called");
    };

    myObject.__resolve = function (name) {
         return function () { this.myFunction(name); };
    };

    myObject.someMethod(); // zwróci: Method someMethod was called
    myObject.someOtherMethod(); //zwróci: Method someOtherMethod was called


    //#3

    var myObject:Object = new Object();
    myObject.myFunction = function(name) {
        trace("Method "+name+" was called");
    };

    myObject.__resolve = function(name) {
        trace("Resolve called for "+name);

        var f:Function = function () {
            this.myFunction(name);
        };
       
        this[name] = f;

        return f;
    };

    myObject.someMethod(); // wezwanie __resolve
    myObject.someMethod(); // nie wzywa __resolve ponieważ nie jest teraz definiowane
    myObject.someOtherMethod(); // wezwanie __resolve
    myObject.someOtherMethod(); // nie wzywa __resolve, ponieważ nie jest dłużej niezdefiniowany


    //#4

    var myObject:Object = new Object();
    myObject.myFunction = function(name) {
        trace("Method "+name+" was called");
    };

    myObject.__resolve = function(name) {
       
        if (name == "onStatus") {
            return undefined;
        }
        trace("Resolve called for "+name); // to check when __resolve is called

        var f:Function = function () {
            this.myFunction(name);
        };
       
        this[name] = f;
       
        return f;
    };

    trace(myObject.onStatus("hello"));
    // zwróci: undefined


    //#5

    var myObject:Object = new Object();
    myObject.myFunction = function (name) {
        arguments.shift();
        trace("Method " + name + " was called with arguments: " + arguments.join(','));
    };

    myObject.__resolve = function (name) {

        if (name == "onStatus") {
            return undefined;
        }
        var f:Function = function () {
            arguments.unshift(name);
            this.myFunction.apply(this, arguments);
        };
     
        this[name] = f;
       
        return f;
    };

    myObject.someMethod("hello");
    // zwróci: Method someMethod was called with arguments: hello

    myObject.someOtherMethod("hello","world");
    // zwróci: Method someOtherMethod was called with arguments: hello,world

     




    Dodano przez: divix
    Ranga: Administrator serwisu Punktów: 0
    Komentarze użytkowników
      • Tre¶æ komentarza
        Kod do komentarza (opcjonalnie)
        PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
        Autor
        Token
        token

         

         








    funkcje.net
    Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2025 v.1.5 | design: diviXdesign & rainbowcolors