Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как управлять мышкой програмно? (http://www.flasher.ru/forum/showthread.php?t=188304)

Nickolai 01.12.2012 15:13

Как управлять мышкой програмно?
 
Как сделать так чтобы мышка прошла по определенной траектории(но на самом деле она стояла на месте)? Она как бы прошла по траектории для программы, а для юзера она стоит на месте!

Tails 01.12.2012 15:21

Нарисуйте курсор, и пустите его по траекторий, при этом скрыв системный курсор.

Nickolai 01.12.2012 16:10

Курсор должен быть настоящий, то есть если ты им навел на что-то, то это что-то должно реагировать на него. Для юзера курсор на месте стоит. Или скажем мне надо чтобы несколько объектов среагировали будто на них навели и убрали курсор

Tails 01.12.2012 16:27

Я ничего не понял, скажу вот что:
Управлять системным курсором нельзя, его можно лишь скрыть/отобразить. Но вы можете нарисовать свой Sprite в виде курсора и привязать его по x, y к настоящему, скрытому курсору.

Nickolai 01.12.2012 16:49

Надо чтобы несколько объектов среагировали будто на них навели курсор.

Tails 01.12.2012 17:03

Вызовите их обработчик события:
Код AS3:

myMouseListener(null);

Если в обработчике используется объект события, то сперва создайте этот объект:
Код AS3:

var e:MouseEvent = new MouseEvent(MouseEvent.CLICK);
myMouseListener(e);

Не забудьте заполнить свойства объекта события (e), которые будет использовать обработчик события.

spirit2 01.12.2012 17:10

Ну так отслеживайте положение "спрайта-курсора" и при пересечении с объектами меняйте их состояние, на то, которое хотите видеть, если бы навели курсор.

Nickolai 01.12.2012 19:12

У меня объектом является кнопка:
Код AS1/AS2:

b_page = visual.getChildByName("b_page") as SimpleButton;
b_page.addEventListener(MouseEvent.CLICK, btnClickHandler);

Что мне делать, чето я вообще не рублю?!)

Tails 01.12.2012 19:59

Код AS3:

b_page = visual.getChildByName("b_page") as SimpleButton;
b_page.addEventListener(MouseEvent.CLICK, btnClickHandler);
 
btnClickHandler(null); // Вызов обработчика клика, как-если бы мы кликнули


Dip52 01.12.2012 20:43

Вложений: 1
Код AS3:

//Объявляю пакет:
package src
{
        import flash.display.MovieClip;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.ui.Mouse;
        import flash.display.Shape;
 
        //Объявляю класс:
        public class MouseCursorClass extends MovieClip
        {
                //Определяю класс Shape (для рисования):
                var shape:Shape = new Shape();
                //Определяю и устанавливаю класс objectMouseCursor:
                var mouseCursor:objectMouseCursor = new objectMouseCursor();
                //Объявляю конструктор:
                public function MouseCursorClass()
                {
                        //Задаю толщину и цвет линий:
                        shape.graphics.lineStyle(0,0x000000);
                        //Определяю как квадрат:
                        shape.graphics.drawRect(0,0,200,200);
                        //Добавляю на сцену квадрат:
                        this.addChild(shape);
 
                        //Скрываю настоящий курсор мышки:
                        Mouse.hide();
 
                        //Добавляю на сцену аналог курсора мышки:
                        stage.addChildAt(mouseCursor,1);
                        //Запрещаю аналогу курсора мышки быть видимым для настоящего курсора мышки:
                        this.mouseCursor.mouseEnabled = false;
 
                        //Определяю событие обновления кадров:
                        stage.addEventListener(Event.ENTER_FRAME, updateFrames);
                        //Определяю событие нажатия кнопки мыши:
                        addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
                }
                //Объявляю функцию для события обновления кадров:
                public function updateFrames(event:Event):void
                {
                        //Если курсор мышки находится внутри зоны действия, то:
                        if(mouseX > 0 && mouseX < 200 && mouseY > 0 && mouseY < 200)
                        {
                                //Изменяю координату y у аналога курсора мышки:
                                mouseCursor.y = mouseY;
                                //Изменяю координату x у аналога курсора мышки:
                                mouseCursor.x = mouseX;
                        }
                }
                //Объявляю функцию для события нажатия кнопки мыши:
                public function mouseDown(event:Event):void
                {
                        //Определяю "условие":
                        switch(event.target.name)
                        {
                                //Если настоящим курсором мышки был нажато на объект test, то:
                                case 'test':
                                //Вывожу информирование:
                                trace("Ура. Свершилось чудо! Курсор мышки находясь в зоне действия совершил нажатие объекта test.");
                                break;
                        }
                }
        }
}

Я пока что нашёл только один минус: когда мышка резко выходит из приложения, или поля видимости, то курсор мышки (который созданный) остаётся на некотором расстоянии до окончания зоны действия (пределы 200,200).


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

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