0
我使用以下代碼作爲一組可滾動條的一部分,以便在拖動時相對於另一個條來更改每個條。它的工作原理,直到用戶儘可能快地滑動欄,然後數字出錯...我敢肯定,這是功能無法像鼠標一樣快速處理,但任何人都知道解決方法?AS2:鼠標移動得太快會弄亂函數
onClipEvent (load) {
Symptoms_sliders = new Array(this._parent.slider1.slider, this._parent.slider2.slider, this._parent.slider3.slider, this._parent.slider4.slider, this._parent.slider5.slider);
Food_sliders = new Array(this._parent.slider6.slider, this._parent.slider7.slider, this._parent.slider8.slider, this._parent.slider9.slider);
for (i=0; i<Food_sliders.length; i++) {
Food_sliders[i]._y = 75;
}
is_scrolling = 0;
function Food_scroll_ratio() {
init_scroll_diff = init_scroll_num-init_scroll._y;
Slider_ratio = new Array();
totalLeft = init_scroll_num;
while (_global.init_moved != init_scroll._y) {
for (i=0; i<Food_sliders.length; i++) {
if (Food_sliders[i] != init_scroll) {
slider_pos = Food_sliders[i]._y;
percentageOf = ((100-init_slider_pos[i])/totalLeft)*100;
percentageMultiplier = 100/percentageOf;
trace(percentageMultiplier);
if (init_scroll_num == 0) {
scroll_change = Math.round(Math.abs(init_scroll_diff/3));
} else {
scroll_change = Math.round(Math.abs(init_scroll_diff)/percentageMultiplier);
}
if (percentageOf == Infinity) {
Food_sliders[i]._y = 100;
} else if (init_scroll_diff>0) {
Food_sliders[i]._y = init_slider_pos[i]+scroll_change;
} else if (init_scroll_diff<0) {
Food_sliders[i]._y = init_slider_pos[i]-scroll_change;
}
}
}
_global.init_moved = init_scroll._y;
}
}
}
onClipEvent (mouseMove) {
for (i=0; i<Food_sliders.length; i++) {
Food_sliders[i].onPress = function() {
startDrag(this, false, 0, 100, 0, 0);
init_scroll_num = this._y;
init_scroll = this;
is_scrolling = 1;
init_slider_pos = new Array();
init_slider_pos.push(Food_sliders[0]._y);
init_slider_pos.push(Food_sliders[1]._y);
init_slider_pos.push(Food_sliders[2]._y);
init_slider_pos.push(Food_sliders[3]._y);
};
Food_sliders[i].onRelease = Food_sliders[i].onReleaseOutside=function() {
stopDrag();
is_scrolling = 0;
};
}
if (is_scrolling == 1) {
Food_scroll_ratio();
}
}
的mouseMove被分派比enterFrame事件多了不少,所以嘗試。此外,您不需要每次鼠標移動時初始化數組並分配偵聽器,您只需設置一次,然後更新mouseMove/enterFrame – 2011-05-31 14:46:09
它位於mouseMove = /上,我需要設置這些數組,因爲它們必須清晰下一次它被點擊/移動,因爲它們必須每次更新。 – 2011-05-31 14:49:58
我建議你應該嘗試onClipEvent(enterFrame)而不是onClipEvent(mouseMove),看看是否稍微好一點。所有this._parent.slider6.slider和類似的引用看起來都像重複代碼。這可以用更清晰/更清晰的方式書寫。儘量保持它[幹](http://en.wikipedia.org/wiki/Don%27t_repeat_yourself)。你能簡單地描述你想要達到的目標嗎?我不明白你的滑塊應該如何工作。 – 2011-05-31 15:02:55