Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Flash+JavaScript узнать позицию курсора, как вернуть значение, передать в flash 
:(
    Опции темы
Incensus
  Дата 10.8.2011, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 9.4.2009
Где: Харьков

Репутация: нет
Всего: нет



Добрый день. Я флеш-разработчик и передо мной сейчас стоит задача передать значение из ДжаваСкрипта во флеш. Я нашел 100% рабочий пример, стараюсь его адаптировать под себя чтобы понять принцип.

Вот сама html-страничка со скриптом
Код

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>example</title>
</head>
<script>
    function show_message(param)
    {
        alert(param);
        return 'Выполнено';
    }
    function clickButton(){
    /*e = (e) ? e : window.event;
    
    var posx = 0;
    var posy = 0;
    
    if(e.pageX)
    {
        posx = e.pageX;
        posy = e.pageY;
    }
    
    else if(e.clientX)
    {
        posx = e.clientX + document.body.scrollLeft;
        posy = e.clientY + document.body.scrollTop;
    }
        return posx;*/
        document.example.select_js('posx');
    }
</script>
<body bgcolor="#ffffff">
    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="250" height="150" id="example" align="middle">
    <param name="allowScriptAccess" value="always" />
    <param name="allowFullScreen" value="false" />
    <param name="movie" value="example.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />    <embed src="example.swf" quality="high" bgcolor="#ffffff" width="250" height="150" name="example" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" />
    </object>
    <br/>
    <input type="button" value="Вывести координаты х" onclick="clickButton()"/>
</body>
</html>



Работает это так.

Нужная мне часть кода в скрипте на Джаве закомменчина. Когда я ее раскомментирую скрипт перестает работать. Пытался не через return, передать значение
document.example.select_js(posx);
В ActionScript 3 у меня за это отвечает функция
Код

public function Select(param):void
        {
            /*
                какие-нибудь действия, которые должны выполниться 
                при вызове из JavaScript функции select_js
            */
            _label.text = String(param);
            _label.text += " - x position of mouse cursor";
        }


то есть что бы я не передал это все равно преобразуется в строку.

Где я ошибся? Как вернуть значение?
Исходники можно посмотреть тут.
PM MAIL   Вверх
нуп
Дата 10.8.2011, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 12
Всего: 33



Спасибо завис браузер  smile 
PM MAIL   Вверх
Incensus
Дата 10.8.2011, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 9.4.2009
Где: Харьков

Репутация: нет
Всего: нет



там нет вирусни, тем более и скрипт простой.
Кто-то знает? Я неправильно получаю координаты? Как вернуть значение из функции.
PM MAIL   Вверх
Amphiluke
Дата 10.8.2011, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Цитата(Incensus @  10.8.2011,  15:13 Найти цитируемый пост)

Код

function clickButton(){
   e = (e) ? e : window.event;

Откуда, по-вашему, должна взяться «e»?

Вероятно, не хватает явно передаваемого параметра.
Код

<input type="button" value="Вывести координаты х" onclick="clickButton(event)"/>


P.S. По ссылке не ходил.

Добавлено через 3 минуты и 24 секунды
А, ну да. И, конечно,
Код

function clickButton(e){

PM   Вверх
Incensus
Дата 11.8.2011, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 9.4.2009
Где: Харьков

Репутация: нет
Всего: нет



спасибо, вы прояснили обстановку. Теперь заработает!
PM MAIL   Вверх
Incensus
Дата 11.8.2011, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 9.4.2009
Где: Харьков

Репутация: нет
Всего: нет



из флеша через
CurrXMousePos = ExternalInterface.call("getCurrXMousePosPos");
CurrYMousePos = ExternalInterface.call("getCurrYMousePosPos");

вызываю джваскриптовые функции. Но они почему-то возвращают не число.

Код

<script>
    /*window.onload=function(){
    getCurrXMousePosPos(e);
    getCurrYMousePosPos(e);
}*/
    function getCurrXMousePosPos(e){
        e = (e) ? e : window.event;
        var posx = 0;
    if(e.pageX){
        posx = e.pageX;
    }
    else if(e.clientX){
        posx = e.clientX + document.body.scrollLeft;
    }
        return posx;
}
    
    function getCurrYMousePosPos(e){
        e = (e) ? e : window.event;
        var posy = 0;
    if(e.pageX){
        posy = e.pageY;
    }
    else if(e.clientX){
        posy = e.clientY + document.body.scrollTop;
    }
    return posy;
}

    function getClientWidth(){
  return window.document.compatMode=='CSS1Compat' && !window.opera?
document.documentElement.clientWidth:document.body.clientWidth;
}
 
function getClientHeight(){
  return window.document.compatMode=='CSS1Compat' && !window.opera?
document.documentElement.clientHeight:document.body.clientHeight;
}
</script>

PM MAIL   Вверх
Amphiluke
Дата 11.8.2011, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Incensus, просто так вызывать функцию getCurrXMousePosPos() бессмысленно, она непременно должна быть обработчиком события мыши, неявно вызываемым самим браузером в ответ на действия пользователя. Тогда и только тогда ей будет автоматически передаваться правильный параметр «e», который является ссылкой на экземпляр объекта Event, обладающий свойствами типа pageX.
Вот ваш первый сценарий был правильным: функция назначалась обработчиком события onclick.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0464 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.