Форум 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=124442)

zelik 29.04.2009 20:25

Движение за мышкой
 
Здравствуйте, уважаемые!

Стоит задача: просмотреть картинку-мувик, размер которого больше области видимости.

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

А вот, как продолжить движение, когда мышка выходит из области видимости, не знаю...

Что можете предложить?

Всем спасибо!

Acrossfy 29.04.2009 21:49

то есть? не совсем ясно, что именно нужно, глянь флешку на aquatics.su
мувики кнопки двигаются за мышью в определенной области. так надо?

zelik 29.04.2009 22:14

Размер документа 550 на 400 пикселей.
Есть фото, например 1200 на 1000 пикселей.
Нужно, чтобы была возможность перемещаться по фото.
Мышку двигаешь влево, фото постепенно перемещается до своего легово края и т.п.

Stargazer 29.04.2009 22:18

Цитата:

Сообщение от zelik (Сообщение 816503)
А вот, как продолжить движение, когда мышка выходит из области видимости

Из области видимости чего именно? Если вопрос в том, как отследить мышь за пределами флеша - то AS2 этого не умеет (насчёт AS3 не уверен).

zelik 29.04.2009 22:24

Но ведь есть событие onRollOut

Wolsh 29.04.2009 23:10

Я не понял - у Вас картинка ДВИЖЕТСЯ или встает в зависимости от положения мыши? Потому что если движется, то при уходе мыши за границу движение-то не прекратится, и картинка доползет до края.

Забудьте про onRollOut - как Вы уберете мышь с картинки, которая больше сцены и по условию не должна сдвигаться так, чтобы был виден ее край внутри сцены? И потом - даже если Вы поймаете это событие, что Вы будете с ним делать? Вам ведь нужны координаты мыши за пределами окна плеера))) А это невозможно. Разве что на странице хтмл, с помощью джаваскрипт. Но уверяю Вас, Вам это совершенно не нужно.

zelik 30.04.2009 00:38

Вот код, который написал.

Код AS1/AS2:

var shag = 2;
//old values
var x_mouse;
var y_mouse;
 
x_mouse = _xmouse;
y_mouse = _ymouse;
 
cl.onMouseMove = function() {
        //right
        if (_xmouse>x_mouse) {
                if (this._x<0) {
                        this._x=this._x+shag;//
                }
        }
        //up     
        if (_ymouse<y_mouse) {
                if (this._y+this._height>400) {
                        this._y=this._y-shag;//
                }
        }
        //down     
        if (_ymouse>y_mouse) {
                if (this._y<0) {
                        this._y=this._y+shag;//
                }
        }
        //left     
        if (_xmouse<x_mouse) {
                if (this._x+this._width>=550) {
                        this._x=this._x-shag;// -
                }
        }
        updateAfterEvent();//обновление
        x_mouse = _xmouse;
        y_mouse = _ymouse;
};

В onRollOut собирался продолжать двигать клип, по направлению мышки в последний момент до выхода за границы плеера.
Например:

Код AS1/AS2:

var move_ver = 0;//1 - up, -1 - down, 0 - stop 
var move_hor = 0;//1 - right, -1 - left, 0 - stop
var flag_stop = false;
 
cl.onRollOut = function() {
        flag_stop = false;
        moving();
};
 
function moving() {
        while (!flag_stop) {
                if ((move_ver == 0) and (move_hor == 0)) {
                        flag_stop = true;
                } else {
                        //up
                        if (move_ver == 1) {
                                if (cl._y+cl._height>400) {
                                        cl._y = cl._y-3;
                                        move_ver = 1;
                                } else {
                                        move_ver = 0;
 
                                }
                        }
                        //down   
                        if (move_ver == -1) {
                                if (cl._y<0) {
                                        cl._y= cl._y+3;//
                                        move_ver = -1;
                                } else {
                                        move_ver = 0;
                                }
                        }
                        //right 
                        if (move_hor == 1) {
                                if (cl._x<0) {
                                        cl._x=cl._x+3;//
                                        move_hor = 1;
                                } else {
                                        move_hor = 0;
                                }
                        }
                        //left
                        if (move_hor == -1) {
                                if (cl._x+cl._width>=550) {
                                        cl._x=cl._x-3;// -
                                        move_hor = -1;
                                }
                                else {
                                        move_hor = 0;
                                }
                        }
                }
        }

Но при этом картинка не движется, а перепрыгивает на конец...

Wolsh 30.04.2009 00:59

А, ну так Вы ж ее не двигаете, а только позиционируете, тогда конечно не доедет))
Про onEnterFrame почитайте. И заодно про Math.max и Math.min, чтобы такие этажерки условий не писать.

Wolsh 30.04.2009 01:31

Вложений: 1
Вот пример, здесь с битмапдатой, но смысл одинаков, что просто мувиклип с картинкой гонять.. Да и привыкать уже надо к битмапдате)))

zelik 30.04.2009 16:49

Спасибо большое.
Просмотр картинки для моей задачи даже более удобнее!
Есть еще несколько вопросов:

1. Можно ли грузить картинку из внутренней библиотеки флеш?

2. Что нужно, чтобы движения останавливалось, есть мышка не движится?

3. Как сделать, чтобы при возвращении мышки в область экрана, движение останавливалось?

Спасибо!


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

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