PDA

Просмотр полной версии : Как определить mouseX рабочего стола или mouseX Браузерного окна


3Desian
11.11.2009, 17:23
Собственно вот и вопрос.
Флэшка лежит в html страничке, которая открыта в Explorer,например.
Нужно определить положение мышки на рабочем столе или в окне эксплорера.
Я понимаю без ДЖАВАСКРИПТа тут никак.
Помощи прошу, кто чем знает. :)

bicubic_bublic
12.11.2009, 01:23
в яваскрипте (очень грубо)
window.onmousemove = function (e) {
e = event;
// по w3c:
// e.screenX, e.screenY - позиция на экране
// e.clientX, e.clientY - позиция на странице (включая то что проскроленно)
}

3Desian
12.11.2009, 09:31
От.. спасибо , уважаемый.
А такой вопрос: а как это прикрутить к AS3.
Я бы хотел при клике во флэшке определять положение мышки на экране.
Вот функция в AS3:
public function onClick (event:Event)
{
if (ExternalInterface.available) { ExternalInterface.call("window.open", "www.somesite.ru", "windowName", "height=515,width=680,toolbar=no,scrollbars=no, left="+mouseX.toString()+",top="+mouseY.toString());}
}

но в ней берутся координаты мышки из флэшки.

Добавлено через 1 час 34 минуты
В продолжении темы.
Вот написал в html страничке:

<script type="text/javascript">
var mCoords;
function defPosition(event) {
mCoords.x=event.screenX ,
mCoords.y= event.screenY

}

function returnCoords()
{
return mCoords;
}
</script>
Правильно же?
И как дальше во флешке получить значениея при создании окна?

bicubic_bublic
12.11.2009, 11:39
предлагаю такой вариант:
<script type="text/javascript">
window.onmousemove = function(e) {
e = e || window.event; // для старых версий IE
window.mousePosition = { x: e.screenX, y: e.screenY };
}
</script>

во флеше

var mousePosition:Object = ExternalInterface.call('function () { return window.mousePosition; }');

3Desian
12.11.2009, 14:42
Что то не происходит ничего... :(
Пишу в html:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r" />
</head>
<div style="border:0px solid red;>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"

codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="100%" height="100%"

id="ComponentMaterialTest.swf" align="left">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie"

value="/files/f/ComponentMaterialTest.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed

src="/files/f/ComponentMaterialTest.swf" quality="high" bgcolor="#ffffff" width="100%" height="100%" name="ComponentMaterialTest.swf" align="left"

allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</div>

<body>
<script type="text/javascript">
window.onmousemove = function mouseCoord(e) {
e = e || window.event; // для старых версий IE
window.mousePosition = { x: e.screenX, y: e.screenY };
}
</script>

</body>
</html>
А во флэшке :
public function onClick (event:Event)
{
if (ExternalInterface.available) {
var mousePosition:Object = ExternalInterface.call('mouseCoord () { return window.mousePosition; }');
ExternalInterface.call("window.open", url, "WindowName", "height=515,width=680,toolbar=no,scrollbars=no, left="+mouseX.toString()+",top="+mouseY.toString());

txt.text=mousePosition.x; // текст передаётся в текстовое поле
}
}

Срабатывает только "window.open".
'mouseCoord () { return window.mousePosition; }' - не работает.