Thank you dr.ache. Wasn't that the problem. Anyway your answer helped me a lot. See what solution I came up:
function rew(m:MovieClip, f:Function) { m.onEnterFrame = function() { var cf:Number = m._currentframe; var tf:Number = m._totalframes; if (cf<=tf && cf>1) { m.gotoAndStop(--cf); } else if (cf==1) { m.stop(); if(f) eval(f)(); delete m.onEnterFrame; } }; } But the change was on the way I call the function: _root.rew(d.mask,"_root.nextFrame"); So now if I pass it between "" it seems to work fine. But still, there's a small problem that bothers me. Now I have to use eval(), wich I don't like at all. Any Ideas on how changing eval to a better solution? On 18/02/07, dr.ache <[EMAIL PROTECTED]> wrote:
Hi. i guess you have a scope problem. for me, your code worked fine, here my adjustments to test it (i got one MC with a 180 frame MotionTween starting at 120 when loaded, on the stage, called "fred". i simulated the function call with an interval, so the animation starts and after 2 seconds, your function "rew" is called with the parameters "_root.fred" and the function which should be called after rewind the animation "sayHello". It works. When you use Flash 8, try to understand the Delegate Class, which should help you handle the scope problem. hope that helps... dr.ache var i:Number = setInterval(this,"rew",2000,_root.fred,"sayHello"); function rew(m:MovieClip, f:Function) { clearInterval(_root.i); m.onEnterFrame = function() { var cf:Number = m._currentframe; var tf:Number = m._totalframes; if (cf<=tf && cf>1) { m.gotoAndStop(--cf); } else if (cf==1) { m.stop(); if(f) f(); delete m.onEnterFrame; } }; } function sayHello() { trace("hallo"); } Felipe Hefler schrieb: > Hi everyone! I'm having trouble with this issue: > function rew(m:MovieClip, f:Function) { > m.onEnterFrame = function() { > var cf:Number = m._currentframe; > var tf:Number = m._totalframes; > if (cf<=tf && cf>1) { > m.gotoAndStop(--cf); > } else if (cf==1) { > m.stop(); > if(f) f(); > delete m.onEnterFrame; > } > }; > } > > When I call this function in an action frame it's like this: > rew(targetpath_movieClipName, _root.play); > > What I want is that the function I've passed as a parameter works like a > function later in the code. Messy explanation?? OK OK... > Let's see if I can explain better. If I do something like this: > > function rew(m:MovieClip, f:String { > m.onEnterFrame = function() { > var cf:Number = m._currentframe; > var tf:Number = m._totalframes; > if (cf<=tf && cf>1) { > m.gotoAndStop(--cf); > } else if (cf==1) { > m.stop(); > if(f == "play") play(); > delete m.onEnterFrame; > } > }; > } > > it works perfectly, but I want to call any function and don't wanna > have to > make a switch for every kind o function. > Has anyone got it? > _______________________________________________ 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