Форум 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)
-   -   Переход в определенное место скролла. (http://www.flasher.ru/forum/showthread.php?t=179502)

KHVshNic 16.05.2012 10:45

Переход в определенное место скролла.
 
Здравствуйте, создаю что-то типо глоссария, перечень терминов, и надо по клику на термин, перейти к месту в лекции, где говорится от этом термине.

Лекция находится в другом swf, в скрол(стандартный) подгружается мувик с ней.
Я так понимаю, надо как то считывать координаты скролла и к определенному месту переходить. Но как это реализовать, ничего не нашел(

dark256 16.05.2012 10:52

А никак. Что у вас там в скролле?
Текстовый блок? Позицию слова по У вы из него не получите.

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

В любом случае проще отойти от стандартного скролла.

KHVshNic 16.05.2012 11:41

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

dark256 16.05.2012 11:48

Открываете FLA файл мувиклипа с текстами изображениями и проч.
Добавляете клипы-маркеры. Обзываете их ahchor_1, ahchor_2... ahchor_N

Клику на термине сопоставляете имя соответствующего якоря.
Определяете ahchor_i._y - и двигаете скролер до этой отметки.

KHVshNic 16.05.2012 11:56

эм..да, но "как" добавить маркер клипа? ни в компонентах ни в командах я такого не встречал.
В гугле тоже ничего не нашел

dark256 16.05.2012 14:38

ОТкрыть для редактирования и врисовать туда кружочки :)
Кружочек выделить, нажть Ф8 и дать имя. Не забыв также дать имя клипу на холсте.

KHVshNic 17.05.2012 07:44

Сделал якорь, дал имя.
_Y равен 1530. на это положение мне нужно перейти.
Поскольку ничего такого не нашел, шаманил над скриптом, но все чего смог добится, это подгрузить лекцию, но скрол отображает все навно с нулевой позиии.
Код AS1/AS2:

on (press) {
        _root.q = 55;
        this._root.container_mc.loadMovie("Lection1.swf",0);
        unloadMovieNum(1);
        _root.ScrollPane._y = 1530;
 
}

что я не так делаю?

Hauts 17.05.2012 08:11

Цитата:

что я не так делаю?
— пишите код не в кадрах и используете устаревшие методы.

Вместо клипа с кодом лучше делать клип с instance name и в кадре уже прописывать к нему код.

Вместо loadMovie лучше использовать MovieClipLoader, потому, что loadMovie, насколько я помню, обнуляет и делает дефолтными значениями то, что было назначено клипу до того, как в него что-то загрузилось.

KHVshNic 17.05.2012 08:32

Пробую Клип лоадером, но неперь не понимаю как начинать сцену с 55 кадра ((
Код AS1/AS2:

bt1.onRelease = function()
{
        unloadMovieNum(1);
        var mcLoader:MovieClipLoader = new MovieClipLoader();
        mcLoader.loadClip("Lection1.swf",0);
        _root.ScrollPane._y = 1530;
 
};

пробовал
Код AS1/AS2:

bt1.onRelease = function()
{
        unloadMovieNum(1);
        var mcLoader:MovieClipLoader = new MovieClipLoader();
        _root.q = 55;
        this._root.mcLoader.loadClip("Lection1.swf",0);
        _root.ScrollPane._y = 1530;
 
};

ничего не происходит.
p.s.Ну и пока, все так же, с нулевого значения лекция начинается( на 1530 не переходит.

Hauts 17.05.2012 08:43

Код AS1/AS2:

bt1.onRelease = function()
{
        unloadMovieNum(1);
        var mcLoader:MovieClipLoader = new MovieClipLoader();
        _root.q = 55;
        this._root.mcLoader.loadClip("Lection1.swf",0);
        _root.ScrollPane._y = 1530;
 
};

this._root - указывает на _root, на основную временную шкалу. А саму переменную mcLoader вы создаете в функции onRelease. Зачем вам искать mcLoader на основной временной шкале, если она уже у вас вот, прям в предыдущей строке создана? Просто и обращайтесь к mcLoader без всяких this._root.

"this._root", кстати, неправильная конструкция, забудьте это :)

Код AS1/AS2:

this._root.mcLoader.loadClip("Lection1.swf",0);

— тоже неправильно. Почитайте внимательнее хэлп. 0 (ноль) не может выступать в качестве целевого клипа, в который загружается что-либо. Вторым параметром должен быть не 0, а ссылка на клип. Например, можно положить на основную временную шкалу пустой мувиклип, дать ему instance_name = "loader_box" b азгружать так:
Код AS1/AS2:

bt1.onRelease = function()
{
        var mcLoader:MovieClipLoader = new MovieClipLoader();
        _root.q = 55;
        mcLoader.loadClip("Lection1.swf", _root.loader_box);
        _root.ScrollPane._y = 1530;
 
};


KHVshNic 17.05.2012 08:55

попробовал без this._root
просто mcLoader.loadClip("Lection1.swf",0);
все равно начинается с первого кадра.
Возможно стоило сказать, что у меня сделано было так, я на главной сцене создаю пустой контейнер
Код AS1/AS2:

this._lockroot = true;
this.createEmptyMovieClip("container_mc",0);
stop();

кнопке писал так
Код AS1/AS2:

on (press) {
        _root.q = 55;
        this._root.container_mc.loadMovie("Lection1.swf",0);
}

а в лекции в кадре писал так
Код AS1/AS2:

if (_root.q!=0){
        gotoAndPlay(_root.q);
 
}

Таким образом, у меня все работает, переходит на нужный кадр, н ос вашим MoveCliploader'ом я чет запутался.

Добавлено через 7 минут
Код AS1/AS2:

bt1.onRelease = function()
{
        var mcLoader:MovieClipLoader = new MovieClipLoader();
        _root.q = 55;
        mcLoader.loadClip("Lection1.swf", _root.loader_box);
        _root.ScrollPane._y = 1530;
 
};

Этот код работает) переходит на 55 кадр.Впринципе почти так же как уменя и было.
Но я до сих пор не могу перейти на 1530 положение.
Может я с путем соврал?
На главной сцене скролл, идентификатор - ScrollPlan
в скрол грузится мувик - s1
уже в мувике, сделал этот якорь и именем ahchor_1.
Где можно прочитать может про создание таких переходов?

Hauts 17.05.2012 09:13

Вам ведь нужно по нажатию на кнопку загружать на основную временную шкалу какую-либо флэшку и устанавливать ее на необходимый кадр, я правильно понимаю?

KHVshNic 17.05.2012 09:18

Да. и чтобы скролл отображал лекцию не с начала а с заданного места.
И выгрузить с 1 уровня этот чертов глоссарий.((

Добавлено через 38 минут
Блин, ничего не выходит. сделаю обычный список терминов и просто ссылку на нужную лекцию.


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

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