Hi Guys,

        I am using second option of setInterval, but I am not able to 
understand the scope issue here.
Is there any solution other than Delegates? As, I am working for Flash 6 also.

'D'

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Alias
Sent: Wednesday, January 11, 2006 6:09 PM
To: Flashcoders mailing list
Subject: Re: [Flashcoders] SetInterval Magic

Hi guys,

It's important to realise that setInterval has two different ways to call it.

The first, and most commonly used, is this:

setInterval(functionReference:Function, interval:Number,
[param1:Object, param2, ..., paramN]) : Number

The second, which is less well known, but substantially more reliable, is this:

setInterval(objectReference:Object, methodName:String,
interval:Number, [param1:Object, param2, ..., paramN]) : Number



Although the first example will work, the function will execute in the
wrong scope.
The second, however, because it allows you to specify the scope in
which it executes, is far more reliable.

For example, if I'm inside a class, and want to call a public method
of that same class every 1000 ms, I would use:

setInterval(this,"myFunction",1000);

What's important to understand here is the difference between passing
the name of the function, and *the function itself* - which is what's
happening in the first example. There has been a lot of confusion
about this over the past few years, mostly due to ambiguous
documentation. Have a look here for a well written piece of
documentation on the subject:

http://livedocs.macromedia.com/flash/8/main/00001766.html

Hope this helps,
Alias


On 1/11/06, Sönke Rohde <[EMAIL PROTECTED]> wrote:
> Hi,
> This is a scope-issue. Try
>
> import mx.utils.Delegate
> ...
> setInterval(Delegate.create(this, func), 2000);
>
> Cheers,
> Sönke
>
> > Hi Coders,
> >
> >       In following code, I am creating a new dynamic movie clip (in
> > function N1 of script object) and associating the handler for unload
> > event. Next I am deleting the same movie clip in function N3 of script
> > object. But if we are calling the function N3 through setInterval
> > function, movieclip unload event is not called.
> >
> > Now if we are calling the same function N3 directly without
> > setInterval,
> > unload event will be called.
> >
> > Someone please tell me what is happening here?
> >
> >
> >
> > script = new Object();
> >
> > Delay = new Object();
> >
> >
> >
> > // Delay Object
> >
> > Delay.delay = function(obj, func)
> >
> > {
> >
> >       this.mObj = obj;
> >
> >       this.mFunc = func;
> >
> >       // Calling function after an interval of 2 seconds.
> >
> >       setInterval(this.func, 2000, this);
> >
> > }
> >
> >
> >
> > Delay.func = function(obj)
> >
> > {
> >
> >       var temp = obj;
> >
> >       // Calling function N3 of class script.
> >
> >       temp.mObj[temp.mFunc]();
> >
> > }
> >
> >
> >
> > // Script Object
> >
> > script.N1 = function()
> >
> > {
> >
> >       // Creating a new movie clip.
> >
> >       _root.createEmptyMovieClip("Dhiraj", 1);
> >
> >
> >
> > // Associating unload event with it.
> >
> >       _root.Dhiraj.onUnload = function()
> >
> >       {
> >
> >             trace("Dhiraj Unload");
> >
> >       }
> >
> >
> >
> >       // Storing the movie clip instance in member variable.
> >
> >       this.mMC = _root.Dhiraj;
> >
> >
> >
> >       // Calling next function of script.
> >
> >       this.N2();
> >
> > }
> >
> >
> >
> > script.N2 = function()
> >
> > {
> >
> > // Calling N3 after some delay.
> >
> >       Delay.delay(this, "N3");
> >
> > }
> >
> >
> >
> > script.N3 = function()
> >
> > {
> >
> >       this.mMC.removeMovieClip();
> >
> > }
> >
> >
> >
> > script.N1();      // Calling first function of script.
> >
> >
> >
> > Regards:
> >
> > Dhiraj
> >
> > _______________________________________________
> > Flashcoders mailing list
> > Flashcoders@chattyfig.figleaf.com
> > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >
>
> _______________________________________________
> Flashcoders mailing list
> Flashcoders@chattyfig.figleaf.com
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to