Hi, I'm also having problems with Events. Could someone give me a little
help on this issue?

The EventListener is firing fine, but its associated method CAN NOT call
another Class method. Why?

Here is the Main Class: (Here is the Problem)

import com.ultrafactor.LblButton;
class com.ultrafactor.TabBox extends MovieClip
{
        private var tab_0:LblButton;    
        
        public function TabBox()
        {       
                main();
        }

        private function main():Void
        {
                setButtonListeners();
        }

        // don't know why it takes so long...
        // is there any other elegant way to do it??
        private function setButtonListeners():Void
        {
                i=0;
                this.onEnterFrame = function()
                {
                        this.i++;
                        if(this.i==20) 
                        {
                                delete this.onEnterFrame;
                        }
                        else
                        {
        
tab_0.addEventListener("release",this.clickTab);
                        }                       
                }
        }

        private function clickTab(evtObj:Object):Void
        {
                trace("click");// WORK
                this.test();// DO NOT WORK
        }
        
        //Can't call this Method!!!
        private function test():Void
        {
                trace("test");
        }
}

The used Classes:
import mx.core.UIObject;
import mx.core.UIComponent;
class com.ultrafactor.Button extends mx.core.UIComponent
{
        private var initializing:Boolean = true;
        private var autoRepeat:Boolean;
        private var interval;
        
        function Button()
        {
                super.init();
                useHandCursor = true;
        }

        private function size(Void):Void
        {
                super.invalidate();
        }

        private function draw(Void):Void
        {
                if (initializing)
                {
                        initializing = false;
                }
                size();         
        }

        private function onRollOver():Void
        {
                if (interval != undefined)
                {
                        clearInterval(interval);
                        delete interval;
                }
                
                gotoAndStop(2);
        }
        
        private function onDragOver():Void
        {
                onPress();
        }
        
        private function onRollOut():Void
        {
                gotoAndStop(1);
        }
        
        private function onDragOut():Void
        {
                onRollOut();
        }
        
        private function onRelease():Void
        {
                dispatchEvent({type:"click"});
                
                onRollOver();
        }
        
        private function onPress():Void
        {
                gotoAndStop(3);
                
                dispatchEvent({type:"buttonDown"});
                if (autoRepeat)
                {
                        interval = setInterval(this, "onPressDelay",
getStyle("repeatDelay"));
                }
        }
        
        private function onPressDelay(Void):Void
        {
                dispatchEvent({type:"buttonDown"});
                if (autoRepeat)
                {
                        clearInterval(interval);
                        interval = setInterval(this, "onPressRepeat",
getStyle("repeatInterval"));
                }
        }
        
        private function onPressRepeat(Void):Void
        {
                dispatchEvent({type:"buttonDown"});
                updateAfterEvent();
        }
}

import com.ultrafactor.Button;
import mx.core.UIObject;
import mx.core.UIComponent;
import mx.events.EventDispatcher;
class com.ultrafactor.LblButton extends Button
{
        private function dispatchEvent() {};
        public  function addEventListener() {};
        public  function removeEventListener() {};
        
        private var lbl:TextField;      
        private var link:String;
        
        private var initializing:Boolean = true;
        private var initText:String;

        function LblButton()
        {
                mx.events.EventDispatcher.initialize(this);
                super.init();
        }

        public function setLabel(t:String):Void
        {
                if (initializing)
                {
                        initText = t;
                }
                else
                {
                        lbl.embedFonts = true;
                        lbl.text = t;
                
                        invalidate(); 
                }
                
                draw();
        }
        
        public function getLabel():String
        {
                if (initializing)
                        return initText;
                
                return lbl.text;
        }

        public function setLink(l:String):Void
        {
                //trace(l);
                this.link = l;          
        }
        
        public function getLink():String
        {
                return this.link;
        }

        private function draw(Void):Void
        {
                //trace("draw");
                var l = this.lbl;
                var t = getLabel();

                if (initializing)
                {
                        initializing = false;
                        delete initText;
                        this.dispatchEvent({target: this, type:'load'});
                }

                l.multiline = true;
                l.wordWrap =  true;

                if (l.html == true)
                {
                        l.htmlText = t;
                }
                else
                {
                        l.text = t;
                }

                invalidate();
                super.size();
                l.background = false;
        }
        
        private function onRelease():Void
        {
                //trace("onRelease");
                var eventObject:Object = {target:this, type:'release'}; 
                        eventObject.link = this.link;
                        eventObject.label = this.getLabel();

                this.dispatchEvent(eventObject);
                
                super.onRollOver();
        }
}

_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to