LazerExx
02-07-2005, 11:07 AM
I've been trying to create the Mac OS X Object bar "effect" for a few weeks now.
I'm not shure everyone know this effect, but it's a bar, consisting of several icons or elements, that scales when upon mouseover. The scaling works fine, but i can't seem to get the other elements to position themselves to the scaled object. It workes fine if i hard-code each element, but i'm trying to create a general function to do it.
The part with the loading of the pictures is working fine, and i've taken that part out of the code, to do it more readable.
So the code is just the scaling and positioning code.
Am i just stupid, or has this been made before?
Help, much appreciated.
onClipEvent(load) {
var bilder:Array = new Array();
for (var i in _root.alle_bildene) {
bilder.unshift(_root.alle_bildene[i]);
_root.alle_bildene[i]._alpha = 50;
_root.alle_bildene[i]._x = 50;
}
var sjefenArrayIndex:Number = 0;
flyttElementer(0,bilder[0]);
var startY:Number=bilder[0]._y;
function getPosInArray(mc:Object, liste:Array) {
var posInArray:Number = null;
for(var a:Number=0; a<=liste.length; a++) {
if(liste[a] == mc) {
posInArray = a;
}
}
return posInArray;
}
function flyttElementer(sjefenIndex:Number, am:Object) {
var a:Number = sjefenIndex;
//Loop som flytter alle elementene som er høyere opp i arrayet ned på siden.
while (a<= bilder.length) {
var nextIndex:Number = (a + 1);
var bounds_objOpp:Object = bilder[a].getBounds(_root.alle_bildene);
bilder[nextIndex]._y = bounds_objOpp.yMax + 50
a++;
}
var b:Number = sjefenIndex;
//Loop som flytter alle elementene som er lengre ned i arrayet oppover på siden.
while (b>=1) {
var prevIndex:Number= b - 1;
var bounds_objNed:Object = bilder[b].getBounds(_root.alle_bildene);
bilder[prevIndex]._y = bounds_objNed.yMin - 50
b--;
}
}
function magnify(active_movie:Object, speed:Number, minScale:Number, maxScale:Number){
active_movie.onRollOver = function(){
active_movie.MouseOver = true;
active_movie.useHandCursor = false;
};
active_movie.onRollOut = function(){
active_movie.MouseOver = false;
};
if(active_movie.MouseOver == true){
sjefenArrayIndex = getPosInArray(active_movie, bilder);
flyttElementer(sjefenArrayIndex, active_movie);
if(active_movie._xscale <= maxScale){
active_movie._xscale += speed;
active_movie._yscale += speed;
}
}
if(active_movie.MouseOver == false){
sjefenArrayIndex = getPosInArray(active_movie, bilder);
flyttElementer(sjefenArrayIndex, active_movie);
if(active_movie._xscale >= (minScale + 1)){
active_movie._xscale -= speed;
active_movie._yscale -= speed;
}
}
bilder[0]._y = startY;
flyttElementer(0,bilder[0]);
};
}
onClipEvent(enterFrame) {
magnify(_root.alle_bildene.movieclip0, 50, 100, 400); // myMovieClip.magnify(destination movieclip(Object), speed, minScale, maxScale);
magnify(_root.alle_bildene.movieclip1, 50, 100, 400); // myMovieClip.magnify(destination movieclip(Object), speed, minScale, maxScale);
magnify(_root.alle_bildene.movieclip2, 50, 100, 400); // myMovieClip.magnify(destination movieclip(Object), speed, minScale, maxScale);
magnify(_root.alle_bildene.movieclip3, 50, 100, 400); // myMovieClip.magnify(destination movieclip(Object), speed, minScale, maxScale);
}
The .zip file contains the .fla file, and has been scanned and is 100% virus free.
I'm not shure everyone know this effect, but it's a bar, consisting of several icons or elements, that scales when upon mouseover. The scaling works fine, but i can't seem to get the other elements to position themselves to the scaled object. It workes fine if i hard-code each element, but i'm trying to create a general function to do it.
The part with the loading of the pictures is working fine, and i've taken that part out of the code, to do it more readable.
So the code is just the scaling and positioning code.
Am i just stupid, or has this been made before?
Help, much appreciated.
onClipEvent(load) {
var bilder:Array = new Array();
for (var i in _root.alle_bildene) {
bilder.unshift(_root.alle_bildene[i]);
_root.alle_bildene[i]._alpha = 50;
_root.alle_bildene[i]._x = 50;
}
var sjefenArrayIndex:Number = 0;
flyttElementer(0,bilder[0]);
var startY:Number=bilder[0]._y;
function getPosInArray(mc:Object, liste:Array) {
var posInArray:Number = null;
for(var a:Number=0; a<=liste.length; a++) {
if(liste[a] == mc) {
posInArray = a;
}
}
return posInArray;
}
function flyttElementer(sjefenIndex:Number, am:Object) {
var a:Number = sjefenIndex;
//Loop som flytter alle elementene som er høyere opp i arrayet ned på siden.
while (a<= bilder.length) {
var nextIndex:Number = (a + 1);
var bounds_objOpp:Object = bilder[a].getBounds(_root.alle_bildene);
bilder[nextIndex]._y = bounds_objOpp.yMax + 50
a++;
}
var b:Number = sjefenIndex;
//Loop som flytter alle elementene som er lengre ned i arrayet oppover på siden.
while (b>=1) {
var prevIndex:Number= b - 1;
var bounds_objNed:Object = bilder[b].getBounds(_root.alle_bildene);
bilder[prevIndex]._y = bounds_objNed.yMin - 50
b--;
}
}
function magnify(active_movie:Object, speed:Number, minScale:Number, maxScale:Number){
active_movie.onRollOver = function(){
active_movie.MouseOver = true;
active_movie.useHandCursor = false;
};
active_movie.onRollOut = function(){
active_movie.MouseOver = false;
};
if(active_movie.MouseOver == true){
sjefenArrayIndex = getPosInArray(active_movie, bilder);
flyttElementer(sjefenArrayIndex, active_movie);
if(active_movie._xscale <= maxScale){
active_movie._xscale += speed;
active_movie._yscale += speed;
}
}
if(active_movie.MouseOver == false){
sjefenArrayIndex = getPosInArray(active_movie, bilder);
flyttElementer(sjefenArrayIndex, active_movie);
if(active_movie._xscale >= (minScale + 1)){
active_movie._xscale -= speed;
active_movie._yscale -= speed;
}
}
bilder[0]._y = startY;
flyttElementer(0,bilder[0]);
};
}
onClipEvent(enterFrame) {
magnify(_root.alle_bildene.movieclip0, 50, 100, 400); // myMovieClip.magnify(destination movieclip(Object), speed, minScale, maxScale);
magnify(_root.alle_bildene.movieclip1, 50, 100, 400); // myMovieClip.magnify(destination movieclip(Object), speed, minScale, maxScale);
magnify(_root.alle_bildene.movieclip2, 50, 100, 400); // myMovieClip.magnify(destination movieclip(Object), speed, minScale, maxScale);
magnify(_root.alle_bildene.movieclip3, 50, 100, 400); // myMovieClip.magnify(destination movieclip(Object), speed, minScale, maxScale);
}
The .zip file contains the .fla file, and has been scanned and is 100% virus free.