I forgot to do something with the alignItems function, here it is:
function alignItems(){
var i = _global.menuNum, keyIndex = isNaN(_global.currentlyOver)?
null:_global.currentlyOver+1, done = true, items = _global.menuItems,
targetDistance, distance;
while(i-->1){
targetDistance = items[i-1]._x + itemSize;
if(i==keyIndex) targetDistance += itemSpacing2;
else targetDistance += itemSpacing;
distance = targetDistance - items[i]._x;
if(Math.abs(distance)>1){
items[i]._x += distance*0.4;
if(done) done = false;
} else if(distance!=0) items[i]._x = targetDistance;
}
updateAfterEvent();
if(done) clearInterval(_global.intID);
}
On 4/14/06, elibol <[EMAIL PROTECTED]> wrote:
>
> Hey man, try this out
>
> init();
>
> function init(){
>
> _level0.createEmptyMovieClip("menu",-1);
> _global.menuNum=6;
> _global.itemSize=75;
> _global.itemSpacing = 10;
> _global.itemSpacing2 = 40;
> _global.menuItems=[];
> _global.currentlyOver = null;
> var i = -1, mitems;
> while(++i < menuNum){
> mitems = _global.menuItems[i] = menu.attachMovie("clip","clip"+i,i);
>
> mitems._x=i*(itemSize+itemSpacing);
>
> mitems._y=Stage.height/2;
> mitems.index = i;
> mitems._controller = this;
> mitems.onRollOver = function(){
> this._controller.setRollOverItem( this.index);
> }
> mitems.onRollOut=function(){
> this._controller.reset();
> }
> mitems.onRelease=function(){
> trace("you clicked item "+this.index);
> }
> }
> }
>
> function setRollOverItem(index:Number):Void {
> clearInterval(_global.intID);
> _global.currentlyOver = index;
> _global.intID = setInterval(this, 'alignItems', 15);
> }
>
> function reset(){
> clearInterval(_global.intID);
> _global.currentlyOver = null;
> _global.intID = setInterval(this, 'alignItems', 15);
> }
>
> function alignItems(){
> var i =-1, l = _global.menuNum, keyIndex =
> isNaN(_global.currentlyOver)? null:_global.currentlyOver+1, done = true,
> items = _global.menuItems, targetDistance, distance;
> while(++i<l){
> if(i!=0){
> targetDistance = items[i-1]._x + itemSize;
> if(i==keyIndex) targetDistance += itemSpacing2;
> else targetDistance += itemSpacing;
> distance = targetDistance - items[i]._x;
> items[i]._x += distance*0.4;
> if(Math.abs(distance)>1 && done) done = false;
> }
> }
> updateAfterEvent();
> if(done) clearInterval(_global.intID);
>
> }
>
> On 4/13/06, Flash guru <[EMAIL PROTECTED]> wrote:
> >
> > Hey all,
> >
> > I'm working on this nav system and it has one bug in it. I know there is
> >
> > something wrong with my logic somwhere, I've just looked at it to long.
> > Basically the bug is if you roll your mouse from right to left to
> > quickly
> > you get this crazy spacing issue. Any help would be great.
> >
> > To make the following code to work just create a rectangle 75x11 and
> > make it
> > into a symbol with a linkage name of 'clip'. That's it you don't need
> > anything on stage and put the following code in frame 1.
> >
> > Thanks again
> >
> >
> >
> >
> > init();
> > function init(){
> > //initialize menu items
> > _level0.createEmptyMovieClip("menu",-1);
> > _global.menuNum = 6; //number of menuitems
> > _global.menuSpacing = 85; //spacing
> > //set properties for menu items
> > for(var i=0; i<menuNum+1; i++){
> > var mitems:MovieClip = menu.attachMovie("clip","clip"+i,i);
> > mitems._x = i * menuSpacing;
> > mitems._y = Stage.height/2 ;
> > mitems.id = i;
> > mitems.moved = 0;
> > mitems.onRollOver = function(){ checkState(this); }
> > mitems.onRollOut = function(){ moveBack(this); }
> > mitems.onRelease = function(){ trace("you clicked item "
> > +this.id);}
> > }
> > }
> >
> > function checkState(itemPressed){
> > var startItem = itemPressed.id +1;
> > for(var j=startItem; j<8; j++){
> > if(menu["clip"+j].moved == 1){ //checks to make sure you
> > can't
> > rollover an item more than once
> > delete menu["clip"+j].onRollOver;
> > }else{ //moves items
> > var cliptoMove = menu["clip"+j];
> > var movePos = menu["clip"+j]._x + (cliptoMove._width/2); //will
> > be
> > used to tween items to the right of the one pressed
> > tween(cliptoMove,movePos, itemPressed.id-1);
> > menu["clip"+j].moved = 1;
> > }
> > }
> > };
> >
> > function moveBack(item){
> > var startItem = item.id +1;
> > for(var j=startItem; j<8; j++){
> > var cliptoMove = menu["clip"+j];
> > var origPos = j * menuSpacing;
> > tween(cliptoMove,origPos);
> > menu["clip"+j].moved=0;
> > }
> >
> > }
> > function tween(clip,targetX,itemtoDel){
> > if(clip._x != targetX){
> > clip.onEnterFrame = function(){
> > var easing = .5;
> > var vx = (targetX - clip._x)*easing;
> > clip._x +=vx
> > }
> > }
> > }
> > _______________________________________________
> > [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