PDA

Просмотр полной версии : Переходы по кадрам и loadMovie


ArtDenis
25.11.2013, 11:52
Добрый день, у меня следующая проблема:
Есть главный файл - main.swf в нем есть 4, так скажем экрана, или кадра с метками (titul, work, modul, demo)

Мы переходим в этом файле в modul, и там нажимаем на кнопку, где вызывается открытие work и туда грузится второй файл -Россия.swf, следующим кодом:
Код ActionScript 3

on(release){
_root.gotoAndStop("work");
_root.emty_mc.unloadMovie();
_root.emty_mc._x = 85;
_root.emty_mc._y = 100;
_root.emty_mc.loadMovie("content/Россия.swf");
}

Отлично, тут все работает...

Теперь в файле Россия.swf мы имеем кнопку, со следующим кодом:
Код ActionScript 3
on (release) {
_root.gotoAndStop("demo");
_root.emty_mc_demo.unloadMovie();
_root.emty_mc_demo._x = 127;
_root.emty_mc_demo._y = 97;
_root.emty_mc_demo._width = 900;
_root.emty_mc_demo._height = 500;
_root.emty_mc_demo.loadMovie("content/scrolling_movie_clip.swf");
_root.emty_mc_demo._lockroot = true;
}

При этом происходит следующее: кнопка работает, нас перебрасывает на наш demo, только ничего в наш emty_mc_demo не грузится, и мы видим просто красную площадку в которую должен был загрузится scrolling_movie_clip.swf

А теперь, что я выявил, если на кнопку в нашей Россия.swf повесить вместо верхнего кода, вот этот:
Код ActionScript 3
on (release) {
_root.gotoAndStop("work");
_root.emty_mc.unloadMovie();
_root.emty_mc._x = 127;
_root.emty_mc._y = 97;
_root.emty_mc._width = 900;
_root.emty_mc._height = 500;
_root.emty_mc.loadMovie("content/scrolling_movie_clip.swf");
_root.emty_mc._lockroot = true;
}

То он отлично, не перебрасывая на другой кадр (work - это там же, где и был загружен файл Россия.swf, причем как Россия так и новый файл грузится в emty_mc), загружает файл. То есть все работает...

В чем может быть проблема? Как её решить?

Так как, я являюсь любителем, и что-либо мог не верно обозвать, выкладываю скрины:
30209
30208

alexcon314
25.11.2013, 12:10
Проще выложить исходник .fla вместо тучи скринов.

Hauts
25.11.2013, 12:21
ArtDenis, не совсем понятно, что у вас не получается.

Сформулируйте, пожалуйста, свою проблему в одном лаконичном предложении.

ArtDenis
25.11.2013, 19:25
У меня не получается загрузить 2внешний ролик в главный из 1внешнего ролика, загруженного в главный. При том что, если грузить 2внешний ролик в тоже место где загружен 1внешний ролик - все работает.

Выкладываю исходник:
30212
Здесь надо нажать на большую надпись "Всемирная история" -> "Россия" -> справа будет кнопка "Анимация"
После того как нажмем, увидим что не так...
Затем надо нажать назад - треугольник слева, попадем опять на титульную, там выбрать "Аннотацию" - увидим как должно быть...

ArtDenis
26.11.2013, 08:59
Люди, никто не может помочь?
Очень нужно решить эту проблему...

Hauts
26.11.2013, 09:53
Флэша под рукой нет. Но помочь могу.

В основной флэшке пропишите метод для загрузки роликов в глобальной области видимости:


_global.loadNewMovie = function(src){
// тут код для загрузки ролика
}


И из загруженной, вызывайте:


_global.loadNewMovie("someMovie")


Это прям на скорую руку, если.

В общем, поменяйте немного устройство. Я так понимаю, что вы из загружаемого ролика пытаетесь управлять основным, перекидывать его на нужный кадр, загружать в клип основного ролика что-то.

А поменять следовало бы на то, что вы не контролируете основной (родительский ролик), а, скорее, просите его, мол, "давай теперь покажем то-то".

Для этого я и предлагаю вам написать метод в глобальной области видимости. Он будет доступен изо всех уровней, в том числе и из загружаемых роликов.

