PDA

Просмотр полной версии : Передача значения переменной из JScript в AS


undeddy
28.12.2005, 19:53
Короче, такая муть -->>
есть 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
что сообщает сообщение об ошибке? с помощью чего ты отслеживаешь переменную во флеше?

undeddy
28.12.2005, 20:13
что сообщает сообщение об ошибке?
Вот, что броузер говорит: "document.setvar" - есть null или не является объектом.
с помощью чего ты отслеживаешь переменную во флеше?
Не понял вопроса. А как вообще можно отслеживать переменные?

Король 2
28.12.2005, 20:20
1)если document.setvar - null следовательно у тебя флеш-объект имеет другое имя в странице
2) отслеживать переменную надо либо с помощью watch либо - проверкой ее значения через промежутки времени (onEnterFrame) - потому что если ты просто передашь значение во флеш - ничего не произойдет: ну задастся она там, но так как у тебя такое событие как изменение значения переменной не определено - флеш ничего и делать не станет

undeddy
28.12.2005, 21:26
Дак как надо осуществить мою задумку?

Ja-Ja
28.12.2005, 21:46
Попробуй непосредственно из html передавать. Помоему тег такой <param name="flashvars" value="name=Ja-Ja&age=23&location=Russia"> он должен быть внутри тега object.Передает перемненные name,age,location в ролик.

Skubent
28.12.2005, 21:58
Или прямо в AS сделать setInterval(), что мешает-то ?

Король 2
28.12.2005, 22:23
смотри в хелпе watch - там все написано

Mnilionic
29.12.2005, 02:29
а SetVariable, вроде как, только в IE работает...
а <param name="flashvars"... только константы может передавать, динамически её не поменять в уже сфомированной странице.
И проверку на загрузку ролика именно с моей странице не получить... :(

Gaen
29.12.2005, 03:03
помойму вместо setvar надо указать object-id

Antares
29.12.2005, 06:34
Хм...


var myFlashMovie = document.getElementByID('myFlashMovieID');
myFlashMovie.setVariable...

undeddy
29.12.2005, 10:13
object-id? так и написать или имя флешки сюда надо?

Mnilionic
30.12.2005, 02:20
GAIKER, именно его...
undeddy, значение обджект айди :)

Gaen
30.12.2005, 06:23
извини, спросоня фигню сморозил :) перепутал id и classid

undeddy
30.12.2005, 13:35
Хорошо, значение переменной передастся во Flash. А дальше что? Мне нужно, чтобы выполнился этот цикл:
if (proverka=true){
gotoAndStop("2");
}

А значение должно передастся чрез 90 сек. с помощью setTimeOut в JS. Не надо спрашивать, почему не использую setInterval. Так вот, будет ли работать этот цикл? Или надо вставить onEnterFrame?

Skubent
30.12.2005, 16:09
Это не цикл, ага ?

undeddy
30.12.2005, 17:51
Да, это не цикл, я ошибся. Но все-таки, что надо сделать, чтобы выполнить эту задачу?

Skubent
30.12.2005, 17:58
Цитирую:
надо вставить onEnterFrame?

undeddy
30.12.2005, 19:40
Вот новый код:
stop();
var proverka;
this.onEnterFrame = function() {
if (proverka == true) {
gotoAndStop("2");
}
};
Но ничего неработает...

Mnilionic
31.12.2005, 02:06
...
if (_root.proverka) {
gotoAndStop(2);
}
...

undeddy
31.12.2005, 09:44
Не понял нового условия. Зачем вставлять префикс _root? И почему нету условия равенства логической величине true?

Madasan
31.12.2005, 10:26
Не понял нового условия. Зачем вставлять префикс _root? И почему нету условия равенства логической величине true?
Зачем.....Почему..... чтоб работало, а если работает, то и вопросов нет :) !

undeddy
31.12.2005, 10:33
В том то все и дело, что не работает. Ничего не изменяется, если вставить префикс _root.

Madasan
31.12.2005, 11:01
Значит надо вставить что-нибудь другое вместо _root.
Вот у тебя var proverka где( читай в каком клипе) записано, такой "префикс" и вставляй.... мона исчё где нибудь префиксов навтыкать, например, перед gotoAndStop(), а то бедный флэш устанет искать тот клип кому ентот goto предназначен, и где находиться эта var proverka :)

undeddy
31.12.2005, 13:11
Вот, я чуть-чуть переделал код:
_root.stop();
var proverka;
_root.onEnterFrame = function() {
if (_root.proverka == true) {
_root.gotoAndStop("2");
}
};


Но, опять, ничего не работает. На веб-странице первая сцена проигрывается, а переход ко второй не осуществляется.

Mnilionic
01.01.2006, 02:58
var _root.proverka;
если не работает значит строка из js не приходит.
лови, трассируй, следи за процессом.

undeddy
01.01.2006, 10:32
Во-первых, var _root.proverka - это ерунда, так флэш ошибку выдает. А, во-вторых, я кажется понял проблему: значение true вообще не передается во флэш. В чем может быть причина, если на JS код такой:
document.flash.SetVariable('proverka', true);
, где 'flash' - унифицированный указатель флэш-объекта??

Kogrom
04.01.2006, 07:56
С этим

document.flash.SetVariable('proverka', true);

у меня тоже такая проблема появилась, когда я 8-й плеер себе поставил. Не работает с локального компа :(

С сервера работает, со старым плеером тоже работает, а с 8-м плеером на локальном компе не работает. Пока решение этой проблемы не нашел - лень искать...

Antares
04.01.2006, 08:07
В том, что путь надо указывать правильно в слэш-формате.

Kogrom
04.01.2006, 09:21
В том, что путь надо указывать правильно в слэш-формате.
document.my_flash.SetVariable("/:my_data",my_Variable);
типа так? Тоже не работает... А в старом плеере и так работало на локальном компе.

Или по другому надо указывать? Можно пример?

undeddy
04.01.2006, 10:41
Самое интересное, что если во флеш передать строковое значение, например "true", то все работает, а если передать булеву величину, то все стопорится. Я выход нашел в том, чтобы во флеше сравнить не булевы величины, а строки.