I have an image which I want to move around slightly, like a boat on water, when the cursor is over. I have used Effect.Move to create this with an effect queue. Here is the code.
1) I have only been able to Stop the floating where it is, so when I mouseout, it does not return to its original location. Can I somehow save the original location and have it float back there?
2) Is there another way so that only the span floats, and the link itself stays? I tried moving it outside of the span, but then it did not function when rolling over the link. PS, the span is a block element in the CSS, and I want the link to activate the floating, not the image itself.
3) Is there any other way to simulate this effect? I know other frameworks are out there, but I'll take suggestions or ideas?
Thanks!
__________________
jeremy - gnomeontherun Educated questions often get educated answers, and simple questions often get simple answers.
Last edited by gnomeontherun; 11-28-2008 at 11:16 PM..
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.
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..