Setting Alpha filters for a menu item? and manipulating them

Having problems with DHTML Menu? There is usually somebody here who knows the answer.
Post Reply
User avatar
cubefree
Super Advanced
Super Advanced
Posts: 82
Joined: Fri Aug 01, 2003 3:16 am
Location: Seattle, WA
Contact:

Setting Alpha filters for a menu item? and manipulating them

Post by cubefree »

I know about the overfilter attribute, however that controls the alpha filters for an entire menu.

Is there a way to control alpha filters for a single menu item cell?

Is there a way to set it from the get-go without using onfunction/offfunction attibutes?


I am experimenting with the following code for opacity changes...

Code: Select all

function changeOpacity( objID, opacity ) 
 { 
  document.all[objID].style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + opacity + ");"; 
 }
but the question remains how to identify the cell of the menu.

I have some other code I've got working to manipulate a table cell, but it needs some work.

Code: Select all


var apl = new Array();
apl[0] = new Array(65,"");
apl[1] = new Array(65,"");
apl[2] = new Array(65,"");
apl[3] = new Array(65,"");

// Opacity variables and function
nOpac = 50
nPlus = 2
nMin = 1
speed = 30
timer = null; 
timer2 = null;

function topfadein(teller)
{
 apl[teller][1] = "Up";
 topchanges();
}

function topfadeout(teller)
{
 apl[teller][1] = "Down";
 setTimeout("topchanges()",50);
}

function topchanges()
{
 next_loop = true;
 for (i=0;i<apl.length;i++)
 {
  obj = main.rows[0].cells[i];
  opacity = apl[i][0]
  if (apl[i][1] == "Up")
  {
     opacity += nPlus;
     apl[i][0] = opacity;
     if (apl[i][0] > 105) 
      {apl[i][1] = "";}
     else
     {next_loop = false;}
	 nOpac = opacity;
  }
  else
  {
  if (apl[i][1] == "Down")
  {
     opacity -= nMin;
     apl[i][0] = opacity;
     if (apl[i][0] < 65) 
      {apl[i][1] = "";}
     else
     {next_loop = false;}
	 nOpac = opacity;
  }
  }
  if(ie5){ 
	obj.style.filter="alpha(opacity="+opacity+")";
    }
  if(ns6){ 
   	obj.style.MozOpacity = opacity + '%';
   }
 }
 if (next_loop == false)
  {
   timer = setTimeout("topchanges()",speed);
  }
  else
  {
   clearTimeout(timer);
  }
}
You can see that code in action at http://www.cubefree.com ( the milonic menu is not yet activated on this site tho)[/b]
User avatar
cubefree
Super Advanced
Super Advanced
Posts: 82
Joined: Fri Aug 01, 2003 3:16 am
Location: Seattle, WA
Contact:

Post by cubefree »

Sorry to reply to my own post... but the length of my message requires a new post.

You can see my acceptable solution here: http://www.cubefree.com/menu.htm


Here's a reply from Andy:
> Yes, the variable _itemRef is the currently selected item id and is global. Take a look at http://milonic.com/menusample.php?sampleid=15

AND

Try this.

function changeOpacity( objID, opacity )
{
var obj = gmobj("el"+objID);
obj.style.filter =
"progid:DXImageTransform.Microsoft.Alpha(opacity=" + opacity + ");";
}
I was still getting the following error trying to manipulate the opacity of an entire cell:

> Line: 17
> Char: 8672
> Error:'_m[...].23' is null or not an object

So, I manipulated the image only in the horizontial nav.

Here's the code I used:

Code: Select all

// Opacity variables and function
var nPlus   = 2;
var nMin    = 3;
var speed   = 10;
var timer   = null; 
var timer2  = null; 

function changeOpacityUp( objID, zOpacity )	
{
	nOpac   = 65;
	upObj   = gmobj(objID);
	direction = "Up";
	fadeUp();
}

function changeOpacityDown( objID, zOpacity )
{
	dOpac = 65;
	downObj   = gmobj(objID);
	direction = "Down";
	setTimeout("fadeDown()", 50);
}

function fadeUp() 
{
	//alert(nOpac);
	next_loop = true;
	opacity = nOpac;
	if (direction == "Up")
	{
	opacity += nPlus;
	nOpac = opacity;
	if (nOpac > 105) 
		{direction = "";}
	else
		{next_loop = false;}
	nOpac = opacity;
	}
	
	if(document.all && document.getElementById){ 
		upObj.filters.item("DXImageTransform.Microsoft.Alpha").opacity = opacity;
	}
	if(document.getElementById && !document.all){ 
		//obj.style.MozOpacity = opacity + '%';
	}
	
	if (next_loop == false)
	{
		timer = setTimeout("fadeUp()",speed);
	}
	else
	{
	//	alert("timer cleared");	  
		clearTimeout(timer);
	}
}

function fadeDown() 
{
	next_loop = true;
	opacity = dOpac;
	if (direction == "Down")
	{
		opacity -= nMin;
		dOpac = opacity;
		if (dOpac < 65) 
		{ direction = ""; }
		else
		{ next_loop = false; }
		dOpac = opacity;
	}

	  if(document.all && document.getElementById){ 
	    downObj.filters.item("DXImageTransform.Microsoft.Alpha").opacity = opacity;
		}
	  if(document.getElementById && !document.all){ 
		//obj.style.MozOpacity = opacity + '%';
	   }

	 if (next_loop == false)
	  {
	   timer2 = setTimeout("fadeDown()",speed);
	  }
	  else
	  {
	  	//alert("timer2 cleared and loop = " + next_loop);
		
	   clearTimeout(timer2);
	  }
}
Ok, hope someone else has some ideas on how to manipulate the cell itself.

Thx
Cubeman
Post Reply