PDA

Просмотр полной версии : чего-то не маскирует setMask()...


Aziz Zaynutdinoff
20.02.2006, 15:47
Суть проблемы такова:
Имеем мувик, созданный при помощи createEmptyMovieClip() [назовём его mask_mc], в котором рисуем прямоугольник/квадрат... затем создаём ещё один мувик [условно clip_mc], в который собственно говоря подгружаем SWF... Затем clip_mc.setMask(mask_mc)... и что ж? А ничего. Видим чёрный прямогульник/квадрат, а под ним загруженный мувик и никакого маскирования. Поднял много доки, вдоль и поперёк просмотрел сей форум... похожих ситуаций вроде как не застал.

Usnul
20.02.2006, 16:48
попробуй так
clip_mc.onEnterFrame = function(){
if(this.getBytesTotal()===this.getBytesLoaded()){
clip_mc.setMask(mask_mc);
}
}

хотя незнаю если честно =\
у меня такие же траблы были.. давно, если не решишь то пиши, я отрою старый проект - погляжу.

Aziz Zaynutdinoff
20.02.2006, 17:17
не работает.... к сожалению :(

meiciuc
20.02.2006, 17:21
форма записи верная clip_mc.setMask(mask_mc);

что значит ( в который собственно говоря подгружаем SWF) ? На момент команды setMask клип уже виден, если он подгружается? Проверяется его наличие? Если клип окончательно загрузится только после объявления маски, то и маска, соответственно, работать не будет.

если проверяется, значит проблема только в именах переменных.

Aziz Zaynutdinoff
20.02.2006, 17:57
форма записи верная clip_mc.setMask(mask_mc);

что значит ( в который собственно говоря подгружаем SWF) ? На момент команды setMask клип уже виден, если он подгружается? Проверяется его наличие? Если клип окончательно загрузится только после объявления маски, то и маска, соответственно, работать не будет.

если проверяется, значит проблема только в именах переменных.

ну как что значит... значит, что создаём пустой мувик

this.createEmptyMoviClip("mask_mc", this.getNextHighestDepth());
with(mask_mc){
beginFill(0x000000);
lineTo(0,20);
lineTo(20,20);
lineTo(20,0);
lineTo(0,0);
endFill();
}

this.createEmptyMovieClip("clip_mc", this.getNextHighestDepth());
clip_mc.loadMovie(this._urlToUpload);
clip_mc.setMask(mask_mc);


вот собственно квадрат по идее должен замаскировать подгруженный SWF-файл. Однако в итоге я вижу квадрат, под которым подгруженный SWF, причём выходящий за пределы этого квадрата, т.е. маскинг как таковой не выходит

meiciuc
20.02.2006, 18:53
смущает то, что маска не может быть в твоем случае под загруженным клипом, потому, что маску ты создал первой, значит она должна отобразиться как минимум под загружаемым клипом. Ты же сам его создал после маски, взяв следующую наибольшую глубину - верно?

this.createEmptyMoviClip("mask_mc", this.getNextHighestDepth());
фываывафы
this.createEmptyMovieClip("clip_mc", this.getNextHighestDepth());


вот практически твой код, только без линка и работает.


var mask:MovieClip = _root.createEmptyMovieClip("mask_mc", this.getNextHighestDepth());

mask.beginFill(0x000000);
mask.lineTo(0,50);
mask.lineTo(50,50);
mask.lineTo(50,0);
mask.lineTo(0,0);
mask.endFill();


var clip:MovieClip = createEmptyMovieClip("clip_mc", this.getNextHighestDepth());
clip.setMask(mask);
clip.attachMovie("asd","asd",0);


я не знаю, в какой последовательности и из каких мест были взяты куски из кода, но проблема все-таки в именах(в видимости клипов)

Aziz Zaynutdinoff
20.02.2006, 19:24
Так, видите ли, сударь, в чём дело:
Если использовать метод attachMovie, то всё как по маслу!, однако, если мувик подгружать сторонний, я имею в виду тот, оторого не было в библиотеке, то получается, что метод setMask() становиться просто-напросто условностью, ибо не работает... Может я и ошибаюсь, но к сожалению не вижу где именно!

Antares
20.02.2006, 19:25
Клади маску после инициализации 1го кадра загруженного. Подсказка для совсем ленивых: в обработчике onLoadInit ближайшего MovieClipLoader и используй setMask.

KidsKilla
20.02.2006, 19:27
охё...

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

meiciuc
20.02.2006, 19:41
1) Глубина клипа по сравнению с маской не важна.
конечно не важна, просто я пытался обратить внимание на то, что описание проблемы отличается от ожидаемого результата, согласно представленного кода, т.е. проблема не синтаксическая, а логическая.

Aziz Zaynutdinoff
20.02.2006, 19:44
Господа, всем спасибо за активное участие в помощи решения проблемы!
Нашёл простое решение :) Воистину «Умён — не значит не глуп!»


this.createEmptyMovieClip("clip_mc", this.getNextHighestDepth());
this.clip_mc.createEmptyMovieClip("ShowArea_mc", this.clip_mc.getNextHighestDepth());
this.clip_mc.ShowArea.loadMovie(this._urlToUpload);
this.createEmptyMovieClip("mask_mc", this.getNextHighestDepth());
with(this.mask_mc){
//рисуем маску
}
this.clip_mc.setMask(this.mask_mc)


Ныне мы маскируем мувик-родитель, а не сам загруженный мувик! Проще... И по ресурсам не особо жадно

OFF-top:
Тему можно закрывать