Передаете, к примеру, в этот метод "work", внутри метода определяется, на какой кадр основной временной шкалы основного ролика нужно перейти, что загрузить.

Таким образом, у вас будет централизована загрузка. Вам не нужно будет править все подгружаемые ролики в случае, если поменяются пути.

Вы, кстати, не преподавателем работаете?

ArtDenis
27.11.2013, 21:05
Hauts, огромное Вам спасибо) Направили в нужное русло, причем понятным языком)
Функции должны знать все)
Я не работаю преподавателем, я студент, недавно устроился на работу, пишем такие учебники, как на скрине, для школьников)

Может кому-нибудь пригодится расписанное решение:
1. На основном (main) ролике в первом слое "actions" создал две функции, они ничего не возвращают:

_global.loadNewMovieWork = function(src){
_root.gotoAndStop("work");
_root.emty_mc.unloadMovie();
_root.emty_mc._x = 85;
_root.emty_mc._y = 100;
_root.emty_mc.loadMovie(src);
_root.emty_mc._lockroot = true;
}

_global.loadNewMovieDemo = function(src){
_root.gotoAndStop("demo");
_root.emty_mc_demo.unloadMovie();
_root.emty_mc_demo._x = 127;
_root.emty_mc_demo._y = 97;
_root.emty_mc_demo._width = 900;
_root.emty_mc_demo._height = 500;
_root.emty_mc_demo.loadMovie(src);
_root.emty_mc_demo._lockroot = true;
}


2. А теперь для кнопок, причем не важно где они находятся, там где надо загрузить файл в "work" вызываем функцию loadNewMovieWork:

on(release){
_global.perem = "content/Россия.swf";
_global.loadNewMovieWork(perem);
}

А там где в "demo":

on(release){
_global.perem = "content/scrolling_movie_clip.swf";
_global.loadNewMovieDemo(perem);
}


Еще раз, огромное спасибо за помощь))))

Hauts
28.11.2013, 09:16
Ну.. это не совсем то, но если работает, то и ок. Тут уж не до правильности, как я понимаю.

Добавлено через 51 минуту
Я не работаю преподавателем, я студент, недавно устроился на работу, пишем такие учебники, как на скрине, для школьников)

Мне, честно говоря, немного жаль школьников. Вам бы толкового дизайнера с неплохим знанием ас найти, вот тогда было бы лучше намного. Ну или просто толкового дизайнера, запрогать такой примитив всегда можно.

dark256
28.11.2013, 13:49
_global - это как глас вопиющего в пустыне.
Когда ничего не помогает, и непонятно как быть? :)

Код поработает немножко и перестанет. Все не так сделано.
Рекомендую призадуматься сразу, а не когда уже будет написано неск тысяч строк кода....

Hauts
28.11.2013, 15:39
dark256, да, _global как взлетный режим при плоском штопоре в секундной высоте над землей.

ArtDenis
28.11.2013, 16:32
dark256, совет принял, а вот много строчек кода, их там не будет...

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

А на счет все не так сделано, и то что _global - взлетный режим, поделитесь, если не трудно как нужно, и как правильно..., там всего то 20 строчек кода во всей книге...

Hauts
28.11.2013, 16:55
ArtDenis, пара моментов:

1. Это не совсем по теме, но как-то уж некруто делать такого качества учебный материал. При этом дизайнер (или кто там делал) потрудился нарисовать убогие градиенты, добавил фильтров на текст и т.д.

Тем более сами возможности технологии вам позволяют сделать реально классно. И это не вопрос денег, это, скорее, вопрос отношения к тому, чем занимаешься.

А насчет школьников, — да, им, как мне кажется, без разницы на такой дизайн. Ибо дизайн такого качества повсюду в поседневной жизни. Но им было бы не все равно, если бы их учебный материал был бы высокого качества, понятный, очевидный, доходчивый и красивый, в конце концов. По крайней мере мне хочется в это верить.

2. Делать правильно.. Тут в двух словах не рассказать. Это отдельные темы: про загрузку, про архитектуру и т.д.

ArtDenis
28.11.2013, 17:50
Hauts, ну я тогда, был бы рад ссылке или какому-либо материалу про "делать правильно"...
Ну и было бы интересно увидеть достойный дизайн с приличными возможностями)
Буду очень благодарен...