Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   wrapper + получения координать мыши (http://www.flasher.ru/forum/showthread.php?t=148529)

passertm 04.01.2011 23:10

wrapper + получения координать мыши
 
Здравствуйте.

Есть обьект "А" который не находится непосредственно на stage.
На нем висит слушатель MouseEvent.MOUSE_UP.
На Обьекте А есть обьект Б.
Если нажать мышькой на обьекте Б то, MouseEvent.localX и MouseEvent.localY показывают x и y по отношению к обьекту Б.
Придумал другие варианты решения проблемы но, когда загружаешь под wrapper они все начинают работать не правильно. А мне всего лишь нужно узнать на какую x,y обьекта А нажали мышкой(даже если перед обьектом А в эом месте стоит другой обьект).

один из решений такой
Код AS3:

                function down(e:MouseEvent):void {
                        var lx:int = e.localX;
                        var ly:int = e.localY;
                        var obj:DisplayObject = DisplayObject(e.target);
                        while (obj != e.currentTarget) {
                                lx += obj.x;
                                ly += obj.y;
                                obj = obj.parent;
                        }

Но и он работает не правильно когда обьект Б бывает изменен в размере(на пример растянут).


Попытки с ориентироваться по e.stageX работают не правильно, при запуске под wrapper c измененным маштабом браузера.
Надоело изобретать велосипет. Как с этим боротся?

udaaff 04.01.2011 23:17

Не понятно в чем проблема.

passertm 04.01.2011 23:39

хм... А почему попала только половина сообшения?


Здравствуйте.

Есть обьект "А" который не находится непосредственно на stage.
На нем висит слушатель MouseEvent.MOUSE_UP.
На Обьекте А есть обьект Б.
Если нажать мышькой на обьекте Б то, MouseEvent.localX и MouseEvent.localY показывают x и y по отношению к обьекту Б.
Придумал другие варианты решения проблемы но, когда загружаешь под wrapper они все начинают работать не правильно. А мне всего лишь нужно узнать на какую x,y обьекта А нажали мышкой(даже если перед обьектом А в эом месте стоит другой обьект).

один из решений такой
Код AS3:

                function down(e:MouseEvent):void {
                        var lx:int = e.localX;
                        var ly:int = e.localY;
                        var obj:DisplayObject = DisplayObject(e.target);
                        while (obj != e.currentTarget) {
                                lx += obj.x;
                                ly += obj.y;
                                obj = obj.parent;
                        }

Но и он работает не правильно когда обьект Б бывает изменен в размере(на пример растянут).


Попытки с ориентироваться по e.stageX работают не правильно, при запуске под wrapper c измененным маштабом браузера.
Надоело изобретать велосипет. Как с этим боротся?

passertm 05.01.2011 00:11

Вложений: 1
Прикрепил упрашенный вариант того о чем я говорю.
Работает нормально но, под wrapper с измененым маштабом браузера(на пример если 110% поставить) глючит.

Набросано под cs4. Если укого нету cs4 вот скрипты
Код AS3:

var h:Sprite=new Sprite();
h.x=10;
h.y=10;
addChild(h);
 
var s:Sprite=new Sprite();
s.addChild(new Bitmap(new f7(0,0)));
s.width*=3;
s.height*=3;
s.x=30;
s.y=20
h.addChild(s);
 
var s2:Sprite=new Sprite();
s2.addChild(new Bitmap(new f8(0,0)));
s2.x=230;
s2.y=220
h.addChild(s2);
 
var d:Sprite=new Sprite();
h.addChild(d);
h.addEventListener(MouseEvent.MOUSE_DOWN, down);
 
 
 
 
                function down(e:MouseEvent):void {
                        var lx:int;
                        var ly:int;
                        /*
                        lx = e.localX;
                        ly = e.localY;
                        var obj:DisplayObject = DisplayObject(e.target);
                        while (obj != e.currentTarget) {
                                lx += obj.x;
                                ly += obj.y;
                                obj = obj.parent;
                        }*/

 
                        var p:Point=e.currentTarget.localToGlobal(new Point(0,0));
                        lx=e.stageX-p.x;
                        ly=e.stageY-p.y;
 
 
                        d.graphics.lineStyle(5, 0x00ff00);
                        d.graphics.moveTo(lx, ly);
                        d.graphics.lineTo(lx+1, ly);
                }

Набросал на скорую руку.
h- head(обший контейнер
d-desc(то на чем рисуется)
s,s2- просто спрайты для помех.


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

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