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

peetuborn 21.07.2009 02:29

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

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

Код AS1/AS2:

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.p...1%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
Код AS1/AS2:

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

Цитата:

Сообщение от Wolsh (Сообщение 837462)
Вы внимательно прочитайте, что я написал. Вы сделали все наоборот.

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

Код AS1/AS2:

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 этим кодом у Вас картинка не загрузится. Должно быть
Код AS1/AS2:

container_mc2.container_mc.loadMovie("1.jpg");


peetuborn 23.07.2009 23:29

Вложений: 1
Цитата:

Сообщение от Wolsh (Сообщение 837514)
C этим кодом у Вас картинка не загрузится. Должно быть
Код AS1/AS2:

container_mc2.container_mc.loadMovie("1.jpg");



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

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

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

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


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

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