PDA

Просмотр полной версии : Почему не работает gotoAndStop ?


Nue
17.11.2006, 14:51
Здравствуйте.
Подскажите, кто сталкивался с аналогичной проблемой. Есть три закладки (три кадра), на каждой закладки свое подменю. При клике на закладку например 2 страница перезагружается, флэш считывает название текущей страницы и с помощью команды gotoAndStop отправляется на 2-й кадр. По сути, это работает, НО не правильно: при клике на закладку флэша НЕ ВИДНО, будто кадр 2 пустой (белый провал). Если перезагрузить страницу, то все ок. Но при клике на закладку 3 - так же история.
Спасибо.

iNils
17.11.2006, 17:35
Вы бы исходник дали.

FlashRus
18.11.2006, 16:31
Ты както объясняеш по "китайски".:wacko:
Наверно дело в том что gotoandStop довольно глюченая функция, попробуй воспользоваться GotoandPlay, но на каждом из трех кадров в Actions напиши Stop.:victory:

_sestra_
18.11.2006, 17:17
Ты както объясняеш по "китайски".:wacko:
Наверно дело в том что gotoandStop довольно глюченая функция, попробуй воспользоваться GotoandPlay, но на каждом из трех кадров в Actions напиши Stop.:victory:

Ты уверен что gotoAndStop глючная функция???!! Не распространяй не верную информацию

FlashRus
18.11.2006, 17:28
Могу привести доказательства скинув исходник!!!

iNils
18.11.2006, 17:29
Могу привести доказательства скинув исходник!!!
И чего ждем?

FlashRus
18.11.2006, 17:42
Только вы мне скажите как со своего компа исходники кидать!!!!:rolleyes:

_sestra_
18.11.2006, 18:01
Только вы мне скажите как со своего компа исходники кидать!!!!:rolleyes:

1) Нажимаешь кнопку "Ответ"
2) Внизу - "Управление вложениями"
3) Сверху открывшегося окна:
а) "Обзор"
б) "Загрузить"
4) "Ответить"

Kikasso
18.11.2006, 18:24
....gotoandStop довольно глюченая функция, попробуй воспользоваться GotoandPlay...
Кто эти оба люди? Они в твоем коде вообще не функции, потому что весьма чувствительны к региструБукв.
Сообщение от FlashRus
Только вы мне скажите как со своего компа исходники кидать!!!!"Сперва исходники в архивчик, WinRar сгодится, а потом как _sestra_ сказала.
Автор, давайте и вы исходник, с проблемой несомненно сталкивались, только пока непонятно с какой именно.

iNils
18.11.2006, 20:14
FlashRus, ну где же ваш исходник?

