halöle,
habe probleme bei der dynamik eines scrollers....
das problem ist folgendes...
bei onrelease des scrollbalken fährt das zu slidende mc nicht in seine position, so wie es bereits durch die beiden anderern buttons realisiert wurde.
ausserdem brauche ich einen denkansatz dafür,dass der scrollbar bei up/down auch zur gewünschten realtiven position fährt.
die einzelnen positionen habe ich mit dem differenzwert var diz
schon ausgerechnet.
die tweening classe in der anlage ist wichtig.
jemand gab mir bereits den tip
###
.... um die zeit kümmern musst. im moment ist 1
sekunde als dauer für das sliden zur neuen y position angegeben. du
müsstest aber eigentlich eine geschwindigkeit festlegen und anhand der
aktuellen y position in bezug zur neuen y position festlegen, wie lange
der container benötigt um dorthin zu sliden.
####
kann aber irgendwie mit meinen as kenntnissen damit nichts anfangen.
hier der code um den es sich dreht:
ActionScript:
#include "lmc_tween_as1.as"
var scRand = 2.9;
attachMovie("btnUp", "btnUp", 2, {_x:scRand,_y:scRand,_alpha:0,enabled:0} );
attachMovie("btnDown", "btnDown", 3, {_x:scRand,_y:(scHoehe-scRand-btnUp._height),_alpha:0,enabled:0} );
attachMovie("scrollbar", "scrollbar", 4, {_x:scRand+1,_y:btnUp._height+2*scRand,_alpha:0,enabled:0} );
scrollbar.minY = btnUp._height+2*scRand;
scrollbar.maxY = scHoehe-btnUp._height-2*scRand;
var diz = (scHoehe-2*btnDown._height-4*scRand - scrollbar._height)/(bilderArray[0].length-1);
var numBoxes = bilderArray[0].length-1;
var boxHeight = 530;
var boxSpacing = 0;
var scrollStep = 0;
var boxHolder = _parent[scMc];
var speed = .002; // 0.5 sek / 100 px
var scMc_Hoehe = ((bilderArray[0].length-1) * 500)+((bilderArray[0].length-1)*30) ;
setButtonActions();
initScrollbar();
function scrollUp()
{
if ( scrollStep <= 0 )
return;
scrollStep--;
doScroll();
}
function scrollDown()
{
if ( scrollStep >= numBoxes )
return;
scrollStep++;
doScroll();
}
function doScroll( y )
{
$tweenManager.removeTween();
if ( y == undefined ){
y = getYForStep( scrollStep );
}
var sp = calcSpeed( y );
boxHolder.slideTo( boxHolder._x, y, sp );
}
function onScroll( percent )
{
var newY = -Math.round( scMc_Hoehe / 100 * percent );
doScroll( newY );
}
function calcSpeed( newY )
{
var sp = Math.abs( newY - boxHolder._y ) * speed;
return sp;
}
function getYForStep( s )
{
return -( s * boxHeight + ( s - 1 ) * boxSpacing );
}
function setButtonActions()
{
btnUp.onRelease = function() { this._parent.scrollUp(); }
btnDown.onRelease = function() { this._parent.scrollDown(); }
}
function initScrollbar()
{
scrollbar.onRelease = scrollbar.onReleaseOutside = function() { delete this.onEnterFrame; }
scrollbar.onPress = function() { this.oldY = this._y; this.startY = _root._ymouse; this.onEnterFrame = this.checkMovement; }
scrollbar.checkMovement = function()
{
var yDif = _root._ymouse - this.startY;
var newY = this.oldY + yDif;
if ( newY < this.minY ) newY = this.minY;
else if ( newY > this.maxY - this._height ) newY = this.maxY - this._height;
this._y = newY;
this.calcPercent();
this._parent.onScroll( this.percent );
}
scrollbar.calcPercent = function()
{
this.percent = ( this._y - this.minY ) / ( ( this.maxY - this._height - this.minY ) / 100 );
}
}