Форум 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)
-   -   Передача значения переменной из JScript в AS (http://www.flasher.ru/forum/showthread.php?t=73672)

undeddy 28.12.2005 19:53

Передача значения переменной из 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

что сообщает сообщение об ошибке? с помощью чего ты отслеживаешь переменную во флеше?

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

Цитирую:
Цитата:

Сообщение от undeddy
надо вставить 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

Цитата:

Сообщение от undeddy
Не понял нового условия. Зачем вставлять префикс _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

Цитата:

Сообщение от Antares
В том, что путь надо указывать правильно в слэш-формате.

document.my_flash.SetVariable("/:my_data",my_Variable);
типа так? Тоже не работает... А в старом плеере и так работало на локальном компе.

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

undeddy 04.01.2006 10:41

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


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

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