![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
11/04/2010, 07:20
|
| | Fecha de Ingreso: marzo-2010 Ubicación: Córdoba, Argentina
Mensajes: 21
Antigüedad: 14 años, 10 meses Puntos: 0 | |
Respuesta: Necesito ayuda de un experto en ActionScript Archivo Carrousel.as
Código:
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;
}
}
}
|