Форум 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)
-   -   изменение skew в зовисимости от положения мышки (http://www.flasher.ru/forum/showthread.php?t=137851)

Evgan 23.03.2010 22:53

изменение skew в зовисимости от положения мышки
 
Вложений: 1
Здравсвуйте
Сделел небольшой ролик, в котором кружок реагирует на положение мышки, таким образом, что чем дальше от него мышка тем он овальнее и относительно мышки овал должен быть расположен "боком" использую для этого програмный SKEW:

Код AS1/AS2:

import flash.geom.Matrix;
matrix = mc.transform.matrix;
 
onMouseMove = function ():Void {
        //_______ scew X
        udal_scewX = (_xmouse-mc._x)/1000;
        matrix.b = 0-udal_scewX;
        //_______ scew Y
        udal_scewY = (_ymouse-mc._y)/1000;
        matrix.c = 0+udal_scewY;
        //
        mc.transform.matrix = matrix;
};

Однакоко не все так как хотелось бы, при от воде мышки в верхний правый и левый угол, овал своей вершиной в них "смотрит"

Подскажите пожалуйста как добиться требуемого результат
Благодарю

Исходник прикрепил

Evgan 24.03.2010 04:33

Вложений: 1
почти добился желаемого:
Код AS1/AS2:

import flash.geom.Matrix;
matrix = mc.transform.matrix;
onMouseMove = function ():Void {
        //_______ определение ростояния до середины символа
        udalX = Math.abs(_xmouse-mc._x);
        udalY = Math.abs(_ymouse-mc._y);
        //_______ определение к какой оси мы ближе
        if (Math.abs(_xmouse-mc._x)<Math.abs(_ymouse-mc._y)) {
                D = udalX;
        } else {
                D = udalY;
        }
        //________________ В зовисимости от того в какой четверти находимся определяем знак
        //верхний правый угол
        if ((_xmouse-mc._x)>0 && (_ymouse-mc._y)<0) {
                Dx = D;
        }
        //нижний правый угол               
        if ((_xmouse-mc._x)>0 && (_ymouse-mc._y)>0) {
                Dx = -D;
        }
        // нижний левый угол               
        if ((_xmouse-mc._x)<0 && (_ymouse-mc._y)>0) {
                Dx = D;
        }
        // верхний левый угол               
        if ((_xmouse-mc._x)<0 && (_ymouse-mc._y)<0) {
                Dx = -D;
        }
        //_______ scew X                 
        matrix.b = 0+Dx/1000;
        mc.transform.matrix = matrix;
};

Одноко, остался один момент, когда мышка находится справого или левого края по середине, то кружок круглый становится, а необходимо что бы он так же овальным был, то есть получается необходимо
Код AS1/AS2:

matrix.a

, то же самое и для вертикальной плоскости
Код AS1/AS2:

matrix.d

.
Все мои попытки по мпнипуляции
Код AS1/AS2:

matrix.a

и
Код AS1/AS2:

matrix.d

не увеньчались успехом, то есть проблемма в том что у меня в тот момент когда ширина должна уменьшаться уменьшается и высота, не получается незовисимую логику сделать. Может кто сталкивался с этим и подскажит к чему привязываться?
Благодарю
Исхоодник прекрипил


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

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