Re: [Flashcoders] SetInterval Magic

2006-01-11 Thread Sönke Rohde
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


Re: [Flashcoders] SetInterval Magic

2006-01-11 Thread Alias
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/1766.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


RE: [Flashcoders] SetInterval Magic

2006-01-11 Thread Dhiraj Girdhar
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/1766.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