Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Динамическое создание названия функции (http://www.flasher.ru/forum/showthread.php?t=121895)

dimarik 26.02.2009 13:07

Цитата:

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

Передавайте только полезный траффик.

silin 26.02.2009 14:24

Snowy, интересно как ты предполагаешь отстроится от 'левого' трафика для варианта со случайными методами?

wvxvw 26.02.2009 14:32

Не вдаваясь в подробности "зачем это нужно":
наследуемся от прокси, определяем flesh_proxy::callProperty так, что после получения какого-то ID какой-то из методов прокси будет вызываться, а какой-то нет. Только на трафик это никак не повлияет. Вообще клиентская сторона на входящий трафик повлиять по определению не может - так что вы явно не в том направлении копаете.

Snowy 26.02.2009 18:21

Ну вы даёте.Можно просто передать серверу идентификатор функции на которую он должен передать данные,и для каждого пользователя она будет разной.Всё это я делаю,но не могу таким методом создать принимающую функцию.В AS2 я всё это умею,но там делается немного по другому,а тут не могу.В общем познакомьтесь сначала с FMS.А тут я смотрю никто не смог ответить на вопрос.

CrazyFlasher 26.02.2009 18:27

2Snowy, в таком случае познакомтесь сначала с програмимрованием для чайников, чтоб отпали такие бредовые идеи типа генрить динамическое названия для функции...

wvxvw 26.02.2009 19:10

Еще раз, если с первого раза прочитать не удалось:
Цитата:

наследуемся от прокси, определяем flesh_proxy::callProperty так, что после получения какого-то ID какой-то из методов прокси будет вызываться, а какой-то нет.

Snowy 26.02.2009 19:46

Пример можно?

silin 26.02.2009 19:48

получается, что вызвать экслюзивный метод у КОНКРЕТНОЙ флешки ты в принципе можешь.., что мешает точно также вызывать штатный?
или ты вызываешь уникальный метод у всех, но сработает он только у одной.., тогда о какой экономии трафика речь ?
короче, не понятно в чем идея..

wvxvw 26.02.2009 20:59

Код AS3:

package  
{
        import flash.display.Sprite;
 
        /**
        * TestFunkyAggregator class.
        * @author wvxvw
        */

        public class TestFunkyAggregator extends Sprite
        {
 
                public function TestFunkyAggregator()
                {
                        super();
                        var fooAggregator:FunkyMethodAggregator = new FunkyMethodAggregator("foo");
                        var barAggregator:FunkyMethodAggregator = new FunkyMethodAggregator("bar");
                        fooAggregator.foo();
                        try
                        {
                                fooAggregator.bar();
                        }
                        catch (error:Error)
                        {
                                trace(error.message);
                        }
                        barAggregator.bar();
                        try
                        {
                                barAggregator.foo();
                        }
                        catch (error:Error)
                        {
                                trace(error.message);
                        }
                }
 
        }
 
}

Код AS3:

package  
{
        import flash.utils.Proxy;
        import flash.utils.flash_proxy;
 
        use namespace flash_proxy;
        /**
        * FunkyMethodAggregator class.
        * @author wvxvw
        */

        public dynamic class FunkyMethodAggregator extends Proxy
        {
                private var _fancyID:String;
 
                public function FunkyMethodAggregator(fancyID:String)
                {
                        super();
                        _fancyID = fancyID ? fancyID : "foo";
                }
 
                private var fancyFunction:Function = function(...rest):void
                {
                        trace("This time my name is: " + rest[0]);
                }
 
                override flash_proxy function callProperty(name:*, ...rest):*
                {
                        switch (String(name))
                        {
                                case "bar":
                                        if (_fancyID == "foo")
                                        {
                                                throw new Error("bar is not a valid method of FunkyMethodAggregator");
                                        }
                                        rest.unshift(name);
                                        return fancyFunction.apply(this, rest);
                                case "foo":
                                        if (_fancyID != "foo")
                                        {
                                                throw new Error("bar is not a valid method of FunkyMethodAggregator");
                                        }
                                        rest.unshift(name);
                                        return fancyFunction.apply(this, rest);
                        }
                }
        }
 
}

:)


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

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