Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Передача значения переменной через javascript из браузера (http://www.flasher.ru/forum/showthread.php?t=91824)

fiona 09.02.2007 11:27

Передача значения переменной через javascript из браузера
 
Помогите, люди добрые... Пытаюсь присвоить значение переменной из html через javascript таким образом: onclick="document.MyFlashID.SetVariable('MyVariable','MyValue');"

В динамическом текстовом поле (с Var='MyVariable') это значение появляется, но при попытке работать с переменной каким-либо другим способом ничего не получается - undefined :(

В чем причина?

etc 09.02.2007 12:10

http://noregret.org/tutor/gentle/
http://noregret.org/tutor/navigation/

fiona 09.02.2007 12:31

Я тоже умею пользоваться input/search в поисковых системах. ;-) Но здесь нет ответа на вышеприведенный вопрос. Вы думаете иначе???

etc 09.02.2007 12:56

Да, я думаю иначе. Там рассказывается о всевозможных способах передачи переменной во Flash и то, что SetVariable не лучший вариант.

fiona 09.02.2007 13:10

Для решения моей задачи этот вариант подходит идеально. Я даже знаю пример, где этот метод благополучно работает, несмотря на описанные Вами трудности: http://pyg.keonox.com/flashmp3player/jcloze.htm
Мне неизвестна самая малость: почему у меня это не хочет работать ;-(

etc 09.02.2007 13:50

Потому что надо писать setVariable("_level0.anyVariable","value");
А во флеше пользовать _level0.anyVariable.
Я не проверял, но должно работать.

Вы бы пояснили, что значит «при попытке работать с переменной каким-либо другим способом» и привели код того, как вы с ней хотите работать.

fiona 09.02.2007 14:25

Что-то так тоже не работает - хоть _level0, хоть _root :(

«Каким-либо другим способом» - например, для
<a href="javascript:void(0);" onclick="document.mp3player.SetVariable('currenturl','mysound.mp3');">проиграть</a>

Код:

var my_sound:Sound = new Sound();
my_sound.loadSound(currenturl, true);

Повторюсь, что в динамическом текстовом поле переменная с названием файла отображается, а вот звука нет... И попытка "вытащить" это значение из текстового поля мне не удалась.

etc 09.02.2007 14:29

Так ведь ваш код во флеше выполняется раньше, чем вы нажали на ссылку. А переменной currenturl ещё нет. Что мешает переписывать код флеша в диве с разными значениями flashvars?

fiona 09.02.2007 15:02

Спасибо. :) Почему-то такое простое и логичное объяснение мне в голову не приходило.
А Вам самому переписывание кода флеша в диве не кажется ли усложнением проблемы без необходимости?

Powerhead 06.03.2007 17:03

Цитата:

Сообщение от __etc
Так ведь ваш код во флеше выполняется раньше, чем вы нажали на ссылку. А переменной currenturl ещё нет. Что мешает переписывать код флеша в диве с разными значениями flashvars?

А если значений миллион? Миллион раз код флеша переписывать?


fiona, делай через ExternalInterface
Вот пример.
Flash

Код:

import flash.external.*;

// Текстовое поле для дебага
var txtField:TextField = this.createTextField("txtField", this.getNextHighestDepth(), 0, 0, 200, 80);
txtField.border = true;

// Регистрируем внешний метод set, привязанный к внутренней функции __set
if (ExternalInterface.addCallback('set', null, __set)) {
        Debug('External method set() registered');
}
else { Debug('Error'); }

// Регистрирует переменную в _root
function __set(myVar, myValue) {
       
        _root[myVar] = myValue;
        Debug('New variable registered `'+myVar+'`: '+_root[myVar]);
}

function Debug(msg) {
        txtField.text += msg+"\n";       
}

JS

Код HTML:


function registerVariable(varName, varValue) {

    if(varName) {
   
        thisMovie("Айдишник мувика").set(varName, varValue);

    }
}

function thisMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName]
    }
    else {
        return document[movieName]
    }
}

И вызов

Код HTML:

<form>
    Var name: <input type="text" name="varName" value="var" id="varName" style="border: 1px solid black;" />  <br /><br />
    Value: <input type="text" name="varValue" value="value" id="varValue" style="border: 1px solid black;" />  <br /><br />
    <input type="button"
          onclick="registerVariable(
                            document.getElementById('varName').value,
                            document.getElementById('varValue').value)
          ;"

          value="Register variable" />

       
       
   
</form>

Также allowScriptAccess нужно поставить в always


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

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