And to add to what Steven said, I would seriously suggest using the scope
version of the setInterval call:

var interval:Number = setInterval(this, 'myFunc', 100);


Using setInterval this way specifies the scope object you want to call your
method on. This also goes a long way to ensuring that your interval will
work as you intended it to.


-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Steven Sacks
Sent: Monday, April 23, 2007 10:06 AM
To: flashcoders@chattyfig.figleaf.com
Subject: Re: [Flashcoders] setInterval woes

It's debugging 101.  Eliminate the obvious things first.  Calling 
clearInterval before setInterval is a preventative measure to protect 
you from unexpected behavior from accidental orphaning of intervals. I 
ALWAYS ALWAYS ALWAYS clearInterval before I setInterval regardless of 
whether it is the first time I'm setting it.  There is no reason not to 
do it and plenty of reason to do it.

If you overwrite a reference to an interval with another interval, you 
orphan that interval which continues to run in the swf until you close 
the swf and you will never be able to stop it unless you knew the id of 
the interval in question.

The reason I suggested it was because his code was not well written in 
that there was no protection that the interval would be overwritten 
since it was in a frame script.  If that frame ever played again you 
would have an interval orphaned and then doubled up.  From the 
description of the behavior he gave, that's exactly what it sounded like.




Jordan Snyder wrote:
> Nevermind.  I'm obviously not communicating very well.  I'm extremely
> familiar with setInterval's and setTimeout's functionality.  What I'm
> trying to figure out is why Steven says to clearInterval first....
> clearInterval can not be run without an argument, so I'm saying that
> if you haven't assigned setInterval to something, what are you going
> to call clearInterval on?  And why would you call it before it's even
> assigned to an actual interval?
> 
> Cheers
> 
> On 4/20/07, David Ngo <[EMAIL PROTECTED]> wrote:
>> Yes, that's where you're mistaken. setInterval will set an interval that
>> will call a method at each interval. Whether you assign it to a 
>> variable or
>> not, it will continue to call that method at each interval. This is how
>> setInterval works. In order to clear an interval, you MUST assign an 
>> ID and
>> call clearInterval on that ID. The functionality you're talking about 
>> is a
>> setTimeout. That calls a method once and ONLY once after a specified 
>> delay.
>>
>>
>>
>> -----Original Message-----
>> From: [EMAIL PROTECTED]
>> [mailto:[EMAIL PROTECTED] On Behalf Of Jordan
>> Snyder
>> Sent: Friday, April 20, 2007 3:02 PM
>> To: flashcoders@chattyfig.figleaf.com
>> Subject: Re: [Flashcoders] setInterval woes
>>
>> No, I mean that he is only calling setInterval once and has no
>> apparent need to even assign it to a variable for use with
>> clearInterval later.
>>
>> On 4/20/07, David Ngo <[EMAIL PROTECTED]> wrote:
>> > An interval is fired at each interval. What you're talking about is a
>> > setTimeout which is fired only once after a delay (timeout). An 
>> interval
>> is
>> > fired an infinite number of times until clearInterval is called.
>> >
>> >
>> > -----Original Message-----
>> > From: [EMAIL PROTECTED]
>> > [mailto:[EMAIL PROTECTED] On Behalf Of Jordan
>> > Snyder
>> > Sent: Friday, April 20, 2007 2:03 PM
>> > To: flashcoders@chattyfig.figleaf.com
>> > Subject: Re: [Flashcoders] setInterval woes
>> >
>> > Steven, why is that?  If he's only calling it once and the interval is
>> > only defined/set once, why would you call clearInterval?
>> >
>> > On 4/20/07, Steven Sacks <[EMAIL PROTECTED]> wrote:
>> > > You should always call clearInterval before setInterval.  ALWAYS.
>> > >
>> > >
>> > > Michael King wrote:
>> > > > Hey all,
>> > > >
>> > > > Some of you may remember my problems with visually mapping 
>> streaming
>> > data
>> > > > before.  I ended up needing them as separate clips to provide
>> individual
>> > > > roll-over support with the ability to add links in a future 
>> revision.
>> > > >
>> > > > Well, now that I have it performing better, I'm breaking down the
>> > > > information into intervals of 1 minute "bursts".  What I'm 
>> trying to
>> do
>> > is
>> > > > use setInterval to have it pull the data once per minute.
>> > > >
>> > > > The problem is, when I use setInterval as documented, it waits the
>> first
>> > > > minute, does its thing, but then it ignores the interval after 
>> that,
>> > > > pulling the data every time that frame comes up.
>> > > >
>> > > >
>> > > > Here's the relevant bit of code:
>> > > >
>> > > > function intervalLoop() {
>> > > >       xmlData = new XML();
>> > > >       xmlData.load("wddx.php");
>> > > >       xmlData.onLoad = function () {
>> > > >             wddx = new Wddx();
>> > > >             _root.wddxObj = wddx.deserialize(this);
>> > > >             delete(xmlData);
>> > > >       }
>> > > >
>> > > >       for (j=0; j < _root.lines.length; j++) {
>> > > >             trace("Deleting clip: " + _root.lines[j]["pen"]._name);
>> > > >             _root.lines[j]["pen"].removeMovieClip();
>> > > >             delete(_root.lines[j]["pen"]);
>> > > >             delete(_root.lines[j]["timestamp"]);
>> > > >             _root.lines.splice(j,1);
>> > > >       }
>> > > >
>> > > >       for (var i in _root.wddxObj) {
>> > > >             _root.counter++;
>> > > >             date_now = new Date();
>> > > >             pen = createEmptyMovieClip("curve_" + i + "_mc", 2 +
>> > > > _root.counter);
>> > > >             trace("Added clip: " + pen._name);
>> > > >             pen.lineStyle(1.5,0xFF6600);
>> > > >             container = {pen: pen, timestamp: date_now};
>> > > >             _root.lines.push(container);
>> > > >             dest_long = _root.wddxObj[i]["long"];
>> > > >             dest_lat = _root.wddxObj[i]["lat"];
>> > > >             site = _root.wddxObj[i]["site"];
>> > > >             src_long = _root.locations[site]["long"];
>> > > >             src_lat = _root.locations[site]["lat"];
>> > > >             curvePoint(pen, src_long, src_lat, dest_long, 
>> dest_lat);
>> > > >       }
>> > > > }
>> > > >
>> > > > setInterval(intervalLoop, 60000);
>> > > >
>> > > > Thanks,
>> > > >
>> > > >
>> > > > Michael King
>> > > > CSIRT - Developer
>> > > > Security Incident Response Group
>> > > > Humana Inc.
>> > > > E-mail: [EMAIL PROTECTED]
>> > > > "STANDS: Some Theoretical Acronym Not Described Sufficiently"
>> > > >
>> > > > The information transmitted is intended only for the person or 
>> entity
>> to
>> > which it is addressed and may contain CONFIDENTIAL material.  If you
>> receive
>> > this material/information in error, please contact the sender and 
>> delete
>> or
>> > destroy the material/information.
>> > > > _______________________________________________
>> > > > Flashcoders@chattyfig.figleaf.com
>> > > > To change your subscription options or search the archive:
>> > > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>> > > >
>> > > > Brought to you by Fig Leaf Software
>> > > > Premier Authorized Adobe Consulting and Training
>> > > > http://www.figleaf.com
>> > > > http://training.figleaf.com
>> > > _______________________________________________
>> > > Flashcoders@chattyfig.figleaf.com
>> > > To change your subscription options or search the archive:
>> > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>> > >
>> > > Brought to you by Fig Leaf Software
>> > > Premier Authorized Adobe Consulting and Training
>> > > http://www.figleaf.com
>> > > http://training.figleaf.com
>> > >
>> >
>> >
>> > --
>> > Jordan Snyder
>> > Applications Developer
>> > Image Action LLC
>> > http://www.imageaction.com
>> > _______________________________________________
>> > Flashcoders@chattyfig.figleaf.com
>> > To change your subscription options or search the archive:
>> > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>> >
>> > Brought to you by Fig Leaf Software
>> > Premier Authorized Adobe Consulting and Training
>> > http://www.figleaf.com
>> > http://training.figleaf.com
>> >
>> > _______________________________________________
>> > Flashcoders@chattyfig.figleaf.com
>> > To change your subscription options or search the archive:
>> > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>> >
>> > Brought to you by Fig Leaf Software
>> > Premier Authorized Adobe Consulting and Training
>> > http://www.figleaf.com
>> > http://training.figleaf.com
>> >
>>
>>
>> -- 
>> Jordan Snyder
>> Applications Developer
>> Image Action LLC
>> http://www.imageaction.com
>> _______________________________________________
>> Flashcoders@chattyfig.figleaf.com
>> To change your subscription options or search the archive:
>> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>>
>> Brought to you by Fig Leaf Software
>> Premier Authorized Adobe Consulting and Training
>> http://www.figleaf.com
>> http://training.figleaf.com
>>
>> _______________________________________________
>> Flashcoders@chattyfig.figleaf.com
>> To change your subscription options or search the archive:
>> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>>
>> Brought to you by Fig Leaf Software
>> Premier Authorized Adobe Consulting and Training
>> http://www.figleaf.com
>> http://training.figleaf.com
>>
> 
> 
_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to