Форум 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=88065)

diezel555 16.11.2006 16:10

Мувик в контейнере
 
Проблем:не могу 1-сделать экземпляры мувиков. 2 - раскидать в контейнере на разную глубину
Код:

this.createEmptyMovieClip("my_mc",0);
var mcl:MovieClipLoader = new MovieClipLoader();
for(i=0;i<=10;i++){
        my_mc.createEmptyMovieClip("container_mc", this.getNextHighestDepth());
        mcl.loadClip("pics/"+i+".jpg", my_mc.container_mc);
        my_mc.container_mc._x=(i%10)*200;
        my_mc.container_mc._y=Math.round(i/10)*200;
        my_mc.onPress = function():Void
{trace("It works");}
}

Результат:1 выдает только последний мувик (как кнопку) 2 _x и _y не видит...:umnik2: Чо делать?

Guelder 16.11.2006 16:46

Единственное, на что обращается внимание - это распределение глубин. Меня тоже интересует - в такой записи this - это my_mc или _parent.my_mc. Если второй вариант - то но просто все мувики на одну глубину создает, поэтому остается только последний.

pkfun 16.11.2006 17:56

this в данном случае указывает на _root. Работает этот код так: при создании пустого мувика проверяется свободная глубина на _root. Т.к. на руте создавался только my_mc то следующая свободная глубина 1. Берется эта глубина, на ней уже в my_mc создается новый пустой мувик. В следующий проход все повторяется: опять проверяется _root, свободная глубина та же, так как на _root ничего нового не создавалось, и опять в my_mc на глубине 1 создается пустой мувик. Так он стирает предыдущий, созданный в my_mc на той же глубине.
К тому же, в my_mc создается пять пустых мувиков с одинаковыми именами. Если вы создаете одинаковые мувики с одинаковыми именами - флэш поступает очень просто - он не создает новые мувики. Кроме того, метод loadClip() загружает все картинки в один клип.

diezel555 17.11.2006 10:59

браты - спасибо за нотации - всё вышеуказанное я и сам понял. Лучче помогите кодом - 1 - как в цикле распределить на разную глубину и 2 -задать уникальные имена. И 3 - самое прикольное: присвоить мувикам свойства кнопки mc.onRelease()... Верю в Вашу отзывчивость и понимание трудностей начинающего флешера:)

diezel555 17.11.2006 12:12

Цитата:

Сообщение от pkfun
Кроме того, метод loadClip() загружает все картинки в один клип.

а какой тада метод использовать?:away:

pkfun 17.11.2006 14:16

Вложений: 1
Вложение 15797
Вот, пожалуйста, пример.

Код:

var mn:MovieClip = this;
var mc_main = mn.createEmptyMovieClip('my_mc', mn.getNextHighestDepth());
var mc_par:MovieClip;
var mc_par_podl:MovieClip;
var mc_par_pic:MovieClip;
//
var mcl:MovieClipLoader = new MovieClipLoader();
for (i=1; i<=5; i++) {
        mc_par = mc_main.createEmptyMovieClip("container_mc"+i, mc_main.getNextHighestDepth());
        mc_par_podl = mc_par.attachMovie('podl', 'podl'+i, mc_par.getNextHighestDepth(), {_alpha:50});
        mc_par_pic = mc_par.createEmptyMovieClip('pic', mc_par.getNextHighestDepth());
        mcl.loadClip("pics/tn"+i+".jpg", mc_par_pic);
        mc_par._x = i*70;
        mc_par._y = 1;
        mc_par_podl.onPress = function():Void  {
                trace("It works - "+this._parent);
        };
}

Немного поясню как работает:
На сцене создается мувик my_mc. Это основной мувик, в который будет производиться вся загрузка. В коде ссылка на него сохранена в переменной mc_main.
Далее, внутри my_mc, по циклу, создается мувиклип в который будет загружена картинка - container_mc №n. Ссылка на него сохранена в переменной mc_par. Внутри сontainer_mc №n создаются два мувиклипа:
- пустой мувиклип pic. В него будет происходить загрузка картинки. Ссылка на него сохранена в переменной mc_par_pic.
- мувиклип из библиотеки podl - он нужен для того чтобы картинка реагировала мышку. Дело в том, что картинка, загружаемая в клип, сама по себе не является мувиклипом и соответственно не может откликаться на события мувиклипа, в том числе на событие onPress. Пустой мувиклип в который эта картинка загрузится, так же не будет реагировать на события мышки, как будто он все еще остается пустым. Поэтому нужен стороний мувик, который выполнит эту функцию. Вам нужно самостоятельно изготовить такой мувиклип, он должен(хотя не обязательно ;)) совпадать по размерам с картинкой. В примере, я сделал такой мувиклип немного больше картинки. Ссылка на него сохранена в переменной mc_par_podl.

Код:

mc_par_podl.onPress = function():Void  {
                trace("It works - "+this._parent);
        };

Здесь задается реакция на событие onPress. Обратите внимание, что обращение к конкретному мувику-подложке, по окончании цикла, нужно производить через this. this будет указывать на конкретный мувик-подложку. Обращение к относительным мувиклипам осуществляйте с помощью _parent.

diezel555 18.11.2006 15:35

pkfun спасибо за помощь и удачи в работе и жизни!!!


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

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