AS2: функция запуска вспышки при перетаскивании - PullRequest
0 голосов
/ 31 мая 2011

Я использую следующий код ... Я хочу запускать функцию Food_scroll_ratio() только при перемещении перетаскиваемого фрагмента ролика, а не при его нажатии, но не могу понять, как это сделать.

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();
    }
}

Помогите оценили ура

решаемые

Спасибо, я использовал комбинацию onMouseMove для события clip и цикла while, как показано ниже:

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 голосов
/ 31 мая 2011

Вы должны использовать onMouseMove вместо onEnterFrame для перетаскивания, иначе оно станет прерывистым!Это также решит вашу проблему, если вы проверите onMouseMove + onMouseDown.Или же вы можете использовать встроенный onDrag.

...