I'm not testing, but you could use:
f.call();
as long as f is a reference to a Function object
On 2/18/07, Felipe Hefler <[EMAIL PROTECTED]> wrote:
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?
> >
>
> _______________________________________________
> [email protected]
> 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
>
_______________________________________________
[email protected]
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
_______________________________________________
[email protected]
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