SWiSH Forum
Forum użytkowników programów SWiSH

SWiSH Max - Przepiękny EFEKT PRZEWIJANIA STRONY

Metatron - Czw 14 Kwi, 2005 01:01
Temat postu: Przepiękny EFEKT PRZEWIJANIA STRONY
Ostatnio trafiłem na bardzo ładną stronkę.. I od tego czasu zachodzę w głowę jak zrobiono na niej tak genialnie efekt przewijania strony ?? ?
Spójrzcie sami....
http://marlena.org.pl/

Czy coś takiego można zrobić w programie swishmax ??
Może kogoś oświeci i mi podpowie jak oni to wyczarowali ?

tofik - Czw 14 Kwi, 2005 16:55

:) Grubsza fera stary ....
tu masz skryp do tego efektu , ale nie wiem czy da sie to zrobić w swishu ...
pewnie tak jak by dobrze pogłówkować...

Kod:
// Action script...

// [Action in Frame 1]

// [Action in Frame 2]
function reset()
{
    for (i = 0; i < 4; i++)
    {
        setPage(i, pw, ph);
    } // end of for
    pages.flip._visible = false;
    pages.mask._visible = false;
    pages.pgrad._visible = false;
    pages.pgmask._width = pw * 2;
    pages.flip.p3mask._width = pw * 2;
    pages.pgmask._height = ph;
    pages.flip.p3mask._height = ph;
    pages.flip.fmask.page.pf._width = pw;
    pages.flip.fmask.page.pf._height = ph;
} // End of the function
function setPage(i, w, h)
{
    var item = eval("pages.p" + (i + 1));
    if (i == 1 || i == 2)
    {
        item = eval("pages.flip.p" + (i + 1));
    } // end if
    item.page._x = -w;
    item._x = i % 2 == 0 ? (0) : (w);
} // End of the function
function hittest()
{
    var x = pages._xmouse;
    var y = pages._ymouse;
    var pmh = ph / 2;
    if (y <= pmh && y >= -pmh && x <= pw && x >= -pw)
    {
        var r = Math.sqrt(x * x + y * y);
        var a = Math.asin(y / r);
        var y = Math.tan(a) * pw;
        if (y > 0 && y > ph / 2)
        {
            y = ph / 2;
        } // end if
        if (y < 0 && y < -ph / 2)
        {
            y = -ph / 2;
        } // end if
        oy = sy = y;
        r0 = Math.sqrt((sy + ph / 2) * (sy + ph / 2) + pw * pw);
        r1 = Math.sqrt((ph / 2 - sy) * (ph / 2 - sy) + pw * pw);
        pageN = pages.flip.p2.page;
        pageO = pages.flip.p3;
        offs = -pw;
        pages.flip.fmask._x = pw;
        if (x < 0 && page > 1)
        {
            pages.flip.p3._x = 0;
            setPages(page - 2, page - 1, page, page + 1);
            return(-1);
        } // end if
        if (x > 0 && page < maxpage)
        {
            pages.flip.p3._x = pw;
            setPages(page, page + 2, page + 1, page + 3);
            return(1);
        } // end if
    }
    else
    {
        return(0);
    } // end if
} // End of the function
function calc(x, y)
{
    var _l1 = x;
    var _l2 = y;
    var rr0 = Math.sqrt((_l2 + ph / 2) * (_l2 + ph / 2) + _l1 * _l1);
    var rr1 = Math.sqrt((ph / 2 - _l2) * (ph / 2 - _l2) + _l1 * _l1);
    if (rr0 > r0 || rr1 > r1)
    {
        if (_l2 < sy)
        {
            var a = Math.asin((ph / 2 - _l2) / rr1);
            _l2 = ph / 2 - Math.sin(a) * r1;
            _l1 = _l1 < 0 ? (-Math.cos(a) * r1) : (Math.cos(a) * r1);
            if (_l2 > sy)
            {
                if (sx * _l1 > 0)
                {
                    _l2 = sy;
                    _l1 = sx;
                }
                else
                {
                    _l2 = sy;
                    _l1 = -sx;
                } // end if
            } // end if
        }
        else
        {
            var a = Math.asin((_l2 + ph / 2) / rr0);
            _l2 = Math.sin(a) * r0 - ph / 2;
            _l1 = _l1 < 0 ? (-Math.cos(a) * r0) : (Math.cos(a) * r0);
            if (_l2 < sy)
            {
                if (sx * _l1 > 0)
                {
                    _l2 = sy;
                    _l1 = sx;
                }
                else
                {
                    _l2 = sy;
                    _l1 = -sx;
                } // end if
            } // end if
        } // end if
    } // end if
    if (sx < 0 && _l1 - sx < 10 || sx > 0 && sx - _l1 < 10)
    {
        if (sx < 0)
        {
            _l1 = -pw + 10;
        } // end if
        if (sx > 0)
        {
            _l1 = pw - 10;
        } // end if
    } // end if
    pages.flip._visible = true;
    pages.pgrad._visible = true;
    var vx = _l1 - sx;
    var vy = _l2 - sy;
    var a1 = vy / vx;
    var a2 = -vy / vx;
    cx = sx + vx / 2;
    cy = sy + vy / 2;
    var _l3 = Math.sqrt((sx - _l1) * (sx - _l1) + (sy - _l2) * (sy - _l2));
    var a = Math.asin((sy - _l2) / _l3);
    if (sx < 0)
    {
        a = -a;
    } // end if
    ad = a * 57.295780;
    pageN._rotation = ad * 2;
    _l3 = Math.sqrt((sx - _l1) * (sx - _l1) + (sy - _l2) * (sy - _l2));
    rl = pw * 2;
    if (sx > 0)
    {
        pages.mask._xscale = 100;
        nx = cx - Math.tan(a) * (ph / 2 - cy);
        ny = ph / 2;
        if (nx > pw)
        {
            nx = pw;
            ny = cy + Math.tan(1.570796 + a) * (pw - cx);
        } // end if
        pageN.pf._x = -(pw - nx);
        pages.flip.fgrad._xscale = _l3 / rl / 2 * pw;
        pages.pgrad._xscale = -_l3 / rl / 2 * pw;
        pages.flip.p3shadow._xscale = _l3 / rl / 2 * pw;
    }
    else
    {
        pages.mask._xscale = -100;
        nx = cx - Math.tan(a) * (ph / 2 - cy);
        ny = ph / 2;
        if (nx < -pw)
        {
            nx = -pw;
            ny = cy + Math.tan(1.570796 + a) * (-pw - cx);
        } // end if
        pageN.pf._x = -(pw - (pw + nx));
        pages.flip.fgrad._xscale = -_l3 / rl / 2 * pw;
        pages.pgrad._xscale = _l3 / rl / 2 * pw;
        pages.flip.p3shadow._xscale = -_l3 / rl / 2 * pw;
    } // end if
    pages.mask._x = cx;
    pages.mask._y = cy;
    pages.mask._rotation = ad;
    pageN.pf._y = -ny;
    pageN._x = nx + offs;
    pageN._y = ny;
    pages.flip.fgrad._x = cx;
    pages.flip.fgrad._y = cy;
    pages.flip.fgrad._rotation = ad;
    pages.flip.fgrad._alpha = _l3 > rl - 50 ? (100 - (_l3 - (rl - 50)) * 2) : (100);
    pages.flip.p3shadow._x = cx;
    pages.flip.p3shadow._y = cy;
    pages.flip.p3shadow._rotation = ad;
    pages.flip.p3shadow._alpha = _l3 > rl - 50 ? (100 - (_l3 - (rl - 50)) * 2) : (100);
    pages.pgrad._x = cx;
    pages.pgrad._y = cy;
    pages.pgrad._rotation = ad + 180;
    pages.pgrad._alpha = _l3 > rl - 100 ? (100 - (_l3 - (rl - 100))) : (100);
    pages.flip.fmask.page._x = pageN._x;
    pages.flip.fmask.page._y = pageN._y;
    pages.flip.fmask.page.pf._x = pageN.pf._x;
    pages.flip.fmask.page.pf._y = pageN.pf._y;
    pages.flip.fmask.page._rotation = pageN._rotation;
    _l3 = ;
    _l2 = ;
    _l1 = ;
} // End of the function
function setPages(p1, p2, p3, p4)
{
    _l1 = p4;
    _l2 = p3;
    _l3 = p2;
    if (p1 < 0)
    {
        p1 = 0;
    } // end if
    if (_l3 < 0)
    {
        _l3 = 0;
    } // end if
    if (_l2 < 0)
    {
        _l2 = 0;
    } // end if
    if (_l1 < 0)
    {
        _l1 = 0;
    } // end if
    trace("setpages ->" + p1 + "," + _l3 + "," + _l2 + "," + _l1);
    pages.p1.page.pf.ph.attachMovie("page" + p1, "pic", 0);
    pages.p1.page.pf.ph._y = -ph / 2;
    pages.flip.p2.page.pf.ph.attachMovie("page" + _l3, "pic", 0);
    pages.flip.p2.page.pf.ph._y = -ph / 2;
    pages.flip.p3.page.pf.ph.attachMovie("page" + _l2, "pic", 0);
    pages.flip.p3.page.pf.ph._y = -ph / 2;
    pages.p4.page.pf.ph.attachMovie("page" + _l1, "pic", 0);
    pages.p4.page.pf.ph._y = -ph / 2;
    _l3 = _l3;
    _l2 = _l2;
    _l1 = _l1;
} // End of the function
function resetPages()
{
    setPages(page, 0, 0, page + 1);
} // End of the function
pw = 223;
ph = 340;
page = _root.curpage;
trace("page  -  " + page);
maxpage = 11;
resetPages();
reset();
flip = false;
flipOff = false;
flipOK = false;
sx = sy = 0;
mx = pages._xmouse;
my = pages._ymouse;
mousecontroll = new Object();
mousecontroll.onMouseDown = function ()
{
    if (flipOff)
    {
        flipOff = false;
        flip = true;
    }
    else
    {
        _l1 = hittest();
        if (_l1)
        {
            s = new Sound();
            s.attachSound("page");
            s.start(0, 1);
            anim._visible = false;
            flip = true;
            flipOff = false;
            ox = sx = _l1 * pw;
            pages.flip.setMask(pages.mask);
        } // end if
    } // end if
    _l1 = _l1;
};
mousecontroll.onMouseUp = function ()
{
    if (flip)
    {
        flipOK = false;
        if (sx < 0 && pages._xmouse > 0)
        {
            flipOK = true;
        } // end if
        if (sx > 0 && pages._xmouse < 0)
        {
            flipOK = true;
        } // end if
        trace(flipOK);
        flipOff = true;
        flip = false;
    } // end if
};
Mouse.addListener(mousecontroll);
onEnterFrame = function ()
{
    _l1 = pages._xmouse;
    _l2 = pages._ymouse;
    if (flip)
    {
        _l1 = ox = ox + (_l1 - ox) / 5;
        _l2 = oy = oy + (_l2 - oy) / 5;
        calc(_l1, _l2);
    } // end if
    if (flipOff)
    {
        if (flipOK)
        {
            _l1 = ox = ox + (-sx - ox) / 3;
            _l2 = oy = oy + (sy - oy) / 3;
            calc(_l1, _l2);
            if (_l1 / -sx > 0.990000)
            {
                flip = false;
                flipOK = flipOff = false;
                pages.flip._visible = false;
                pages.pgrad._visible = false;
                page = page + (sx < 0 ? (-2) : (2));
                setPages(page, 0, 0, page + 1);
            } // end if
        }
        else
        {
            _l1 = ox = ox + (sx - ox) / 3;
            _l2 = oy = oy + (sy - oy) / 3;
            calc(_l1, _l2);
            if (_l1 / sx > 0.990000)
            {
                flip = false;
                flipOff = false;
                pages.flip._visible = false;
                pages.pgrad._visible = false;
                setPages(page, 0, 0, page + 1);
            } // end if
        } // end if
    } // end if
    _l2 = _l2;
    _l1 = _l1;
};
stop();


//poprawiłem - bulion



Pozdro Tofik

tAboon - Czw 14 Kwi, 2005 20:45

Zgodze sięz bulion'em wrożka do piekła Cię doprowadzi :-b . Nie wierze we wróżki, egzorcyzmy itp itd. ale to nie w tym dziale o tym nam rozmawiać. A w jakim programie może to być zrobione?? hmmm wydaje mi się że nie w SWiSH'u.
Piotr - Czw 14 Kwi, 2005 20:54

... da się to w SWiSH'u zrobić.
Mam podobnego OpenSourc'a, chociaż działa na klik a nie na przeciąganie.
Pozdrawiam ... :-D=

maribt - Sob 23 Kwi, 2005 11:02

Ja słyszałęm że w swishu da się zrobić wszystko to co w Macromedia.
Piotr, czy mógłbyś zapodać tego OpenSourc'a ??

Z góry dzięki


Powered by phpBB modified by Przemo © 2003 phpBB Group