Hi, >However, I'm still unable to do the following: >Call a setInterval within a class. Have the setInterval pass over a >number. And the function called increment that number. Pass this new >number to a textfield object. >If I call: >setInterval(this,"somefunction", 1000, 5) >function somefunction ( e : Number) { > e++ >mx.controls.Alert.show(e) >// shows 6 >}
I think, it would trace "6" repeatedly over the interval. And I feel that there is no reason it won't work. I just created a sample to verify if my feelings are right :) This sample is demonstrating setInterval(..) inside a class. Look at the attached files or code later in this mail. Hope that helps... -abdul 1) ##Counter.as## import mx.core.UIObject; [Event("start")] [Event("increment")] [Event("stop")] class Counter extends UIObject { var counterIntervalId:Number; var __delay:Number = 50; var __min:Number = 0; var __max:Number = 100; var __count:Number = 0; var running:Boolean = false; function Counter(delay:Number, min:Number, max:Number) { __min = min ? min : 0; __max = max ? max : 100; __delay = delay ? delay : 50; } function startCounter():Void { __count = 0; running = true; dispatchEvent({type:"start"}); counterIntervalId = setInterval(this,"incrementCount", __delay, __min); //you can also do this: //counterIntervalId = setInterval(mx.utils.Delegate.create(this,incrementCount), __delay, __min); } function incrementCount(num):Void { if(__count < __max) { //un-comment the following to see setInterval(..) passes same number agian and again // mx.controls.Alert.show(num.toString()); __count++; dispatchEvent({type:"increment"}); } else { stopCounter(); } } function stopCounter():Void { clearInterval(counterIntervalId); __count = 0; running = false dispatchEvent({type:"stop"}); } function get min():Number { return __min; } function set min(newValue:Number):Void { __min = newValue; } function get max():Number { return __max; } function set max(newValue:Number):Void { __max = newValue; } function get value():Number { return __count; } } 2) ##setIntervalExample.mxml## <?xml version="1.0" encoding="iso-8859-1"?> <mx:Application width="800" height="600" xmlns:mx="http://www.macromedia.com/2003/mxml" initialize="onAppInit()"> <mx:Script> <![CDATA[ import Counter; import mx.utils.Delegate; var counter:Counter; function onAppInit() { counter = new Counter(); changeLimit(); counter.addEventListener("start", Delegate.create(this, onCounterStart)); counter.addEventListener("increment", Delegate.create(this, onCounterIncrement)); counter.addEventListener("stop", Delegate.create(this, onCounterStop)); } function onCounterStart(event) { _ta.text +="Counter started..\n"; } function onCounterIncrement(event) { _ta.text += event.target.value + "\n"; } function onCounterStop(event) { _ta.text += "Counter stopped...\n"; } function changeLimit() { counter.min = slider.values[0]; counter.max = slider.values[1]; } ]]> </mx:Script> <mx:HBox> <mx:Label text="Count:"/><mx:TextArea id="_ta" width="300" height="150" /> </mx:HBox> <mx:HBox> <mx:Button label="Start Counter" click="counter.startCounter();" enabled="{!counter.running}"/> <mx:Button label="Stop Counter" click="counter.stopCounter();" enabled="{counter.running}"/> </mx:HBox> <mx:HSlider id="slider" toolTipPlacement="top" thumbCount="2" labels="['min', 'max']" values="[0, 100]" snapInterval="1" change="changeLimit();" allowTrackClick="true" maximum="1000" minimum="0"/> </mx:Application> -----Original Message----- From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] Sent: Saturday, April 23, 2005 7:22 AM To: flexcoders@yahoogroups.com Subject: Re: [flexcoders] Re: help with setInterval... Hi Abdul, I ran into a similar issue. In short, whether my code was not scoped in an MXML file or whether it was within a class, I could not pass over a parameter (a number in my case) and have the function called by the setInterval reference the parameter passed over more than 1x. With Terry's problem, I had experienced something similar using Cairngorm with Flex. I could not get my textfield (or label) to update if I called a function that called a setInterval. If I called the function directly it worked. I fixed this when I stuck the code in a class and specified the object with view.MyTextfield.text. However, I'm still unable to do the following: Call a setInterval within a class. Have the setInterval pass over a number. And the function called increment that number. Pass this new number to a textfield object. If I call: setInterval(this,"somefunction", 1000, 5) function somefunction ( e : Number) { e++ mx.controls.Alert.show(e) // shows 6 } My code is at work, but the above is what I remember as having not worked. It works if I set a default value within the function. But as a parameter, the value fails. Best, Dave Yahoo! Groups Links Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/
setIntervalExample.mxml
Description: Binary data
Counter.as
Description: Binary data