我正在尝试根据mouseX位置水平滚动一系列缩略图。我可以让它滚动,但它非常不稳定,由于某种原因,它不会读取我的开始和结束数字,所以它将停止滚动。谁能指出我正确的方向?感谢。
var thumbBounds:Object = new Object();
thumbBounds = thumbContainer.getBounds(this);
thumbContainer.addEventListener(MouseEvent.MOUSE_OVER, setScrolling);
private function setScrolling(me:MouseEvent):void
{
thumbContainer.removeEventListener(MouseEvent.MOUSE_OVER, setScrolling);
stage.addEventListener(Event.ENTER_FRAME, scrollThumbs);
}
private function scrollThumbs(e:Event):void
{
if(mouseX <= thumbBounds.x || mouseX > thumbBounds.width ||
mouseX < thumbBounds.y || mouseX > thumbBounds.height)
{
thumbContainer.addEventListener(MouseEvent.MOUSE_OVER, setScrolling);
stage.removeEventListener(Event.ENTER_FRAME, scrollThumbs);
}
if(thumbContainer.x >= 0)
{
thumbContainer.x = 0;
}
if(thumbContainer.x <= -842)
{
thumbContainer.x = -842;
}
var xdist:Number = new Number();
xdist = mouseX - 382;
thumbContainer.x += Math.round(-xdist / 10);
}
答案 0 :(得分:0)
我立即看到的一个错误是:
if(mouseX <= thumbBounds.x || mouseX > thumbBounds.width ||
mouseX < thumbBounds.y || mouseX > thumbBounds.height)
你不应该再次检查mouseY
和thumbBounds.y
的{{1}}吗?
关于波动性,可能与电影的帧速率,图像的大小和数量有关。它还取决于thumbBounds.height
值的大小。我尝试使用插值(补间)一些方法。计算容器的最终目的地,并使用Tweener或TweenLite为其设置动画。
e.g。
xdist
这将导致TweenLite.to(thumbContainer.x, 0.5, { x: thumbContainer.x + Math.round(-xdist / 10) });
当前位置和新位置之间的移动将在半秒内(而不是立即)顺利进行。