Просмотр полной версии : Передача значения переменной из JScript в AS
Короче, такая муть -->>
есть swf-ролик, в первом фрейме которго следующий скрипт:
var proverka;
stop();
if (proverka=true) {
gotoAndStop("2");
}
В html-файле через 50 сек. с помощью метода seTimeOut() запускается функция следующая:
document.setvar.SetVariable('proverka', true);
setvar - имя swf-ролика.
В общем, значение переменная proverka не получает, а на хтмл-странице возникает сообщение об оштбке. В чем дело?
Король 2
28.12.2005, 20:02
что сообщает сообщение об ошибке? с помощью чего ты отслеживаешь переменную во флеше?
что сообщает сообщение об ошибке?
Вот, что броузер говорит: "document.setvar" - есть null или не является объектом.
с помощью чего ты отслеживаешь переменную во флеше?
Не понял вопроса. А как вообще можно отслеживать переменные?
Король 2
28.12.2005, 20:20
1)если document.setvar - null следовательно у тебя флеш-объект имеет другое имя в странице
2) отслеживать переменную надо либо с помощью watch либо - проверкой ее значения через промежутки времени (onEnterFrame) - потому что если ты просто передашь значение во флеш - ничего не произойдет: ну задастся она там, но так как у тебя такое событие как изменение значения переменной не определено - флеш ничего и делать не станет
Дак как надо осуществить мою задумку?
Попробуй непосредственно из html передавать. Помоему тег такой <param name="flashvars" value="name=Ja-Ja&age=23&location=Russia"> он должен быть внутри тега object.Передает перемненные name,age,location в ролик.
Или прямо в AS сделать setInterval(), что мешает-то ?
Король 2
28.12.2005, 22:23
смотри в хелпе watch - там все написано
Mnilionic
29.12.2005, 02:29
а SetVariable, вроде как, только в IE работает...
а <param name="flashvars"... только константы может передавать, динамически её не поменять в уже сфомированной странице.
И проверку на загрузку ролика именно с моей странице не получить... :(
помойму вместо setvar надо указать object-id
Хм...
var myFlashMovie = document.getElementByID('myFlashMovieID');
myFlashMovie.setVariable...
object-id? так и написать или имя флешки сюда надо?
Mnilionic
30.12.2005, 02:20
GAIKER, именно его...
undeddy, значение обджект айди :)
извини, спросоня фигню сморозил :) перепутал id и classid
Хорошо, значение переменной передастся во Flash. А дальше что? Мне нужно, чтобы выполнился этот цикл:
if (proverka=true){
gotoAndStop("2");
}
А значение должно передастся чрез 90 сек. с помощью setTimeOut в JS. Не надо спрашивать, почему не использую setInterval. Так вот, будет ли работать этот цикл? Или надо вставить onEnterFrame?
Да, это не цикл, я ошибся. Но все-таки, что надо сделать, чтобы выполнить эту задачу?
Цитирую:
надо вставить onEnterFrame?
Вот новый код:
stop();
var proverka;
this.onEnterFrame = function() {
if (proverka == true) {
gotoAndStop("2");
}
};
Но ничего неработает...
Mnilionic
31.12.2005, 02:06
...
if (_root.proverka) {
gotoAndStop(2);
}
...
Не понял нового условия. Зачем вставлять префикс _root? И почему нету условия равенства логической величине true?
Не понял нового условия. Зачем вставлять префикс _root? И почему нету условия равенства логической величине true?
Зачем.....Почему..... чтоб работало, а если работает, то и вопросов нет :) !
В том то все и дело, что не работает. Ничего не изменяется, если вставить префикс _root.
Значит надо вставить что-нибудь другое вместо _root.
Вот у тебя var proverka где( читай в каком клипе) записано, такой "префикс" и вставляй.... мона исчё где нибудь префиксов навтыкать, например, перед gotoAndStop(), а то бедный флэш устанет искать тот клип кому ентот goto предназначен, и где находиться эта var proverka :)
Вот, я чуть-чуть переделал код:
_root.stop();
var proverka;
_root.onEnterFrame = function() {
if (_root.proverka == true) {
_root.gotoAndStop("2");
}
};
Но, опять, ничего не работает. На веб-странице первая сцена проигрывается, а переход ко второй не осуществляется.
Mnilionic
01.01.2006, 02:58
var _root.proverka;
если не работает значит строка из js не приходит.
лови, трассируй, следи за процессом.
Во-первых, var _root.proverka - это ерунда, так флэш ошибку выдает. А, во-вторых, я кажется понял проблему: значение true вообще не передается во флэш. В чем может быть причина, если на JS код такой:
document.flash.SetVariable('proverka', true);
, где 'flash' - унифицированный указатель флэш-объекта??
С этим
document.flash.SetVariable('proverka', true);
у меня тоже такая проблема появилась, когда я 8-й плеер себе поставил. Не работает с локального компа :(
С сервера работает, со старым плеером тоже работает, а с 8-м плеером на локальном компе не работает. Пока решение этой проблемы не нашел - лень искать...
В том, что путь надо указывать правильно в слэш-формате.
В том, что путь надо указывать правильно в слэш-формате.
document.my_flash.SetVariable("/:my_data",my_Variable);
типа так? Тоже не работает... А в старом плеере и так работало на локальном компе.
Или по другому надо указывать? Можно пример?
Самое интересное, что если во флеш передать строковое значение, например "true", то все работает, а если передать булеву величину, то все стопорится. Я выход нашел в том, чтобы во флеше сравнить не булевы величины, а строки.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.