2011-11-01 127 views
0

我发现了一个在AS2中制作滑块的脚本。问题在于脚本经常检查我看到的是什么框架,我需要它不这样做。我想我需要的是一种方法来检查一次并设置帧编号,然后如果我滑动滑块以在该时间内开始检查并且完成滑动滑块以停止再次检查。此滑块将用于通过Pointroll投放的横幅广告。Flash ActionScript 2 Slider问题

问题在于,经常检查它是否会干扰pointroll中的跟踪。任何人有任何想法?


我的动作:

knob._x = track._x + track._width/3.75; 
knob._y = track._y; 
totalFrame = 79; 

//var ratio:Number = track._width/50; 

knob.onPress = function():Void { 
//var vertical:Number = track._y + (track._height/2); 
startDrag(knob,0,track._x,track._y,track._width+track._x-this._width,track._y); 
this.onEnterFrame=function(){ 
    fNum=Math.ceil((this._x-track._x)/(track._width-this._width)* (this._totalframes)); 
    if(fNum <= 2) fNum = 3; 
    this.gotoAndStop(fNum); 
} 
} 
knob.onRelease = function():Void { 
this.stopDrag(); 
delete this.onMouseMove; 
} 
//knob.onReleaseOutside = knob.onRelease; 


onEnterFrame=function(){ 
fNum=int((knob._x-track._x)/(track._width-knob._width)*(totalFrame))+2; 
trace(fNum); 
this.gotoAndStop(fNum); 
} 

/* function updateKnobOutput():Void { 
    trace((knob._x - track._x)/ratio); 
}*/ 

stop(); 

回答

0

onEnterFrame功能会解雇每次帧被播放头经过的时间。如果帧速率为30fps,并且播放头在此帧上停止,则表示onEnterFrame中的代码每秒执行30次。

如果您不需要/希望代码执行那么多,请将其从onEnterFrame中取出。

没有更多的上下文,很难给你任何更具体的建议。

+0

所以我应该删除onEnterFrame并给该函数一个名字呢?我会试试看。 – Robbiegod

+0

嗯,删除onEnterFrame打破了滑块....意思是如果我删除onEnterFrame,发布我的SWF,脚本不再知道中间框架在哪里,滑动滑块不会做任何事情。我试图完成的是一个滑块,从frame1移动到80或某些范围的帧。我将动画片段“轨道”绑定到剪辑中的全部帧数。我还将动画片段“旋钮”绑定到“轨道”,这样左右滑动可以在时间轴上上下滑动。 – Robbiegod

0

嗯,我看到的第一个问题是,你在'onPress'上设置'onEnterFrame',但是当用户释放按钮时不要删除'onEnterFrame'。

我认为最好的办法将被设置鼠标移动处理器时,用户移动(拖)旋钮,并经过用户释放按钮,执行“的OnMouseMove”处理程序中需要采取行动,并删除(禁用)“的OnMouseMove”处理程序。