我制作了一个滑块来搜索我的动作脚本视频。如果你能看到我在做什么,也许你会更好地理解:http: //www.stevevo.sin.khk.be/Website%202SDesign/ -> 这是我所在网站的测试服务器的链接建筑正在运行。您会在中心看到巨大的横幅,将其翻转,您会看到一个滑块和一个暂停/开始按钮。滑块非常适合 1 件小事。当您将滑块拖动到最左边时,actionScript 3.0 将再次开始播放电影(我假设),现在向右拖动而不中断,滑块不会像他应该的那样向右移动(一次拖动)。
为什么不能先滑到开头再继续滑?
我的代码:
非常简单。你开始拖动,矩形就是dragRestriction。电影停止。isDragging = 真。
SearchBarSlider.addEventListener(MouseEvent.MOUSE_DOWN, fl_ClickToDrag);
function fl_ClickToDrag(event:MouseEvent):void
{
var rect:Rectangle = new Rectangle(SearchBar.x + 3,
SearchBar.y,
SearchBar.width - 10,
0);
SearchBarSlider.startDrag(false, rect);
stop();
isDraging = true;
}
再次简单。拖动停止。电影再次开始播放。isdragging = 假;
stage.addEventListener(MouseEvent.MOUSE_UP, fl_ReleaseToDrop);
function fl_ReleaseToDrop(event:MouseEvent):void
{
SearchBarSlider.stopDrag();
play();
isDraging = false;
}
当鼠标移动时拖动滑块的 x 位置会转换为适当的帧数。在这 3 个部分之间适用其他长度。
stage.addEventListener(MouseEvent.MOUSE_MOVE, fl_Drag);
function fl_Drag(event:MouseEvent):void
{
if(isDraging == true) {
if(SearchBarSlider.x - (SearchBar.x + 3) < 20){
gotoAndStop(Math.round(((SearchBarSlider.x - (SearchBar.x + 3)) / 20) * 320));
} else if(SearchBarSlider.x - SearchBar.x + 3 >= 20 && SearchBarSlider.x - SearchBar.x + 3 < 40){
gotoAndStop(Math.round(((SearchBarSlider.x - (SearchBar.x + 3) - 20) / 20) * 365) + 365);
} else {
gotoAndStop(Math.round(((SearchBarSlider.x - (SearchBar.x + 3) - 40) / 20) * 465) + 685);
}
}
}
此事件在不拖动时在每一帧发生。但不是将滑块的 x 位置转换为帧,而是将帧转换为滑块的 x 位置。
stage.addEventListener(Event.ENTER_FRAME, fl_frameEvent);
function fl_frameEvent(e:Event):void
{
if(isDraging == false) {
if(currentFrame < 365){
SearchBarSlider.x = SearchBar.x + 3 + Math.round((currentFrame / 365) * 20);
} else if(currentFrame >= 365 && currentFrame < 685){
SearchBarSlider.x = SearchBar.x + 23 + Math.round(((currentFrame - 365) / 320) * 20);
} else {
SearchBarSlider.x = SearchBar.x + 43 + Math.round(((currentFrame - 685) / 465) * 20);
}
}
}