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

mysBer 20.06.2011 13:38

Вычисление области нажатия мыши
 
Здравствуйте!

Допустим, что у нас рисуется программно объект rectangle на рабочем столе. Как выяснить, что мы нажали именно на rectangle, т.е. внутри его границ, а не за его пределы?

daim 20.06.2011 13:48

добавь слушатель ему - addEventListener(..)
а вообще покажи код который уже написал, так проще обьяснить

kackbip 20.06.2011 13:51

DisplayObject#hitTestPoint, наверное...

MY3bIKAHT 20.06.2011 14:03

Код AS3:

rectangle.addEventListener(MouseEvent.CLICK, function(){
trace("rectangle click")
});

Если конечно я правильно понял суть вопроса.

mysBer 20.06.2011 14:23

daim, не получается ему навесить addEventListener. В том то и дело, что пишу обработчик по нажатию мыши и вот столкнулся с трудностью.

Код AS3:

public function addRect():void
                {
                        var rectX:int = 50;
                        var rectY:int = 50;
 
                        for (var i:int = 0; i<9; i++)
                        {
                                drawRectangle(rectX,rectY,15,15);
                                rectX = rectX + 15;
                                if (rectX == 95)
                                {
                                        rectX = 50;
                                        rectY = rectY + 15;
                                }
                        }
                }
 
                public function drawRectangle(rectX:int, rectY:int, rectWidth:int, rectHeight):void
                {
                        rect.graphics.lineStyle(1,0x000000);
                        rect.graphics.drawRect(rectX, rectY, rectWidth, rectHeight);
                        addChild(rect);
                }

Координаты, допустим, рандомные, например по x 50 и по y 50.

kackbip 20.06.2011 14:36

А что значит "не получается ему навесить addEventListener"? Его надо навешивать на rect

mysBer 20.06.2011 14:52

У нас имеются 9 квадратов. На каждый из них addEventListener вешать? Если нет, то как тогда получить номер того квадрата по которому нажали?
Я имел ввиду следующее:
Код AS1/AS2:

if (mouseX >= 50 && mouseY >= 50 && mouseX <= 65 && mouseY <= 65) {}

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

saikspaik 20.06.2011 14:58

Зачем огород городить? События, довольно удобная штука.

Zebestov 20.06.2011 15:13

Повесь слушатель на все поле (которое содержит квадраты) и проверяй e.target — не твой ли это RectangleObject.

mysBer 20.06.2011 15:50

Спасибо большое за помощь.

Добавлено через 6 часов 12 минут
Возник еще один вопрос: когда пользуемся отладчиком, почему при наведении мышки на переменные, не выдают результат, который им присваивается, например, как это реализовано в Visual Studio. Или я что-то не так делаю?


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

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