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