Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Передача неизвестных аргументов в конструктор (функцию) (http://www.flasher.ru/forum/showthread.php?t=101792)

__ant 03.10.2007 12:17

Передача неизвестных аргументов в конструктор (функцию)
 
У меня есть класс:

Код:

import mx.events.EventDispatcher

class Test {

        private var dispatchEvent:Function
       
        public var addEventListener, removeEventListener:Function

        function Test() {
                EventDispatcher.initialize(this)
                this.eventCreate()
        }

        private function eventCreate() {
                this.dispatchEvent({type:'myEvent', arg1:arg1_value, arg2:arg2_value, arg3:arg3_value ... })
        }       
}

Вопрос. Каким образом мне передать заранее неизвестные переменные (названия и значения) в конструктор, чтобы затем, например я их мог отловить в событие.

Т.е., например так:

Код:

var num1:Number = 10
var str4:String = "Текст"

var test:Test = new Test(num1, str4)
test.addEventListener("myEvent", Delegate.create(this, eventTest))

private function eventTest(event:Object) {
    trace([event.num1, event.str4])
}


udaaff 03.10.2007 20:33

Код:

import mx.events.EventDispatcher;
//
class MyClass {
        //
        public var addEventListener:Function;
        public var removeEventListener:Function;
        private var dispatchEvent:Function;
        //
        private var _paramsObj:Object;
        /**
        * Constructor
        */
        public function MyClass(paramsObj:Object) {
                EventDispatcher.initialize(this);
                _paramsObj = paramsObj;
        }
        //
        private function __myFunction(paramsObj:Object):Void {
                var eventObj:Object = {type:"onEvent", target:this};
                for (var i in paramsObj) {
                        eventObj[i] = paramsObj[i];
                }
                dispatchEvent(eventObj);
        }
        //
        public function myFunction():Void {
                __myFunction(_paramsObj);
        }
}

Код:

var my_class:MyClass = new MyClass({x:2, y:25});
var myClassListener:Object = new Object();
myClassListener.onEvent = function(eventObj:Object):Void  {
        for (var i in eventObj) {
                trace(i+": "+eventObj[i]);
        }
};
my_class.addEventListener("onEvent", myClassListener);
//
my_class.myFunction()



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

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