AS2:拖动时的Flash运行功能

时间:2011-05-31 10:35:53

标签: function actionscript actionscript-2

我正在使用以下代码...我想仅在移动可拖动的动画片段时运行函数Food_scroll_ratio(),而不是在刚刚按下它时但是无法知道如何操作。< / p>

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 = 100-(100-init_scroll._y);
        for (i=0; i<Food_sliders.length; i++) {
            if (Food_sliders[i] != init_scroll) {
                slider_pos = Food_sliders[i]._y;
                percentageOf = (init_slider_pos[i]/totalLeft)*100;
                percentageMultiplier = 100/percentageOf;
                scroll_change = Math.abs(init_scroll_diff)/percentageMultiplier;
                trace(scroll_change);
                if (init_scroll_diff>0) {
                    Food_sliders[i]._y = slider_pos+scroll_change;
                }
                if (init_scroll_diff<0) {
                    Food_sliders[i]._y = slider_pos-scroll_change;
                }

            }
        }
    }
}
onClipEvent (enterFrame) {
    for (i=0; i<Food_sliders.length; i++) {
        Food_sliders[i].onMouseDown = function() {


        };
        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(100-Food_sliders[0]._y);
            init_slider_pos.push(100-Food_sliders[1]._y);
            init_slider_pos.push(100-Food_sliders[2]._y);
            init_slider_pos.push(100-Food_sliders[3]._y);
        };
        Food_sliders[i].onRelease = Food_sliders[i].onReleaseOutside=function () {
            stopDrag();
            is_scrolling = 0;
        };

    }
    if (is_scrolling == 1) {
        Food_scroll_ratio();
    }
}

帮助赞赏欢呼

解决

谢谢我在剪辑事件和while循环中使用了onMouseMove的组合,如下所示:

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;

        }

1 个答案:

答案 0 :(得分:0)

您应该使用onMouseMove而不是onEnterFrame进行拖动,否则会变得不稳定!如果你检查onMouseMove + onMouseDown,这也将解决你的问题。或者,您也可以使用内置的onDrag。