Просмотр полной версии : Задание положениея курсора мыши (программно на АС)
BigFlasher
03.04.2004, 08:05
Был бы признателен, если бы кто нибудь подсказал, как с помощью AC задать положение курсора мыши.
Именно задать, а не считать (_xmouse, _ymouse - только для чтения).
Перерыл весь инет, и не нашел, только на Java можно - а это изврат в моем случае....
Заранее спасибо.
Дело в том, что положение курсора мыши - системное свойство, и из Flash его менять нельзя.
То есть ПОЛОЖЕНИЕ мыши - системное свойство. А вот КУРСОР ты можешь нарисовать сам и располакать там, где дуже угодно. Вот пример - измененное поведение КУРСОРА в зависимости от ПОЛОЖЕНИЯ мыши.
BigFlasher
05.04.2004, 16:44
Это я все знаю...
Мне нужно чтобы курсор перемещался в нужное место, и события наведения на кнопку или нажатия на кнопку выполнялись в соответствии с этим. Hittest не подходит.
А перемещать картинку - дерьмо...
Кстати, как проверить нажата ли кнопка на мыши, не применяя кнопки, или других объектов растянутых на все поле?
(Нужно к примеру проверить нажата ли л.к. мыши в любом месте окошка Flash.)
Mouse.addListener (newListener)
А можно ли сделать так, чтобы при наведении мыши на кнопку курсор не менялся на руку? Если да, то как? Thanx...
object.useHandCursor=false
где object-мувик твоего курсора...
вот...
sergwizard
06.04.2004, 20:16
Кстати, как проверить нажата ли кнопка на мыши, не применяя кнопки, или других объектов растянутых на все поле?
Есть такое событие "onMouseDown", вот им-то и можно отслеживать нажатие мыши. И здесь абсолютно не нужно "Mouse.addListener (newListener)". Это для других целей.
2Dindin
Можно не только располагать курсор где угодно, но также можно и задавать ему любое перемещение и действие (вне зависимости от перемещения и действия мыши).
Надеюсь, этот пример поможет.
object - имя не мувика-курсора, а имя объекта (кнопки или МС), на которые ты наводишь мышь.
2sergwizard
Можно не только располагать курсор где угодно, но также можно и задавать ему любое перемещение и действие (вне зависимости от перемещения и действия мыши).
О чем я и говорю :)
Перемещать можно курсор, но никак не мышь, ибо свойства _xmouse и _ymouse имеют атрибут readOnly. Вчитайся в мой прошлый мессаг :)
Да, кстати об addListener.
Кстати, как проверить нажата ли кнопка на мыши, не применяя кнопки, или других объектов растянутых на все поле?
Согласен, что метод Listener.onMoseDown() более громоздкий, чем просто использование onMouseDown()
как события, но в контейнер Listener можно положить несколько событий и получать комбинации из них, к примеру действие выполняется при одновременном нажатии мыши и ее перемещинии. имхо Listener - более гибкий метод :)
Nox Noctis
06.04.2004, 22:28
Оригинал написал(а) Dindin
Перемещать можно курсор, но никак не мышьа еще можно управлять руками юзера :)))
sergwizard
06.04.2004, 22:52
2 Dindin
О чем я и говорю
И о чем же ты говоришь? Читаем:
То есть ПОЛОЖЕНИЕ мыши - системное свойство. А вот КУРСОР ты можешь нарисовать сам и располакать там, где дуже угодно. Вот пример - измененное поведение КУРСОРА в зависимости от ПОЛОЖЕНИЯ мыши.
1.Ты сделал пример движения курсора, в зависимости от ПОЛОЖЕНИЯ (движения) мыши. Я показал (как просил BigFlasher), что курсор можно заставить двигаться и выполнять действия БЕЗ мыши.
2. Вот простейшая (и очень действенная) функция отслеживающая нажатия л.к мыши в любом месте окошка Flash (о чем также спрашивал BigFlasher).
this.onMouseDown = function(){
trace("mouse is pressed");
}
Вот функция "при одновременном нажатии мыши и ее перемещинии":
this.onMouseDown = function(){
pressed = true;
}
this.onMouseUp = function(){
pressed = false;
}
this.onMouseMove = function(){
If(pressed){
trace("I am watching");
}
Напиши, пожалуйста, свою функции, используя Mouse.addListener(obj).
И мы сравним, что проще и гибче.
ЗЫ. Да, еще хочу уточнить, что ПОЛОЖЕНИЕ мыши – отнюдь не системное свойство. Положение мыши – это дело юзера, - куда захочет, туда и двинет. Но вот ОТСЛЕЖИВАТЬ положение мыши, - это уже дело системы.
function down ()
{
listen.onMouseMove = moving;
}
function moving ()
{
trace ('moving');
}
function up ()
{
listen.onMouseMove = null;
}
listen = {};
listen.onMouseUp = up;
listen.onMouseDown = down;
Mouse.addListener(listen);
При этом событиене привязано к объекту (this).
2sergwizard
Если ты знаешь способ програмно из flash'a менять свойства _xmouse и _ymouse - поделись с общественностью :)
sergwizard
08.04.2004, 00:01
1.Таварисчь Dindin, ай-яй-яй…. хитрить-то не надо…
В своем примере ты создаешь новый объект. И, как мы видим, безо всяких определенных свойств и методов.
И это естественно, что тебе приходится приписывать ему свойства и методы, добавлять его в число слушателей событий onMouseMove и т.д.
Но дело-то в том, что мы уже имеем объект _root, который по определению является слушателем этих событий.
Твой код можно переписать так:
function down (){
this.onMouseMove = moving;
}
function moving (){
trace ('moving');
}
function up (){
this.onMouseMove = null;
}
this..onMouseUp = up;
this.onMouseDown = down;
//и не записываем его в "слушатели"
//Mouse.addListener(listen);
И все работает! Ты можешь выложить на сцену MovieClip "mc", заменить в коде "this" на "mc", и опять все будет работать. И не нужно здесь никакого addListener(mc). Вреда, конечно, никакого нет, но и пользы тоже никакой, так как (читаем help): Method; registers an object to receive notifications of the onMouseDown, onMouseMove and onMouseUp callback handlers…. If the listener newListener is already registered, no change occurs.
Вопрос был: Кстати, как проверить нажата ли кнопка на мыши, не применяя кнопки, или других объектов растянутых на все поле?
(Нужно к примеру проверить нажата ли л.к. мыши в любом месте окошка Flash.)
Вот именно поэтому я и писал:
И здесь абсолютно не нужно "Mouse.addListener (newListener)". Это для других целей.
2.
Если ты знаешь способ програмно из flash'a менять свойства _xmouse и _ymouse - поделись с общественностью :)
Ха! Это ты к чему? Я где-нибудь хоть намеком дал понять, что это возможно? Нет. Так что ты со своей иронией - пальцем в небо. В сухую лужу. :D
Стоп-стоп, а то что у тебя функции не именованные (т.е для других объектов/событий их пререопределять придется) - это ничего серьезного? А если, к примеру, у меня пез вызова конструктора по .onMouseDown нужно новый класс ввести. Подчеркиваю - без конструктора! Тогда придется для рута писать переопределение класса?
Да, согласен, что в приложении к _root твой код так же работает, а что если кроме нажатия мыши то же действие (trace ('moving')) происходит и при нажатии клавиши на клавиатуре? В моем случае можно на Listener навесить событие с именованной функцией, а в твоем?
Только не бейте - я на самом деле маленький и глупый
sergwizard
08.04.2004, 00:56
Читаем внимательно вопрос BigFlasher(а):
Кстати, как проверить нажата ли кнопка на мыши, не применяя кнопки, или других объектов растянутых на все поле?
(Нужно к примеру проверить нажата ли л.к. мыши в любом месте окошка Flash.)
Прочитал? Теперь ты понял, что твои ля-ля не имеют никакого отношения к ЭТОМУ вопросу?
Я, конечно, понимаю, что ты "динь-динь". Но, ты - не тот колокольчик, который разбудит Герцена. :D :D
Вреда, конечно, никакого нет, но и пользы тоже никакой,
Это правда?
Кстати, как проверить нажата ли кнопка на мыши, не применяя кнопки, или других объектов растянутых на все поле?
А предложенный мной вариант не подходит?
If the listener newListener is already registered, no change occurs.
А если зарегистрировать два раза c одинаковыми параметрами объект Аrray(), к примеру? Много будет изменений?
a = new Array (8);
a = new Array (8);
Прочитал? Теперь ты понял, что твои ля-ля не имеют никакого отношения к ЭТОМУ вопросу?
Во первых, не ля-ля, а динь-динь, а во-вторых я думал, что в этом форуме и в этом разделе уместно все, что имеет отношение к Action Script.
... или я чего-то не понимаю? :rolleyes:
©TTS
Кстати, как проверить нажата ли кнопка на мыши, не применяя кнопки, или других объектов растянутых на все поле?
if(key.isDown(1)){
}
BigFlasher
17.04.2004, 00:00
Спасибо за ответы на мои вопросы...
но только на основной вопрос так никто и не дал ответа...
Хотя в сочитании с остальной информацией, я смогу сделать то что хотел, хотя и кривовато...
Скоро выложу ссылку на сайт который сейчас деаю, ждемс :))
Nox как всегда прав)))
если надо я могу и сам бес скрипта мыши подвинуть)))
и голова болеть небудет)))
как что куда и почему)))
P.S поставте мыши дистанционное управление и крутите как хотите, хотя неисключено упиратся будет))) в тамком случае дайте ей сыра)))
уф , а теперь посерьезнее , в флеше мышью вы управлять неможете и точка , есть программы которые ето могут но они к флешу неимею никокого отношения , принцип прост они работают в режиме реал тайм , тоесть программа способно запоминать все действия мыши нетолько передвижения но и клики , и все ето на мониторе повторить при етом мыш как бы блокируется на ето время .
забавные програмки понаставиш в память тех или иных действий а курсор потом все за тебя делает)))
ети программы рекомендованы для детей чтобы неналазили там где ненадо) родители состовляю своеобразны каталог действий , а мыш их выполняет)
sergwizard
17.04.2004, 10:57
2BigFlasher
но только на основной вопрос так никто и не дал ответа...
По-моему, тебе дали ответы на все твои вопросы. Даже не зная, какой из них основной. И даже примеры выложили.
BigFlasher
23.04.2004, 09:38
Ответы на вопросы дали :))
Только вот результат по основному - отрицательный.
т.е. мышь я передвинуть програмно немогу :))
Кстати - реально это сделать, только нужно сочитание VB script с AC.
Но мне к счастью уже не требуется это...
спасибо еще раз всем!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.