ExMD
Threadersteller
Dabei seit: 27.01.2005
Ort: Saarland
Alter: 45
Geschlecht:
|
Verfasst Mo 10.03.2008 15:22
Titel Rotationsgeschwindigkeit bei Flash-Menü |
|
|
Hallöle
ich hab vor einiger Zeit ein fertiges Flash-Menü erhalten, das leicht angepasst werden sollte für eine Homepage.
Bilder drehen sich wie auf einem Karusell, werden unscharf und kleiner, wenn sie in den Hintergrund gelangen und bewegen sich je nach Position des Mauszeigers mit.
Das nervige an dem Script ist die Rotationsgeschwindigkeit, wenn die Maus die Flash-Datei zur Seite hin verlässt. Dann drillert das Ding, dass man nix mehr erkennen kann.
Ich hab jetzt versucht den Code anzupassen, allerdings hatte das den Nachteil, dass sich das auf die gesamte Rotationsgeschwindigkeit ausgewirkt hat. Sprich: Nach dem Laden rotiert das ganze entweder gar nicht oder viel zu langsam.
Vielleicht kann mir jemand weiterhelfen, was ich ändern muss?
Hier meine Änderungen, ab //rot -= (Stage.width/2-_xmouse)/10000*turningspeed; :
Code: |
//CHANGEABLE VARIABLES
//image dimensions
imageWidth = 112;
imageHeight = 75;
//span when animation has finished
xxspan = 200;
yyspan = 45;
//Starting span before moving to center
xspan = 5*xxspan;
yspan = 5*yyspan;
//scale when totally at the back (in %)
minimumscale = 25;
//turningspeed
turningspeed = 4;
//use a focal blur
useFocalBlur = true;
focalBlurValue = 2;
//margin from center of carousel where mouse position has no effect on turning
marg = 50;
//SCRIPTS
Stage.scaleMode = "noscale";
Stage.align = "left";
num = 1;
total = 0;
rot = 0;
sliding = false;
J.swapDepths((minimumscale+(100-minimumscale)*(1+(Math.sin(180)))/2));
//import libs
import mx.transitions.Tween;
import mx.transitions.easing.*;
import flash.display.BitmapData;
zoomed = false;
intThumb._visible = true;
// tween in the middle image
tween = new Tween(J, "_alpha", Strong.easeOut, 0, 100, 400, false);
//tween in the photos
tween = new Tween(this, "xspan", Strong.easeOut, xspan, xxspan, 50, false);
tween = new Tween(this, "yspan", Strong.easeOut, yspan, yyspan, 50, false);
// xml object / ignorewhite
xml = new XML();
xml.ignoreWhite = true;
//load object for parsing
xml.onLoad = function(sucess) {
if (sucess) {
storeAll(xml);
}
};
// load XML
xml.load('photos.xml');
//
// parsing function
function storeAll(xmlDoc_xml) {
//parse all folders
for (var n = 0; n<xmlDoc_xml.childNodes.length; n++) {
this["photo"+n] = new Object();
//add to folders list
duplicateMovieClip(intThumb, "thumb"+n, this.getNextHighestDepth());
thumbRef = this["thumb"+n];
thumbRef._visible = true;
thumbRef.num = n;
thumbRef.link = xmlDoc_xml.childNodes[n].attributes.link;
thumbRef.urls = xmlDoc_xml.childNodes[n].attributes.urls;
s = xmlDoc_xml.childNodes[n].attributes.subtitle;
if (s == undefined) {
s = "";
}
thumbRef.subtitle.text = s;
loadMovie(thumbRef.urls, thumbRef.loader);
total += 1;
}
//end for folders
trace("Done, parsed "+n+" photos");
perinstance = (2*Math.PI)/total;
}
//end function
this.onEnterFrame = function() {
//rot -= (Stage.width/2-_xmouse)/10000*turningspeed;
if (_ymouse<slider_bg._y-50) {
if (_xmouse>Stage.width/2+marg) {
rot -= (Stage.width/2+marg-_xmouse)/100000*turningspeed;
}
if (_xmouse<Stage.width/2-marg) {
rot -= (Stage.width/2-marg-_xmouse)/100000*turningspeed;
}
if (rot<0) {
rot = Math.PI*2+rot;
}
if (rot>Math.PI*2) {
rot = rot-Math.PI*2;
}
}
if (sliding) {
rot = (slider._x-slider_bg._x)/slider_bg._width*(Math.PI*2);
} else {
slider._x = slider_bg._x+rot/(Math.PI*2)*slider_bg._width;
}
};
//functions
function getX(number) {
ax = Stage.width/2+xspan*Math.cos(rot+number*perinstance);
return ax;
}
function getY(number) {
ay = Stage.height/2+yspan*Math.sin(rot+number*perinstance);
return ay;
}
function getScale(number) {
sc = Math.round((minimumscale+(100-minimumscale)*(1+(Math.sin(rot+number*perinstance)))/2)*100)/100;
return sc;
}
function blur(dis, number) {
dis.filters = "";
if (useFocalBlur) {
f = focalBlurValue-focalBlurValue*(1+(Math.sin(rot+number*perinstance)))/2;
var blur = new flash.filters.BlurFilter(f, f, 1);
var tmpFilters:Array = dis.filters;
tmpFilters.push(blur);
dis.filters = tmpFilters;
dis._alpha = 80+20*(1+(Math.sin(rot+number*perinstance)))/2;
}
}
function reflect(src, target, alpha) {
var bdata:BitmapData = new BitmapData(src._width/(src._xscale/100), src._height/(src._yscale/100), true, 0x00ffffff);
bdata.draw(src);
var refmc:MovieClip = target.createEmptyMovieClip("refmc", 0);
refmc.attachBitmap(bdata, 0);
refmc._yscale = -src._yscale;
refmc._xscale = src._xscale;
refmc._y = refmc._height;
var mask = target.createEmptyMovieClip("mask", 1);
var matrix = {matrixType:"box", x:0, y:0, w:refmc._width, h:refmc._height, r:(90/180)*Math.PI};
mask.beginGradientFill("linear", [0xffffff, 0xffffff], [alpha, 0], [0, 100], matrix, "pad");
mask.moveTo(0, 0);
mask.lineTo(0, refmc._height);
mask.lineTo(src._width, refmc._height);
mask.lineTo(src._width, 0);
mask.lineTo(0, 0);
mask.endFill();
refmc.cacheAsBitmap = true;
mask.cacheAsBitmap = true;
refmc.setMask(mask);
}
var myListener:Object = new Object();
Stage.addListener(myListener);
function centerIt() {
optionsmenu._x = Stage.width-10;
J._x = Stage.width/2;
J._y = Stage.height/2;
back._width = Stage.width+20;
back._height = Stage.height+20;
slider_bg._x = (Stage.width-slider_bg._width)/2;
slider_bg._y = Stage.height-10;
slider._y = slider_bg._y-10;
}
//
myListener.onResize = function() {
centerIt();
};
centerIt(); |
Hier der ursprüngliche Originalcode:
Code: | //CHANGEABLE VARIABLES
//image dimensions
imageWidth = 225;
imageHeight = 150;
//span when animation has finished
xxspan = 350;
yyspan = 55;
//Starting span before moving to center
xspan = 5*xxspan;
yspan = 5*yyspan;
//scale when totally at the back (in %)
minimumscale = 25;
//turningspeed
turningspeed = 4;
//use a focal blur
useFocalBlur = true;
focalBlurValue = 2;
//margin from center of carousel where mouse position has no effect on turning
marg = 50;
//SCRIPTS
Stage.scaleMode = "noscale";
Stage.align = "left";
num = 1;
total = 0;
rot = 0;
sliding = false;
J.swapDepths((minimumscale+(100-minimumscale)*(1+(Math.sin(180)))/2));
//import libs
import mx.transitions.Tween;
import mx.transitions.easing.*;
import flash.display.BitmapData;
zoomed = false;
intThumb._visible = true;
// tween in the middle image
tween = new Tween(J, "_alpha", Strong.easeOut, 0, 100, 400, false);
//tween in the photos
tween = new Tween(this, "xspan", Strong.easeOut, xspan, xxspan, 50, false);
tween = new Tween(this, "yspan", Strong.easeOut, yspan, yyspan, 50, false);
// xml object / ignorewhite
xml = new XML();
xml.ignoreWhite = true;
//load object for parsing
xml.onLoad = function(sucess) {
if (sucess) {
storeAll(xml);
}
};
// load XML
xml.load('photos.xml');
//
// parsing function
function storeAll(xmlDoc_xml) {
//parse all folders
for (var n = 0; n<xmlDoc_xml.childNodes.length; n++) {
this["photo"+n] = new Object();
//add to folders list
duplicateMovieClip(intThumb, "thumb"+n, this.getNextHighestDepth());
thumbRef = this["thumb"+n];
thumbRef._visible = true;
thumbRef.num = n;
thumbRef.link = xmlDoc_xml.childNodes[n].attributes.link;
thumbRef.urls = xmlDoc_xml.childNodes[n].attributes.urls;
s = xmlDoc_xml.childNodes[n].attributes.subtitle;
if (s == undefined) {
s = "";
}
thumbRef.subtitle.text = s;
loadMovie(thumbRef.urls, thumbRef.loader);
total += 1;
}
//end for folders
trace("Done, parsed "+n+" photos");
perinstance = (2*Math.PI)/total;
}
//end function
this.onEnterFrame = function() {
//rot -= (Stage.width/2-_xmouse)/10000*turningspeed;
if (_ymouse<slider_bg._y-50) {
if (_xmouse>Stage.width/2+marg) {
rot -= (Stage.width/2+marg-_xmouse)/10000*turningspeed;
}
if (_xmouse<Stage.width/2-marg) {
rot -= (Stage.width/2-marg-_xmouse)/10000*turningspeed;
}
if (rot<0) {
rot = Math.PI*2+rot;
}
if (rot>Math.PI*2) {
rot = rot-Math.PI*2;
}
}
if (sliding) {
rot = (slider._x-slider_bg._x)/slider_bg._width*(Math.PI*2);
} else {
slider._x = slider_bg._x+rot/(Math.PI*2)*slider_bg._width;
}
};
//functions
function getX(number) {
ax = Stage.width/2+xspan*Math.cos(rot+number*perinstance);
return ax;
}
function getY(number) {
ay = Stage.height/2+yspan*Math.sin(rot+number*perinstance);
return ay;
}
function getScale(number) {
sc = Math.round((minimumscale+(100-minimumscale)*(1+(Math.sin(rot+number*perinstance)))/2)*100)/100;
return sc;
}
function blur(dis, number) {
dis.filters = "";
if (useFocalBlur) {
f = focalBlurValue-focalBlurValue*(1+(Math.sin(rot+number*perinstance)))/2;
var blur = new flash.filters.BlurFilter(f, f, 1);
var tmpFilters:Array = dis.filters;
tmpFilters.push(blur);
dis.filters = tmpFilters;
dis._alpha = 80+20*(1+(Math.sin(rot+number*perinstance)))/2;
}
}
function reflect(src, target, alpha) {
var bdata:BitmapData = new BitmapData(src._width/(src._xscale/100), src._height/(src._yscale/100), true, 0x00ffffff);
bdata.draw(src);
var refmc:MovieClip = target.createEmptyMovieClip("refmc", 0);
refmc.attachBitmap(bdata, 0);
refmc._yscale = -src._yscale;
refmc._xscale = src._xscale;
refmc._y = refmc._height;
var mask = target.createEmptyMovieClip("mask", 1);
var matrix = {matrixType:"box", x:0, y:0, w:refmc._width, h:refmc._height, r:(90/180)*Math.PI};
mask.beginGradientFill("linear", [0xffffff, 0xffffff], [alpha, 0], [0, 100], matrix, "pad");
mask.moveTo(0, 0);
mask.lineTo(0, refmc._height);
mask.lineTo(src._width, refmc._height);
mask.lineTo(src._width, 0);
mask.lineTo(0, 0);
mask.endFill();
refmc.cacheAsBitmap = true;
mask.cacheAsBitmap = true;
refmc.setMask(mask);
}
var myListener:Object = new Object();
Stage.addListener(myListener);
function centerIt() {
optionsmenu._x = Stage.width-10;
J._x = Stage.width/2;
J._y = Stage.height/2;
back._width = Stage.width+20;
back._height = Stage.height+20;
slider_bg._x = (Stage.width-slider_bg._width)/2;
slider_bg._y = Stage.height-50;
slider._y = slider_bg._y-10;
}
//
myListener.onResize = function() {
centerIt();
};
centerIt();
|
Danke schon mal im Voraus!
|
|