-
Senior Member
onEnterFrame question - please help!
Updated - Read my post below
Last edited by frostbite; 01-26-2007 at 02:46 PM.
Yarrg Matey!
-
why don't u use a function and then attach it to the places u want it to work?
that way it'll call out when its needed.
-
Senior Member
that would definitely make it easier but I think the problem could still arise if the function has onEnterFrame in it...
-
Senior Member
Code:
var menuOver:Function = function(mc_blank:MovieClip):Void {
// function block here
mc_blank.gotoAndPlay(2);
var theArray:Array ;
theArray = new Array(30) ;
var theCircle:MovieClip ;
var maxYV = 30 ;
c1yv = new Array(maxYV) ;
for (var z:Number = 0 ; z < maxYV ; z++) {
c1yv[z] = ( Math.random() * 3 ) + 1 ;
}
for (var a:Number = 0 ; a < 30 ; a++) {
theCircle = attachMovie("circle","circle"+_root.getNextHighestDepth(), a+_root.getNextHighestDepth()) ;
var randSize:Number = Math.random() * 30 ;
theCircle._xscale = randSize ;
theCircle._yscale = randSize ;
theCircle._x = Math.random() * (mc_blank._width + 40) + (mc_blank._x - 20);
theCircle._y = -1 * (Math.random() * ( 30)) ;
theArray[a] = theCircle ;
}
mc_blank.onEnterFrame = function() {
for (var a:Number = 0 ; a < 30 ; a++) {
theArray[a]._y += c1yv[a] ;
if ( theArray[a]._y > 30 ) {
theArray[a]._y = 0 ;
}
}
}
return;
}
var menuOut:Function = function(mc_blank:MovieClip):Void {
//function block here
mc_blank.gotoAndPlay(6);
mc_blank.onEnterFrame = function () {
for (var a:Number = 0 ; a < 30 ; a++) {
theArray[a]._y += c1yv[a] ;
if ( theArray[a]._y > 30 ) {
theArray[a]._y = 0 ;
}
theArray[a]._alpha -= 10;
}
}
return;
}
That is the code I have defining the functions
The code calling the functions are on the buttons and look like this.
Code:
on(rollOver) {
menuOver(mc_home);
}
on(rollOut) {
menuOut(mc_home);
}
Here is the problem, for one, the onEnterFrame of the menuOut function does not make the circles fade away, but when all that code was just on the buttons themselves it did.
The other problem is that even if they did rollOut, when you would rollOver another button when one is still fading out, it would just cancel the rollOut and create the array on the other button starting that animation.
-
oh use the delete syntax..
on(rollOut){
menuOut(mc_home)
delete MC.onEnterFrame
}
target the previous one so that it cuts out the loop.
-
Senior Member
Getting Warmer...
Well it is getting there.
Code:
var theArray:Array ;
theArray = new Array(50) ;
var theCircle:MovieClip ;
var maxYV = 50 ;
c1yv = new Array(maxYV) ;
for (var z:Number = 0 ; z < maxYV ; z++) {
c1yv[z] = ( Math.random() * 3 ) + 1 ;
}
var menuOver:Function = function(mc_blank:MovieClip):Void {
mc_blank.gotoAndPlay(2);
for (var a:Number = 0 ; a < 50 ; a++) {
theCircle = attachMovie("circle","circle"+_root.getNextHighestDepth(), a+_root.getNextHighestDepth()) ;
var randSize:Number = Math.random() * 30 ;
theCircle._xscale = randSize ;
theCircle._yscale = randSize ;
theCircle._x = Math.random() * (mc_blank._width + 40) + (mc_blank._x - 20);
theCircle._y = -1 * (Math.random() * ( 30)) ;
theArray[a] = theCircle ;
}
mc_blank.onEnterFrame = function() {
for (var a:Number = 0 ; a < 50 ; a++) {
theArray[a]._y += c1yv[a] ;
if ( theArray[a]._y > 30 ) {
theArray[a]._y = 0 ;
}
}
}
return;
}
var menuOut:Function = function(mc_blank:MovieClip):Void {
//function block here
mc_blank.gotoAndPlay(6);
mc_blank.onEnterFrame = function () {
for (var a:Number = 0 ; a < 50 ; a++) {
theArray[a]._y += c1yv[a] ;
if ( theArray[a]._y > 30 ) {
theArray[a]._y = 0 ;
}
theArray[a]._alpha -= 10;
if ( theArray[a]._alpha = 0 ) {
delete mc_blank.onEnterFrame;
}
}
}
return;
}
Basically why it wasn't fading out before was a scope issue, I was initializing the array within the rollover function.
and I added the delete mc_blank.onEnterFrame within the rollout so when it is finished fading out, it deletes the onEnterFrame, and not beforehand.
The only problem now, however, is if you rollover another of the buttons while the menuOut function is still fading out the array, the the array that is fading out will be deleted and the other button will just fade out the array and stop.
How can I get it so it avoids this problem, so if you roll over another button, the rollout on the previous button finishes?
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|