Thread: Resolved Scriptaculous Effects Queue
View Single Post
Old 11-28-2008, 09:23 PM   PM User | #2
gnomeontherun
Senior Coder

 
gnomeontherun's Avatar
 
Join Date: Sep 2007
Location: Houston
Posts: 2,846
Thanks: 10
Thanked 238 Times in 229 Posts
gnomeontherun will become famous soon enoughgnomeontherun will become famous soon enough
Alright I came up with something that works, but isn't exactly what I'd like. I have decided that I can live with the image not floating back to its original position. I have isolated the image from the text by doing this.

Code:
#portfolio-cloud {
	background-image: url("../images/portfolio_bg.png");
	background-repeat: no-repeat; 
	width: 124px;
	height: 35px;
	display: block;
	text-align: center;
	padding-top: 35px;
}

#portfolio {
	position: relative;
	top: -37px;
	padding-left: 28px;
}


<span id="portfolio-cloud"></span><a href="#" id="portfolio" onmouseover="FloatCloud('portfolio-cloud');" onmouseout="StopFloatCloud('portfolio-cloud');">portfolio</a>
EDIT:

Persistence is the key!

Solved by this code. Basically I added 'afterFinish' to the last queue item to loop the animation. Also, I found that by clearing the queue on mouseout and by using one last Effect.Move with 0,0,'absolute' returns it to its original location.

Code:
function floatCloud(element){
	new Effect.Move(element, { x: 6, y: -3, mode: 'relative', duration: 1.0, queue: { position: 'end', scope: element } });
	new Effect.Move(element, { x: -4, y: 5, mode: 'relative', duration: 1.0, queue: { position: 'end', scope: element } });
	new Effect.Move(element, { x: 5, y: 2, mode: 'relative', duration: 1.0, queue: { position: 'end', scope: element } });
	new Effect.Move(element, { x: -7, y: -4, mode: 'relative', duration: 1.0, queue: { position: 'end', scope: element }, afterFinish: function() { floatCloud(element); } });
}

function stopFloatCloud(element){
	var queue = Effect.Queues.get(element);
	queue.each(function(effect) { effect.cancel(); });
	new Effect.Move(element, { x: 0, y: 0, mode: 'absolute', duration: 1.0 });
}
__________________
jeremy - gnomeontherun
Educated questions often get educated answers, and simple questions often get simple answers.

Last edited by gnomeontherun; 11-28-2008 at 11:15 PM..
gnomeontherun is offline   Reply With Quote