Форум 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)
-   -   Из Flash 6 вo Flash 7 (http://www.flasher.ru/forum/showthread.php?t=73643)

zazaaz 28.12.2005 07:20

Из Flash 6 вo Flash 7
 
Есть такая проблема: движок скроллера (взятый и чуть доработаный мной из уроков на flashkit) отказывается работать под 7кой...

Насколько я понял, в нем из старого- updateAfterEvent(); Для того, чтобы он (аптдэйт) работал под 7 плеером, им надо как-то по другому пользоваться. Не подскажите, как, именно в этой ситуации?

Похоже что нужно заменить что-то еще, о чем я не догадываюсь... Будте добры, ткните пальцем.



Код:

onClipEvent (load) {
        scrolling = 0;
        frameCounter = 1;
        speedFactor = 3;
        numLines = 32;
        origHeight = scrollbar._height;
        origX = scrollbar._x;
        needInit = true;
        function initScrollbar() {
                var totalLines = numLines+_root.pole.maxscroll-1;
                scrollbar._yscale = 100*(numLines)/totalLines;
                deltaHeight = origHeight-scrollbar._height;
                lineHeight = deltaHeight/(_root.pole.maxScroll-1);
                scrollbar._y = 0;
        }
        function updateScrollBarPos() {
                scrollbar._y = lineHeight*(_root.pole.scroll-1);
        }
}
onClipEvent (enterFrame) {
        if (needInit) {
                if (_root.pole.maxscroll>1) {
                        initScrollbar();
                        needInit = false;
                }
        }
        if (frameCounter%speedFactor == 0) {
                if (scrolling == "up" && _root.pole.scroll>1) {
                        _root.pole.scroll -= 1;
                        updateScrollBarPos();
                } else if (scrolling == "down" && _root.pole.scroll<_root.pole.maxscroll) {
                        _root.pole.scroll += 1;
                        updateScrollBarPos();
                }
                frameCounter = 0;
        }
        frameCounter++;
}
onClipEvent (mouseDown) {
        if (up.hitTest(_root._xmouse, _root._ymouse)) {
                scrolling = "up";
                frameCounter = speedFactor;
                up.gotoAndStop(2);
        }
        if (down.hitTest(_root._xmouse, _root._ymouse)) {
                scrolling = "down";
                frameCounter = speedFactor;
                down.gotoAndStop(2);
        }
        if (scrollbar.hitTest(_root._xmouse, _root._ymouse)) {
                scrollbar.startDrag(0, origX, deltaHeight, origX);
                scrolling = "scrollbar";
        }
        updateAfterEvent();
}
onClipEvent (mouseUp) {
        scrolling = 0;
        up.gotoAndStop(1);
        down.gotoAndStop(1);
        stopDrag();
        updateAfterEvent();
}
onClipEvent (mouseMove) {
        if (scrolling == "scrollbar") {
                _root.pole.scroll = Math.round((scrollbar._y)/lineHeight+1);
        }
        updateAfterEvent();
}


KUZEN 28.12.2005 15:23

updateAfterEvent(); тут не причём ... а код выдаёт ошибки ?!

zazaaz 28.12.2005 17:52

Нет, никаких ошибок. Просто если компилировать ролик под Flash 6\AS.2 - все работает без проблем, если под Flash 7 - все, что относится к движку "бегунка" перестает работать:

Если смотреть по коду, то не работают конкретно вот эти части (т.е. визуально, того, что они должны делать, не происходит):

Код:

onClipEvent (mouseMove) {
        if (scrolling == "scrollbar") {
                _root.pole.scroll = Math.round((scrollbar._y)/lineHeight+1);
        }
        updateAfterEvent();


/* если вы начали перетаскивать бегунок, то
scrolling == "scrollbar" и scroll текстового поля стал = округлен.
отношению _y самого бегунка к ширене одной строки в тексте + 1*/


        function updateScrollBarPos() {
                scrollbar._y = lineHeight*(_root.pole.scroll-1);
        }

/* функция, которая при осуществлении скроллинга
кнопками, заставляет реагировать на него бегунок и менять свое
положение...*/

Может быть я еще что-то упустил, хотя, похоже что нет...

А на счет updateAfterEvent(); читаю у Гурского:

" Функция updateAfterEvent() может быть применена в обработчиках событий в стиле Flash MX, бработчиках onClipEvent Flash 5, а также в функциях, вызываемых цикличеси при помощи setInterval(). Во всех остальных позициях updateAfterEvent() игнорируется "


Т.е. похоже, что мне нужно как-то встроить ко мне в скроллер setInterval, но как? и вообще, каким образом это будет работать... -))

s_u_m_p 28.12.2005 17:57

lineHeight = deltaHeight/(_root.pole.maxScroll-1); <<-- вот в этой строчке ошибка
Где смотри по хелпу :)

zazaaz 28.12.2005 19:11

ого! заработало :D :D :D

иш ты... регистрозависимый он....

спасибо s_u_m_p )))


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

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