Форум 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)
-   -   Переходы по кадрам и loadMovie (http://www.flasher.ru/forum/showthread.php?t=205213)

ArtDenis 25.11.2013 11:52

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

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

Код AS1/AS2:

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
Код AS1/AS2:

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
Код AS1/AS2:

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

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

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

ArtDenis 26.11.2013 08:59

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

Hauts 26.11.2013 09:53

Флэша под рукой нет. Но помочь могу.

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

Код AS1/AS2:

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

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

Код AS1/AS2:

_global.loadNewMovie("someMovie")

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

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

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

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

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

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

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

ArtDenis 27.11.2013 21:05

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

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

_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:
Код AS1/AS2:

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

А там где в "demo":
Код AS1/AS2:

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 как взлетный режим при плоском штопоре в секундной высоте над землей.


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

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