Форум 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)
-   -   прокрутка клипов функцией onMouseWheel (http://www.flasher.ru/forum/showthread.php?t=117655)

DrugON 01.11.2008 18:55

прокрутка клипов функцией onMouseWheel
 
не могу понять что не так делаю в onMouseWheel ? вниз кручу нормально, а вверх нет.
пробовал уже по разному... ошибка рядом, а где не вижу...
Код:

var grund:MovieClip = this.createEmptyMovieClip("grund", 1);
var zone:MovieClip = box(grund, 660, 490, Math.random()*0xFFFFFF, 0);
grund._x = Stage.width/2-grund._width/2;
var items:Array = new Array();

for (var i:Number = 0; i<10; i++) {
        var boxi:MovieClip = box(zone, 660, Stage.height/3, Math.random()*0x0000CC, 100);
        boxi._y = boxi._height*i;
        var pic:MovieClip = box(boxi, 180, 120, Math.random()*0xF5F5F5, 100);
        pic._x = pic._y=20;
        items.push(boxi);
}

var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(wheel) {
        for (var i:Number = 0; i<items.length; i++) {
                items[i]._y += int(boxi._height);
        }
        var per:MovieClip = items[0];
        var posl:MovieClip = items[items.length-1];
        trace(per);
        if (wheel>0) {
                per._y = -posl._y+posl._height;
                var boxi:Object = items.shift();
                items.push(boxi);

                trace("Крутим колесо вверх");
        } else {
                posl._y = per._x-posl._height;
                var boxi:Object = items.pop();
                items.unshift(boxi);

                trace("Крутим колесо вниз");
        }
};
Mouse.addListener(mouseListener);


function box(_tar:MovieClip, width:Number, height:Number, fon:Number, alf:Number):MovieClip {
        var depth:Number = _tar.getNextHighestDepth();
        var mc:MovieClip = _tar.createEmptyMovieClip("mc_"+depth, depth);
        mc.beginFill(fon,alf);
        mc.moveTo(0,0);
        mc.lineTo(width,0);
        mc.lineTo(width,height);
        mc.lineTo(0,height);
        mc.lineTo(0,0);
        mc.endFill();
        return mc;
}


etc 01.11.2008 19:13

Неудивительно, ведь у всех items «_y» только прибавляется.

iNils 01.11.2008 19:13

Для начала надо сделать просто вверх вниз, а потом уже циклить.

И не понимаю, как координата x может влиять на y?
Код:

posl._y = per._x-posl._height;

DrugON 01.11.2008 19:27

а можно еще как то помочь?
в первом условии сделал if (wheel< -per) {...}
а у меня один клип куда то девается при прокрутки сначала.

Добавлено через 2 минуты
iNils спасибо поправил на «_y», перестал пропадать клип.
__etc кажется я поторопился... теперь у меня все клипы двигаются вниз... попробую совет iNils
если есть еще советы я выслушаю, потому что я еще не до конца понял

DrugON 07.11.2008 18:27

У меня вот такой ужас('море' циклов) получился... причем вроде даже работает :wacko:
как правильно сделать? нужен совет и какой-нибудь пример. Спасибки!
Код:

var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(wheel) {
        var per:MovieClip = items[0];
        var posl:MovieClip = items[items.length-1];
        var ss = posl._y+posl._height;
        if (wheel<0) {
                for (var i:Number = 0; i<items.length; i++) {
                        items[i]._y -= 20;
                }
        } else {
                for (var i:Number = 0; i<items.length; i++) {
                        items[i]._y += 20;
                }
        }
        if (per._y == 20) {
                for (var i:Number = 0; i<items.length; i++) {
                        items[i]._y -= 20;
                }
        } else if (Stage.height>=ss) {
                for (var i:Number = 0; i<items.length; i++) {
                        items[i]._y += 20;
                }
        }
        //updateAfterEvent(); 
};
Mouse.addListener(mouseListener);


Wolsh 07.11.2008 18:57

А держать все клипы в одном большом и его туды-сюды не пробовали? ))))

DrugON 07.11.2008 20:35

Цитата:

Сообщение от Wolsh (Сообщение 775359)
А держать все клипы в одном большом и его туды-сюды не пробовали? ))))

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


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

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