Форум 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;
 
};



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

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