Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.02.2007, 11:27
fiona вне форума Посмотреть профиль Отправить личное сообщение для fiona Найти все сообщения от fiona
  № 1  
Ответить с цитированием
fiona

Регистрация: Mar 2006
Сообщений: 11
По умолчанию Передача значения переменной через javascript из браузера

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

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

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

Старый 09.02.2007, 12:10
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
http://noregret.org/tutor/gentle/
http://noregret.org/tutor/navigation/

Старый 09.02.2007, 12:31
fiona вне форума Посмотреть профиль Отправить личное сообщение для fiona Найти все сообщения от fiona
  № 3  
Ответить с цитированием
fiona

Регистрация: Mar 2006
Сообщений: 11
Я тоже умею пользоваться input/search в поисковых системах. ;-) Но здесь нет ответа на вышеприведенный вопрос. Вы думаете иначе???

Старый 09.02.2007, 12:56
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Да, я думаю иначе. Там рассказывается о всевозможных способах передачи переменной во Flash и то, что SetVariable не лучший вариант.

Старый 09.02.2007, 13:10
fiona вне форума Посмотреть профиль Отправить личное сообщение для fiona Найти все сообщения от fiona
  № 5  
Ответить с цитированием
fiona

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

Старый 09.02.2007, 13:50
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Потому что надо писать setVariable("_level0.anyVariable","value");
А во флеше пользовать _level0.anyVariable.
Я не проверял, но должно работать.

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

Старый 09.02.2007, 14:25
fiona вне форума Посмотреть профиль Отправить личное сообщение для fiona Найти все сообщения от fiona
  № 7  
Ответить с цитированием
fiona

Регистрация: Mar 2006
Сообщений: 11
Что-то так тоже не работает - хоть _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);
Повторюсь, что в динамическом текстовом поле переменная с названием файла отображается, а вот звука нет... И попытка "вытащить" это значение из текстового поля мне не удалась.

Старый 09.02.2007, 14:29
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

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

Старый 09.02.2007, 15:02
fiona вне форума Посмотреть профиль Отправить личное сообщение для fiona Найти все сообщения от fiona
  № 9  
Ответить с цитированием
fiona

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

Старый 06.03.2007, 17:03
Powerhead вне форума Посмотреть профиль Отправить личное сообщение для Powerhead Найти все сообщения от Powerhead
  № 10  
Ответить с цитированием
Powerhead

Регистрация: May 2006
Сообщений: 47
Цитата:
Сообщение от __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


Последний раз редактировалось Powerhead; 06.03.2007 в 18:03.
Создать новую тему Ответ Часовой пояс GMT +4, время: 05:54.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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