Indeed, I stand corrected.
Many thanks Abdul.
Dave
On 4/23/05, Abdul Qabiz <[EMAIL PROTECTED]> wrote:
> 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: [email protected] [mailto:[EMAIL PROTECTED]
> Sent: Saturday, April 23, 2005 7:22 AM
> To: [email protected]
> 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
>
>
>
>
>
>
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/