Nue
18.11.2006, 20:51
Вчера уже почти думала что все ок, но сегодня оно небъяснимо снова перестало рабоать. Я НЕ ЗНАЮ вообще, В ЧЕМ может быть проблема?! :"(((
Ахрив тяжелый, 700 кб опять же - ПОЧЕМУ? я удалила все лишнее, откуда там такой вес? ((( Форум такой файл не принимает.
Проблема в том что эта шутка рабоатет толкьо будучи закачанной на сайт.
Черт,полная беспомощность(((((

Nue
18.11.2006, 21:02
попробую объяснить...
есть меню для сайта - swf с 3 кадрами. На первой стр. сайта должена быть открыт 1 кадр. На 2 стр. сайта должена быть открыт 2 кадр. Как это сделать? Сделали так: флэш берет с сайта некую переменную под названием folder, которая определяет номер страницы. Во флэше код:


if (folder == "2") {
gotoAndStop(2)
}

if (folder == "3") {
gotoAndStop(3)
}

stop();

Заходит на первую стр. где по умолчанию виден кадр 1. Нажимаем ссылку на стр. 2, страница перезагружается, а флэш - белая область. Перезагружаемся: все ок, виден флэш открый на 2-м кадре.
От чего может быть аткой глюк??? Помогие пожалуйста...

Kikasso
19.11.2006, 11:25
Флеш пишет в *.fla все что ты делаешь. Чтобы уменьшить размер, есть команда file -> save And Compact.
На худой конец, залей архив еще куда-нибудь (временно), а сюда ссылку.
А как флеш берет переменную? Через flashvars или из адресной строки?

FlashRus
19.11.2006, 12:47
Он мне какоето борохло пишет: Браузер защищен или требует активации.

Kikasso
19.11.2006, 14:30
кто тебе это пишет???
качни себе нормальный броузер -
отсюда http://www.mozilla.com/en-US/
отсюда http://www.opera.com/download/
отсюда http://maxthon.com/

Nue
19.11.2006, 16:03
Kikasso

это он после compact такой, а так больше был ;(
это ссылка на fla: http://***********/466706 флэш 8, 760 кб.
Пременная берется из адресной строки.

Еще странность в том что в Опере оно работает без глюков, а в Файрфоксе вообще не работает. Т.е. понимаете, я курочу этот флэш несчастный, а оно РАБОТАЕТ - как надо, блин, в Опере, так получается проблема может в Эксплорере и я ее тогда терзанием флэша не решу вообще?? Но делать сайто на под экспоррер........ ((((((

И еще, (может это имеет значение?) картинки во флэш я вставляла прямо из Корэла. Когда картинок на кадрах не, то все ОК. Когда картинки начинает постепенно добавлять, оно все глючнее, анпр, вставиш 3 картикни, когда открывается нужный кадр - там половина информации.

Kikasso
19.11.2006, 17:12
Красивенько.. У тебя все ссылки на php. Хорошо, значит пускай у тебя php впечатывает в object/embed следующюю строчки
:
<object ....
<param name="FlashVars" value="folder=RuLegal" />
<embed FlashVars="folder=RuLegal" .....

они оказываются прямиком в руте.
Еще лучше - использовать SWFObject, не надо будет "активировать" содержание.
----
О ЧЕРТ!! КОСЯК!! исправил.

Kikasso
19.11.2006, 17:18
насчет корела - могут быть глючки, согласен. Если глючит - рендери в png, и в библиотеке настрой способ компресии.
Если опера открывает, все должно быть прекрасно. Что-то значит не так с версткой. swfobject решит проблему.

Nue
19.11.2006, 17:30
Kikasso
я вам ОЧЕНЬ признательна за помощь!!!!

а что такое swfobject ?????? *стыдно*
я ничего не понимаю... что такое рут... что такое "активировать" содержание....

Kikasso
19.11.2006, 17:51
все правильно. Вставляй туда параметр flashvars и эти переменные окажутся в руте.
насчет программирования. У тебя там все ссылки ведут на php, так пускай программист и вставляет нужные параметры.
swfobject - это, сорри, в поиск.
модный джаваскрипт который впечатывает флеш в html.

Kikasso
19.11.2006, 18:05
http://blog.deconcept.com/swfobject/ <- то что ты ищешь
pут - это _root , т.е. там где тебе надо, главный таймлайн.
"активировать содержание" - это когда надо по каждому флешу кликнуть мышкой, чтобы убралась серая рамочка. Открой эту страницу в iE, обнови и наведи мышку на рекламу школы компьбтерной графики наверху.

Kikasso
19.11.2006, 18:25
если тебе таки надо получить переменные из адреса флеша, делай так:
var str = "";
if (_root._url.lastIndexOf("?") > 2) str = _root._url.substring( _root._url.lastIndexOf("?")+1);
var pairs = str.split("&"), linkObj = {}, tmpArr = [], tmpStr = "";
while (pairs.length){
tmpStr = pairs.pop();
tmpArr = tmpStr.split("=");
linkObj[tmpArr[0]] = tmpArr[1];
}
var folder = linkObj['folder'];
if (folder == "RuLegal") { gotoAndStop(2) }
if (folder == "RuReins") { gotoAndStop(3) }
stop();

у меня работает.

Nue
20.11.2006, 12:47
Kikasso
ой, мммамммма.... 8-0
*поклон*
*ушла пробовать*

Kikasso
20.11.2006, 14:12
я там накосячил в посте #17 (http://www.flasher.ru/forum/showpost.php?p=589196&postcount=17)
исправленому верить
а тут все просто: _url внутри флеша = src в html
далее взять от '?' до конца строки, разбить по '&' и попарно по '='
у тебя может быть много параметров.

Nue
20.11.2006, 15:22
Kikasso
дык пост 17 не изменился! тот код к-й я сохранила 1-й раз - он щас точно такое же?! 8-0
Переменную он БЕРЕТ! он... я ничего не понимаю
Пробовала переделывать картинки, чтоб не из Corel были, а просто jpg.
Все равно не работает.
милый Kikasso! у меня же волосы дыбом встают когда я вижу такие коды! Пожалуйста,скажите, В ЧЕМ У МЕНЯ ОШИБКА? перменную-то флэш находит? зачем брать чтото из адреса флэша? :( *ага,я знаю эту шутку"ошибка в днк"(((( *

Kikasso
20.11.2006, 15:35
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="900" height="106" id="MENU_ready2" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="MENU_ready2.swf?folder=RuLegal" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />
<embed src="MENU_ready2.swf?folder=RuLegal" quality="high" bgcolor="#ffffff" width="900" height="106" name="MENU_ready2" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
Это в html.
пост #22 во флеш.
Все работает.
---------------------------
flashvars и swfobject оставь на потом, когда волосы осядутся.
Сорри, я сам тебя запутал - прислал половину =))
Какие там коды? Разве на джаваскрипте пишут не так же? До вечера. Успехов.

Nue
20.11.2006, 15:36
а если ну его нафиг и сделать 3 разных флэша и 3 разных шаблона?.. :-/

Kikasso
спасибо, спасибо... я еще попытаюсь и если что, ... то посмотрим. Спасибо.

Kikasso
20.11.2006, 15:40
Никогда не сдавайся раньше времени. Сперва попробуй. Пока.
Можно, конечно, и 9 флешей делать, а потом редизайн нагрянет? лучше не надо.

Kikasso
20.11.2006, 16:29
АА. вроде бы понял. Из url переменная просто не успевает передаться!
с flashvars такого не бывает.. Раскидал код по кадрам, все ок. Вот твое добро обратно. Чорт, не лезет. качай отсюда (http://xstein.spb.ru/test/test.rar)
Вечером я его там прибью.
Так что учи матчасть (flashvars). Это настолько элементарно, что даже не верится. И работает всегда без нареканий, потому что флеш уже при рождении имеет эти переменные, а на _url он смотрит уже позже. Во всяком случае, в мозилле.

Kikasso
21.11.2006, 04:15
Давайте я разжую. Классический пример грабель по лбу - все с виду нормально, ошибаться негде, ничего не работает.
Итак, что происходит? Флеш видит обращение с свойству _url. Пока не получено значение этого свойства, выполнение куска кода, который прямо это значение использует, приостанавливается. Кусок кода 1.
var str = "";
if (_root._url.lastIndexOf("?") > 2){
str = _root._url.substring( _root._url.lastIndexOf("?")+1);
}
var pairs = str.split("&"), linkObj = {}, tmpArr = [], tmpStr = "";
while (pairs.length){
tmpStr = pairs.pop();
tmpArr = tmpStr.split("=");
linkObj[tmpArr[0]] = tmpArr[1];
}

кто не понял - если мы вставили swf в html таким образом:<embed src="path/movie.swf?var1=val1&var2=val2&folder="RuReins" ...
то у нас должно получитсяlinkObj['var1'] == "val1";
linkObj.var2 == "val2";
linkObj["folder"] == "RuReins" Далее самое интересное. Срабатывает оптимизация вычислений. Остальной код напрямую это свойство не использует, так что он продолжает выполняться. Ключевое место помечено желтым. Вместо ожидаемой величины в folder пишется undefined, так как верхняя часть кода отложена до выяснения. Это выяснение наступает очень скоро, и значение folder неожиданно изменяется, причем прямо посреди проверки! Видимо, эта переменная помечена плеером как сомнительная. В контрольное текстовое поле пишется то, что мы хотели там увидеть, а в броузерах разных версий ловим разные глюки. В FF я увидел вообще шедевр (приложено). Кусок кода 2:

var folder = linkObj['folder']; //<-undefined
if (folder == "RuLegal") { gotoAndStop(2) }
if (folder == "RuReins") { gotoAndStop(3) }
stop();
check_txt.text = folder; // <- а вот здесь уже все нормально.

Так как же избежать таких историй?
В нашем случае я тупо добавил кадр, в который перекинул первый кусок кода - и все сработало. (при обращении в службу техподдержки держите под рукой номер договора) Сейчас, когда понятно в чем дело, приходит на ум другое решение, более тонкое - отложить до выяснения весь код. Например так: var str = _root._url;
if(str){
// тут мы дробим строчку
// тут мы переходим в нужный кадр
};
Все это не очень удобо. Слава макродобии, у нас есть FlashVars, и все, что мы там запишем, появится в руте изначально. А от всего кода останется только кусок 2.