PDA

Просмотр полной версии : Программная маска


peetuborn
21.07.2009, 02:29
Приветсвую. Я далек от програмирования, но нужно каким то образом разобраться в возникшей проблеме. Облазил форум, но решить мою задачу это не помогло.

Не работает програмная маска

createEmptyMovieClip("container_mc",1000) //Контейнер
container_mc._x=0
container_mc._y=0

attachMovie("mask_m","mask_m",1001) //Маска
mask_m._x=15
mask_m._y=15
mask_m._alpha=0

container_mc.setMask(mask_m);

loadVariables("text.txt", "_root"); //Подгружаю текст

container_mc.loadMovie("1.jpg",1002); //Подгружаю картинку

attachMovie("content_txt","content_txt",1003) //Фон под текст
content_txt._x=15
content_txt._y=15

Маска простая - круг=))

http://flasher.ru/forum/showthread.php?t=127673&highlight=%CD%E0%EB%EE%E6%E5%ED%E8%E5+%EC%E0%F1%EA%E8&page=2 - эта тема не помогла с ответом на вопрос.

Если делать не програмно, то маска работает. (Правда, нужно будет разобраться до конца с подгрузкой текста и растягиванием прямоугольника под ним в зависимосте от размера текста, но это уже дело 2ое=)))

Буду признателен за помощь в данном вопросе.

Avid
21.07.2009, 04:22
если это код прямо из сценария, то поставь разделители после свойств(;),
маска и маскируемый клип не обязательно должны быть на разных слоях , если ты используешь attachMovie.
container_mc.loadMovie("1.jpg",1002) это что? напиши container_mc.loadMovie("1.jpg");
вобщем у тебя видимо проблема вся в синтаксисе, скачай себе AS Language Reference, он есть на форуме тут, очень поможет,там толково описаны все методы классы,методы,свойства и операторы.

iflamberg
21.07.2009, 12:07
Что вообще она должна у тебя перекрывать?
В твоем коде получается что маска перекрывает загруженный 1.jpg, а фон под текст лежит сверху над маской.


Попробуй для начала потренироваться на элементарных примерах, а потом добавляй новые и новые элементы

attachMovie ("container","container",getNextHighestDepth());
attachMovie ("mask","mymask",getNextHighestDepth());

container.setMask(mymask);

Wolsh
21.07.2009, 15:33
Здесь нет ошибки с глубинами (контейнер, в который грузится картинка - внизу), здесь самая обычная ошибка - действия делаются ДО загрузки в контейнер. А после загрузки, естественно, он знать не знает что у него есть маска - собственно, она есть не у него, а у ТОГО контейнера, каким он был раньше. После загрузки это уже другой клип - тот, что загружен (на картинках это не очень понятно, но представь что ты загрузил туда файл свф - твой контейнер теперь и есть этот клип свф, а не клип свф внутри контейнера)))) Путано?
Как вариант - засунь контейнер в еще один, теперь уже действительно "контейнер", и назначь маску ему, а грузи во внутренний.
И альфа для маски у тебя - это зачем?

iflamberg
21.07.2009, 15:38
а, да, да, у AS2 есть такая "фишечка".

peetuborn
22.07.2009, 23:01
Наконец дорвался до форума. Спасибо большое за помощь, сейчас буду пробовать)

UPDATE
attachMovie ("container_mc2","container_mc2",getNextHighestDepth());
container_mc2.attachMovie("container_mc","container_mc",getNextHighestDepth());
attachMovie ("mask_m","mask_m",getNextHighestDepth());

container_mc.setMask(mask);

loadVariables("text.txt", "_root");

container_mc.loadMovie("1.jpg");

attachMovie("content_txt","content_txt",getNextHighestDepth());

Засунул все еще в один контейнер... Всеравно не хочет=(

Wolsh
23.07.2009, 01:29
Вы внимательно прочитайте, что я написал. Вы сделали все наоборот.

peetuborn
23.07.2009, 01:52
Вы внимательно прочитайте, что я написал. Вы сделали все наоборот.

Делаю еще один контейнер 2, в него ставлю контейнер 1 с картинкой. Далее накладываю маску на контейнер 2. Вроде все правильно понял...)

attachMovie ("container_mc2","container_mc2",getNextHighestDepth());
container_mc2.attachMovie("container_mc","container_mc",getNextHighestDepth());
attachMovie ("mask_m","mask_m",getNextHighestDepth());
container_mc.loadMovie("1.jpg");
container_mc2.setMask(mask);

Wolsh
23.07.2009, 12:17
C этим кодом у Вас картинка не загрузится. Должно быть
container_mc2.container_mc.loadMovie("1.jpg");

peetuborn
23.07.2009, 23:29
C этим кодом у Вас картинка не загрузится. Должно быть
container_mc2.container_mc.loadMovie("1.jpg");



Сделал вручную, ибо почему то картинка грузится в контейнер 2...=)

PS: Теперь мучает другой вопрос, допустим у меня есть папка с картинками (1.jpg, ....jpg итд.) Подскажите пожалуйста о чем нужно читать (искать информацию) для того, чтобы при появлении файла 2.jpg в папке у меня создавался следующий контейнер уже с картинкой 2 и смещением координат допустим на 300 пикселей.

Вообщем пытаюсь сделать что то типа галереи...

PS: Во вложение то, что в итоге у меня получилось...

Wolsh
24.07.2009, 02:02
Для начала совет - забудьте про безнадежно устаревший еще в шестом флэше loadMovie. Есть специальный класс для загрузки изображений и клипов свф - MovieClipLoader. Вот про него и почитайте, иначе никакой галереи не получится. А чтобы получилась действительно Галерея, почитайте еще и про BitmapData. (А лучше уж сразу ас3, оставьте ас2 для банеров и заставок).
А по поводу "чтобы при появлении файла 2.jpg в папке..." - это только php на сервере.
Соответственно берем учебник по РНР и учим(( Ну и готовимся оплатить хостинг с поддержкой РНР))

peetuborn
25.07.2009, 13:15
Спасибо большое. Буду теребить знакомого програмиста=)))