Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Граница скролла (http://www.flasher.ru/forum/showthread.php?t=139297)

LonelyGhost 27.04.2010 18:22

Граница скролла
 
Использую след. код, для прокрутки клипа:

Код AS1/AS2:

b_up.onPress = function()
{
        scroll("up",true);
};
 
b_up.onRelease = b_up.onReleaseOutside = function ()
{
        scroll("up",false);
};
 
b_down.onPress = function()
{
        scroll("down",true);
};
 
b_down.onRelease = b_down.onReleaseOutside = function ()
{
        scroll("down",false);
};
 
function scroll(course, mov)
{
        if (mov)
        {
                this.onEnterFrame = function()
                {
                        if (course == "up")
                        {
                                mc._y--;
                        }
                        if (course == "down")
                        {
                                mc._y++;
                        }
                };
        }
        else
        {
                this.onEnterFrame = null;
        }
}

Как установить границы, чтобы клип не заползал высше установленых норм?

udaaff 27.04.2010 19:01

Код AS1/AS2:

var l:Number;
 
var minY:Number = 20;
var maxY:Number = 200;
 
b_up.onPress = b_up_onPressHandler;
b_up.onMouseUp = onMouseUpHandler;
b_down.onPress = b_down_onPressHandler;
b_down.onMouseUp = onMouseUpHandler;
 
function b_up_onPressHandler()
{
        l = -5;
        onEnterFrame = onEnterFrameHandler;
}
 
function b_down_onPressHandler()
{
        l = 5;
        onEnterFrame = onEnterFrameHandler;
}
 
function onEnterFrameHandler()
{
        mc._y = Math.max(minY, Math.min(maxY, mc._y + l))
}
 
function onMouseUpHandler()
{
        delete onEnterFrame;
}


LonelyGhost 27.04.2010 19:27

Спасибо! Но проблема не исчезла, вот пример приложения:
[IMG]http://s60.***********/i170/1004/01/e95e60bda4fc.jpg[/IMG]

Описание:
1,2,3 - верхние кнопки;
4 - клип (который передвигаем);
5,6 - кнопки для скроллинга;

Когда прокрутить клип вниз, он залезает на верхние кнопки.
Старался сделать через маску, не получилось.

udaaff 27.04.2010 21:10

Непонятно.

LonelyGhost 27.04.2010 22:19

2udaaff, при прокрутке клипа, он залезает поверх кнопок. А должен изчезать под ними.

in4core 27.04.2010 23:41

Код AS1/AS2:

class com.AlexNavigation.scrollbarDEFENDER {
        var _S:MovieClip;//scroller
        var _M:MovieClip;//mask
        var _C:MovieClip;//content
        var _d;// down button
        var _u; // up button
        var top;
        var bottom;
        var left;
        var right;
        var _int;
        var _int2;
        public function scrollbarDEFENDER() {
        }
        private function scrollIt(_s, _m, _c, useButtons, btDown, btUp) {
                if (useButtons == undefined) {
                        useButtons = false;
                }
                _S = _s;
                _M = _m;
                _C = _c;
                _d = btDown;
                _u = btUp;
                top = _M._y;
                bottom = _M._y+_M._height-_S._height;
                left = _M._x;
                right = _M._x+_M._width;
                _C._y = top;
                _C._x = left;
                _S._y = top;
                _S._x = right;
 
                _S.onPress = mx.utils.Delegate.create(this, PRESS);
                _S.onMouseMove = mx.utils.Delegate.create(this, Update);
                _S.onRelease = _S.onReleaseOutside=btDown.onRelease=btUp.onRelease=btDown.onReleaseOutside=btUp.onReleaseOutside=mx.utils.Delegate.create(this, RELEASE);
                _M.onMouseMove = mx.utils.Delegate.create(this, check);
                if (useButtons) {
                        _S._visible = false;
                        btDown.onPress = mx.utils.Delegate.create(this, dREL);
                        btUp.onPress = mx.utils.Delegate.create(this, upREL);
                }
        }
        function RELEASE() {
                clearInterval(_int);
                _S.stopDrag();
        }
        function Update() {
                var ratio = (_C._height-_M._height)/(_M._height-_S._height);
                _C._y = ((_M._y-_S._y)*ratio)+_M._y;
        }
        function PRESS() {
                if (_M._height<_C._height) {
                        _S.startDrag(false,right,top,right,bottom);
                }
        }
        function check() {
                if (_M._height<_C._height) {
                        _S.enabled = true;
                        _d._visible = true;
                        _u._visible = true;
                } else {
                        _S.enabled = false;
                        _d._visible = false;
                        _u._visible = false;
                }
        }
        function dREL() {
                clearInterval(_int);
                _int = setInterval(this, "D", 40);
        }
        function upREL() {
                clearInterval(_int);
                _int = setInterval(this, "O", 40);
        }
        function O() {
                if (_S._y<_M._y+_M._height-_S._height && _C._height>_M._height) {
                        _S._y = _S._y+5;
                }
                Update();
        }
        function D() {
                if (_S._y != _M._y && _C._height>_M._height) {
                        _S._y = _S._y-5;
                }
                Update();
        }
}


udaaff 27.04.2010 23:48

И обфускатор не нужен :)

in4core 28.04.2010 00:40

Это че такое?_)))

udaaff 28.04.2010 00:55

http://ru.wikipedia.org/wiki/Обфускация


Часовой пояс GMT +4, время: 23:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.