Volledige versie bekijken : setMask werkt niet
behived
%Europe/Berlin %600 %2005, 15:24
kan er iemand even uitleggen hoe ik de setMask functie aan de praat krijg, want dit lukt mij dus niet...
Dauntless
%Europe/Berlin %608 %2005, 15:36
InstanceNaamVanMovieClipDieJeWilMasken.setMask(Ins tanceNaamVanMovieClipDieJeAlsMaskWiltGebruiken);
->
myMc.setMask(mask_mc);
En in de help files staat:
Usage
my_mc.setMask(mask_mc:Object) : Void
Parameters
my_mc The instance name of a movie clip to be masked.
mask_mc The instance name of a movie clip to be a mask.
...
Wat snap je er dan niet aan?
behived
%Europe/Berlin %614 %2005, 15:44
heb het even uit mijn project gehaald en apart gesimuleerd en het werkt inderdaad zoals het zou moeten :I
nu heb ik drie movieclips aangemaakt met action script:
//maak movieclip die pictures omlijnt
this.createEmptyMovieClip("lines",this.getNextHighestDepth());
//teken wit vierkant in mc lines
lines.beginFill(0xFFFFFF, 100);
lines.moveTo(0, 0);
lines.lineTo(0, 100);
lines.lineTo(100, 100);
lines.lineTo(100, 0);
lines.lineTo(0, 0);
lines.endFill();
//maak movieclip waar pictures worden ingeladen
this.createEmptyMovieClip("container",this.getNextHighestDepth());
//maak movieclip die picture zal "masken"
duplicateMovieClip("lines","maskit",this.getNextHighestDepth());
container.setMask(this.maskit);
dit werkt dus niet...
tot nu toe had ik dus dit en wou maskit de container mc laten masken
//maak movieclip die pictures omlijnt
this.createEmptyMovieClip("lines",this.getNextHighestDepth());
//teken wit vierkant in mc lines
lines.beginFill(0xFFFFFF, 100);
lines.moveTo(0, 0);
lines.lineTo(0, 100);
lines.lineTo(100, 100);
lines.lineTo(100, 0);
lines.lineTo(0, 0);
lines.endFill();
//maak movieclip waar pictures worden ingeladen
this.createEmptyMovieClip("container",this.getNextHighestDepth());
//maak movieclip die picture zal "masken"
duplicateMovieClip("lines","maskit",this.getNextHighestDepth());
container.setMask(this.maskit);
//stel teller in
i=1
//maak de functie
var My_mc1:MovieClipLoader = new MovieClipLoader();
var myListener:Object = new Object();
//functie voor als foto ingeladen is
myListener.onLoadComplete = function () {
function resizer () {
container._x=(Stage.width-container._width)/2
maskit._x=(Stage.width-maskit._width)/2
lines._width+=(container._width+10-lines._width)/5
lines._x=(Stage.width-lines._width)/2
}
intervalID=setInterval(resizer,20);
}
//functie als foto niet bestaat
myListener.onLoadError = function () {trace("vind het bestand niet")}
My_mc1.addListener(myListener);
My_mc1.loadClip("foto"+i+".jpg",container);
Dauntless
%Europe/Berlin %616 %2005, 15:47
Ik weet niet zeker of je op die manier wel dynamisch ingeladen images kunt masken...
behived
%Europe/Berlin %623 %2005, 15:58
is er dan een andere manier die wel zou werken?
behived
%Europe/Berlin %666 %2005, 16:59
heb een movieclip met een vierkant in op de scene gezet met instance name maskit, nu werkt het wel....
jammer dat een dynamisch gemaakte mc niet werkt
Dauntless
%Europe/Berlin %679 %2005, 17:18
Ok... euhm, dat zou wel moeten werken :s
Stukje code uit m'n vuurwerk file:
//nieuwe mc maken om de graphic in te zetten
this.createEmptyMovieClip("graphic", depth ++);
this.graphic.attachMovie("cartoon", "cartoon", depth ++);
//nieuwe mc maken die als mask dient
this.createEmptyMovieClip("mask", depth++);
//de mask op de graphic zetten
this.graphic.setMask(this.mask);
En die werkt...Het moet dus ergens anders aan liggen...
Roenes
%Europe/Berlin %691 %2005, 17:35
Komt het niet doordat je content inlaad in je container? Op het moment dat je content binnen is, vervallen toch alle voorgaande acties op je mc. onEnterFrame's ed. Dus ff je setMask regel in de onLoadComplete zetten, helpt dat toevallig? :)
behived
%Europe/Berlin %349 %2005, 09:22
roenes you are a genius!!
speed=20
//maak movieclip die pictures omlijnt
this.createEmptyMovieClip("lines",this.getNextHighestDepth());
//teken wit vierkant in mc lines
lines.beginFill(0xFFFFFF, 100);
lines.moveTo(0, 0);
lines.lineTo(0, 100);
lines.lineTo(100, 100);
lines.lineTo(100, 0);
lines.lineTo(0, 0);
lines.endFill();
//maak movieclip waar pictures worden ingeladen
this.createEmptyMovieClip("container",this.getNextHighestDepth());
//maak mask
lines.duplicateMovieClip("maskit",this.getNextHighestDepth());
//stel teller in
i=1
//maak de functie
var My_mc1:MovieClipLoader = new MovieClipLoader();
var My_mc2:MovieClipLoader = new MovieClipLoader();
var myListener:Object = new Object();
//functie voor als foto ingeladen is
myListener.onLoadComplete = function () {
//My_mc2.loadClip("foto"+i+".jpg",container);
function resizer () {
container._x=(Stage.width-container._width)/2
container._y=(Stage.height-container._height)/2
maskit._x=(Stage.width-maskit._width)/2
maskit._y=(Stage.height-maskit._height)/2
maskit._width+=(container._width-maskit._width)/speed
maskit._height+=(container._height-maskit._height)/speed
lines._width+=(container._width+10-lines._width)/speed
lines._height+=(container._height+10-lines._height)/speed
lines._x=(Stage.width-lines._width)/2
lines._y=(Stage.height-lines._height)/2
if(Math.round(maskit._width)==container._width){
clearInterval(intervalID);
trace("interval cleared")
}
container.setMask(maskit);
updateAfterEvent();
}
intervalID=setInterval(resizer,20);
}
//functie als foto niet bestaat
myListener.onLoadError = function () {
i=1
My_mc1.loadClip("foto"+i+".jpg",container);
i++
}
My_mc1.addListener(myListener);
My_mc1.loadClip("foto"+i+".jpg",container);
i++
function loader () {
My_mc1.loadClip("foto"+i+".jpg",container);
i++
}
setInterval(loader,10000);
het mask werkt nu perfect...
nu nog even werken aan de overgang tussen de twee foto's...
Roenes
%Europe/Berlin %432 %2005, 11:22
Dit zijn echt van die problemen waar je in eerste instantie niet aan denkt. ;)
Maar ik weet zeker, nu vergeet je nooit meer dat alle acties op een mc verloren gaan als er nieuwe externe content in komt :D
behived
%Europe/Berlin %442 %2005, 11:37
idd - best way to learn is the hard way
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.