AS3: при прокрутке альфа-анимации до последних дочерних элементов внутри области прокрутки с динамическим содержимым

#actionscript-3 #math #components

#actionscript-3 #математика #Компоненты

Вопрос:

Я пытаюсь изменить альфа-значение последних дочерних элементов внутри компонента ScrollPane, чтобы переполненные объекты исчезали вместо того, чтобы обрезаться областью прокрутки. Я имею в виду, что чем ближе дочерний элемент находится к вершине или к низу, тем его альфа будет ближе к нулю. Если между полями альфа равна 1;

Я поместил «верхний колонтитул» и «нижний колонтитул» с прозрачными спрайтами в область прокрутки, чтобы иметь пробел для альфа-эффекта, и у меня не было проблем с тем, чтобы сделать это для верхних элементов, вот код:

 function scrollListener(event:ScrollEvent):void {
    var base = 120;//margins height
    var targ = event.currentTarget.getChildAt(3).getChildAt(0);//get container
    var scrollY = event.currentTarget.verticalScrollPosition;//get scroll position
    for (var n1 = 0; n1 < 10; n1  ) {// loop for the children
        var curr = targ.getChildByName("boton" n1);// current children name var
        var curr_disp = curr.y-scrollY;
        curr.alpha = 1;//default alpha
        if(curr_disp < base){//if Y is inferior to margin (var base)
            var alfa = ((curr_disp)/base)/2;
            curr.alpha = alfa;
        }
    }
};

sp.addEventListener(ScrollEvent.SCROLL, scrollListener);
 

Мне нужно сделать то же самое внизу, где, если дочерний элемент находится на нижней границе области прокрутки, его альфа становится равной 0, а если дочерний элемент находится внизу минус 120 (переменная ‘base’), альфа будет равна 1. Я действительно потерян, и мой крайний срок истек. Надеюсь, кто-нибудь может дать мне несколько советов.

Извините за мой плохой английский. Заранее благодарю.

Комментарии:

1. Вероятно, было бы намного проще (и лучше выглядеть) просто использовать маску на панели прокрутки, используя АЛЬФА-режим смешивания

2. Привет. На самом деле это мое временное решение, но я хочу, чтобы дочерний элемент исчезал с простой альфой на основе положения вместо градиента 🙂 Спасибо!

Ответ №1:

Вы можете использовать ту же технику, изменив альфа-символ для нижней части

Вы можете использовать переменные и рассчитать, на сколько альфа должна быть изменена, например, с 1-10, 10 альфа должна быть уменьшена или увеличена таким же образом.