Group94 Style Menu System

I have always liked the neat and compact menu system Group94 often use in their projects. It is really useful for lists or menus and is also of course very elegant.

I don’t know how Group94 do it, but here is my attempt. I have created two prototypes to make it easy to use multiple times within a project.

Download: Group94 Style Scrolling List

This example just uses a simple list, but the actionscript can easily be modified to make the items clickable to use as a menu system, or you could even use images. Your call!

The first prototype is used to create a vertical list from an array. The second is used to scroll the list depending on clicks or mouse wheel scrolling.

This is bare bones, so it is nice and simple and easy to build upon.

/*
I have used the old Zigo tweening prorotypes here, it will also work with Fuse.
Links are always good if you use it :)
*/
#include "lmc_tween.as"

MovieClip.prototype.createList = function (array, clip, visibleItems, xPos, yPos, spacing, offset)
{
	this.listItems = new Array ();

	this.total = array.length;
	this.vis = visibleItems;
	this.spacing = spacing;
	this.offset = offset;
	this._x = xPos;
	this._y = yPos;
	this.num = 1;

	for (var i = 1; i <= this.total; i++)
	{
		var listItem:MovieClip = this.attachMovie (clip, "listItem" + i, i);
		listItem.yPos = i * this.spacing;
		if (i <= this.vis)
		{
			listItem._y = listItem.yPos;
		}
		else
		{
			listItem._y = this.offset + (i * this.spacing);
			listItem._alpha = 0;
		}
		listItem.id = i;
		listItem.txt.text = i + ". " + array[i - 1];
		listMc.listItems[i - 1] = listItem;
	}
};

MovieClip.prototype.shuffleList = function (n)
{
	this.num += n;
	if (this.num > 0 && this.num <= ((this.total + 1) - this.vis))
	{
		var min:Number = this.num;
		var max:Number = this.num + this.vis;
		for (var i = 1; i <= this.total; i++)
		{
			var mc = this.listItems[i - 1];
			if (i < min)
			{
				var Y:Number = mc.yPos - this.offset - (this.num * this.spacing);
				var alpha:Number = 0;
			}
			else if (i >= max)
			{
				var Y:Number = mc.yPos + this.offset - (this.num * this.spacing);
				var alpha:Number = 0;
			}
			else
			{
				var Y:Number = mc.yPos - (this.num * this.spacing);
				var scale:Number = 100;
				var alpha:Number = 100;
			}
			mc.tween ("_y",Y,.7);
			mc.alphaTo (alpha,.7);
		}
	}
	else
	{
		this.num -= n;
	}
};

var fruits:Array = new Array ("Cornelian cherry ", "Date palm", "Fig", "Grape", "Jujube", "Black mulberry", "Olive", "Pomegranate", "Pomelo", "Grapefruit", "Lemon", "Lime", "Mandarin", "Clementine", "Tangerine", "Orange", "Avocado", "Feijoa", "Guava", "Kumquat", "Longan", "Lúcuma", "Lychee", "Passion fruit", "Pond-apple", "Strawberry guava", "Tamarillo", "Yangmei");

var listMc:MovieClip = this.createEmptyMovieClip ("listMc", 0);
listMc.createList (fruits,"listItem",5,150,40,30,20);
listMc.shuffleList (0);

prevBtn.onPress = function ()
{
	listMc.shuffleList (-1);
};
nextBtn.onPress = function ()
{
	listMc.shuffleList (+1);
};

var mouseListener:Object = new Object ();
mouseListener.onMouseWheel = function (delta)
{
	if (delta < 0)
	{
		listMc.shuffleList (+1);
	}
	else
	{
		listMc.shuffleList (-1);
	}
};
Mouse.addListener (mouseListener);
Posted on 07 Mar 2007
Posted in
33 Comments
1 Trackbacks

Meta

Group94 Style Menu was posted on March 7th 2007 in the category Code / Code, Flash and tagged; , , , , .

You can Leave a comment.

Twitter <follow>

February 7th 2012 - 5:37pm

RT @_leonardsouza_: 37signals to stop developing for IE8 » http://t.co/wL6dtZSg

Discussion

34 Responses to Group94 Style Menu

1 2 3

Leave a Reply

Pingbacks / Trackbacks

  1. 1 year ago wemakedotcoms » Blog Archive » 3D Globe Map

    [...] Andy Zupko’s excellent tutorial, for a previous project. The scroll menu is based on this demo by [...]

  1. Simm 4 years ago

    Cool! I’ve been looking for 1 like this.

    Reply to this comment

  2. Baiju Cherian 4 years ago

    Excellent work…

    Reply to this comment

  3. Stanz Sterden 4 years ago

    Hey, how are u? Can you respond my request? What`s the include as in your scrolling menu?

    Can you send me or post the source?

    Mail: Dextromethamphetamine@hotmail.com

    Many thanxks and best regards!

    Reply to this comment

  4. Soulwire 4 years ago

    Hi Stanz.

    I am using Laco’s tweening prototypes for this http://laco.wz.cz/tween/

    You can also use Fuse, which is worth checking out: http://www.mosessupposes.com/Fuse/

    I have made updates to this source and also a circular version! I will be posting them this weekend.

    Reply to this comment

  5. Goliatone 4 years ago

    hi there,

    this is cool stuff, tnxs for releasing the code. What about the circular one?!

    Reply to this comment

  6. Soulwire 4 years ago
  7. Boga 4 years ago

    Perfect work… :) But how i can load menu items from xml file ?

    best regards from Latvia !!! :)

    Reply to this comment

  8. Adriaan 4 years ago

    Awesome, I was looking for this exactly…

    @boga: as you traverse through your items received from xml, you can just use the array.push method to add the individual items to the fruits array as in the example

    Reply to this comment

  9. Adriaan 4 years ago

    Hi Justin,

    Thanks again for this, it’s really awesome…

    I was just wondering, how would I write an onRollOver handler for each of the listItems?

    A response would really be appreciated.

    Thanks

    Reply to this comment

  10. saclekalk 4 years ago

    Good stuff, very nicely done.
    Well, thanks!

    Reply to this comment

  11. frm.newbie 3 years ago

    Hi!

    Thank you for realeasing the code!

    How could I change it so the list items would appear horizontal?

    A response woulde be greatly appreciated.

    Reply to this comment

1 2 3