DaJan
Threadersteller
Dabei seit: 28.07.2006
Ort: Hamburg
Alter: 21
Geschlecht:
|
Verfasst Do 08.01.2009 22:35
Titel AS3 Pfeilsteuerung eines Flash-Karusells. |
|
|
ich habe ein problem, ich brauche ein flash-karussel für ein provates projekt.
weil ich absolut keine ahnung habe, habe ich mir ein template gekauft.
alles super... nur leider funktioniert die navigation nur über die mausposition, dass gefällt mir jetzt im nachhinein nicht wirklich. ich möchte lieber, oldshool über pfeile steuern. habe jetzt schon ne ganze weile rumprobiert und gemacht und getan, aber egal was ich mache, es führt dazu, dass das ding gar nichts mehr macht...
kann mir vllt. einer einen tipp geben, wie ich am besten an die sache ran gehe, damit cih mein ziel erreiche.
anbei einmal das externe script.
Zitat: |
import flash.filters.BlurFilter;
import mx.utils.Delegate;
class oxylus.carousel.Carousel extends MovieClip {
private var node:XMLNode;
private var _vertical:Boolean;
private var _autoMove:Boolean;
private var _speed:Number;
private var _maxSpeed:Number;
private var _radiusx:Number;
private var _radiusy:Number;
private var _stopOnRollover:Boolean;
private var _allButtons:Boolean;
private var _blurScale:Number;
private var _hitW:Number;
private var _hitH:Number;
private var xml:XML;
private var Thumbs:Array;
private var refAngle:Number = 0;
private var angle:Number;
private var baseDepth:Number;
private var once:Boolean = false;
public function Carousel() {
Thumbs = new Array();
xml = new XML();
xml.ignoreWhite = true;
xml.onLoad = Delegate.create(this, dataLoaded);
xml.load("carousel.xml");
}
private function dataLoaded(s) {
if (!s) {
trace("Could not load xml ! Check xml (must be carousel.xml)");
return;
}
node = xml.firstChild;
_vertical = node.attributes.vertical == "yes";
_autoMove = node.attributes.autoMove == "yes";
_maxSpeed = _speed=Number(node.attributes.maxSpeed);
_radiusx = Number(node.attributes.radiusX);
_radiusy = Number(node.attributes.radiusY);
_blurScale = Number(node.attributes.blurScale);
_stopOnRollover = node.attributes.stopOnRollover == "yes";
_allButtons = node.attributes.allButtons == "yes";
_hitW = Number(node.attributes.hitAreaWidth)/2;
_hitH = Number(node.attributes.hitAreaHeight)/2;
_radiusx = Number(node.attributes.radiusX);
//
var p:XMLNode = node.firstChild;
var i:Number = 0;
baseDepth = this.getNextHighestDepth();
for (; p != null; p=p.nextSibling, i++) {
var tn:MovieClip = this.attachMovie("Thumbnail", "tn"+i, baseDepth+i);
tn.setData(p, node);
if (_stopOnRollover) {
tn.onMouseOver = Delegate.create(this, Pause);
tn.onMouseOut = Delegate.create(this, Resume);
}
Thumbs.push(tn);
//break;
}
angle = 360/Thumbs.length;
if (!_autoMove) {
spin();
this.onMouseMove = mouseMoveHandler;
} else {
Resume();
}
}
private function Pause() {
delete this.onEnterFrame;
}
private function Resume() {
this.onEnterFrame = spin;
}
private function spin() {
for (var i = 0; i<Thumbs.length; i++) {
var tn:MovieClip = Thumbs[i];
var crtAngle:Number = (refAngle+i*angle)%360;
if (crtAngle<0) {
crtAngle += 360;
}
if (_vertical) {
tn._x = Math.sin((crtAngle)/180*Math.PI)*_radiusy;
tn._y = Math.cos((crtAngle)/180*Math.PI)*_radiusx;
} else {
tn._y = Math.sin((crtAngle)/180*Math.PI)*_radiusy;
tn._x = Math.cos((crtAngle)/180*Math.PI)*_radiusx;
}
//
var tAngle:Number = (crtAngle+90)%360;
if (tAngle>180) {
tAngle = 360-tAngle;
}
var minScale:Number = 50;
var minAlpha:Number = 30;
tn._xscale = tn._yscale=minScale+(100-minScale)*tAngle/180;
var lim:Number = 90;
if (tAngle<=lim) {
tn.filters = blur(_blurScale-_blurScale*tAngle/lim);
tn._alpha = minAlpha+(100-minAlpha)*tAngle/lim;
} else {
tn.filters = blur[0];
tn._alpha = 100;
}
var crtDepth:Number = baseDepth+Math.floor(2*tAngle/angle);
if (tn.getDepth() != crtDepth) {
tn.swapDepths(crtDepth);
}
if (!_allButtons) {
tn.enabled = tAngle>=90;
}
}
refAngle += _speed;
}
private function blur(blur) {
blur = Math.round(blur);
if (blur<1) {
return [];
}
return [new BlurFilter(blur, blur, 2)];
}
private function mouseMoveHandler() {
if (_xmouse<-_hitW || _xmouse>_hitW || _ymouse<-_hitH || _ymouse>_hitH) {
return;
}
if (!once) {
once = true;
Resume();
}
if (!_vertical) {
_speed = _maxSpeed*_xmouse/_hitW;
} else {
_speed = _maxSpeed*_ymouse/_hitH;
}
}
} |
vielen dank schonmal!!!
|
|