| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Grand Master Flash Registriert seit: Dec 2003 Ort: Schweiz
Beiträge: 130
| setMask() Problem
Hallo Flashfreunde Über setMask wurde hier ja auch schon geschrieben und eigentlich sieht die Sache ja ganz einfach aus. Ich lade dynamisch Movieclips, welche ich maskieren will, aber es will einfach nicht so richtig klappen. Code: _root.createEmptyMovieClip("maskMC", 3);
var action_mc :MovieClip = _root.createEmptyMovieClip("action_mc", 0); // virtuell für enterFrame
var container1:MovieClip = _root.createEmptyMovieClip("container1", 2); // enthält bild
var container2:MovieClip = _root.createEmptyMovieClip("container2", 4); // enthält bild
_root.container1._x = 200;
_root.container1.loadMovie("images/background/image"+randRange(10,20)+".jpg");
_root.container1._alpha = 100;
_root.container1.setMask(_root.maskMC);
_root.maskMC.attachMovie("mask_mc", "m", 0, {_x:200} ); Kann mir jemand sagen, woran's liegt?
__________________ Gruss }-^°> |
| | |
| | #2 (permalink) |
| Pending… Registriert seit: Jul 2002 Ort: Hamburg
Beiträge: 3.866
|
Man kann die Maske erst zuweisen nachdem das Bild vollständig geladen ist. Also z.B. einen Preloader verwenden der dann setMask ausführt.
__________________ :: Warum einfach, wenn's auch kompliziert geht! :: |
| | |
| | #3 (permalink) |
| Grand Master Flash Registriert seit: Dec 2003 Ort: Schweiz
Beiträge: 130
|
Vielen Dank psyk! Das war mir so nicht klar, ist aber ja auch irgendwie logisch. Preloader sind nicht gerade meine Parade-Disziplin, gibt's da ein gutes Tutorial oder hat jemand für meinen Fall einen Tipp?
__________________ Gruss }-^°> |
| | |
| | #4 (permalink) |
| Pending… Registriert seit: Jul 2002 Ort: Hamburg
Beiträge: 3.866
| PHP-Code:
__________________ :: Warum einfach, wenn's auch kompliziert geht! :: |
| | |
| | #5 (permalink) |
| Grand Master Flash Registriert seit: Dec 2003 Ort: Schweiz
Beiträge: 130
|
Super psyk, das haut voll hin! Vielen Dank!!! Aber es gibt ein weiteres Problem... Ich benutze zwei leere MovieClips (container1 und container2), welche gegenseitig ein- und ausgeblendet werden. Dies geschieht mit Actionscript und nicht per tween, da die Bilder dynamisch geladen werden. So kriege ich eine Art Slide-Show mit zufallsmässig geladenen Bilder. Das Fade-Script habe ich als prototyp der MovieClip Klasse angehängt. Der Aufruf erfolgt mittels SetInterval. Nun habe ich festgestellt, dass wenn sich der _alpha Wert ändert, die Maske nichts mehr Wert ist und nicht gezogen wird. Das heisst, sobald die Überblendung beginnt, wachsen die Bilder wieder auf volle Grösse an. Ich habe nun versucht, den fade-Prototyp um eine setMask(mask) zu erweiteren, so dass bei jedem EnterFrame die Maske neu gesetzt wird. Hat aber nicht funktioniert Code: // MovieClip.fadeMask Prototyp
// Parameter:
// fadeIn:Boolean, true = Anstieg _alpha bis targetAlpha, false = Verringerung _alpha bis targetAlpha
// targetAlpha:Number, Zielwert von _alpha
// step:Number, Schrittlaenge der _alpha Veraenderung
// mask:MovieClip, Masken MC
// Rueckgabe keine
MovieClip.prototype.fade = function( fadeIn:Boolean,
targetAlpha:Number,
step:Number,
mask:MovieClip) : void
{
this.onEnterFrame = function() {
with (this) {
if(fadeIn) {
if (_alpha < targetAlpha) {
_alpha += step;
}
else {
_alpha = targetAlpha;
delete onEnterFrame;
}
}
else {
if (_alpha > targetAlpha) {
_alpha -= step;
}
else {
_alpha = targetAlpha;
delete onEnterFrame;
}
}
setMask(mask);
}
}
} Nochmals vielen Dank, psyk.
__________________ Gruss }-^°> |
| | |
| | #6 (permalink) |
| Pending… Registriert seit: Jul 2002 Ort: Hamburg
Beiträge: 3.866
|
Tweens allgemein kann man recht simpel mit der Tween-Klasse umsetzen. (auch in MX'04) bspw. PHP-Code: Unterschiede geben ob man eine Skript oder es per Zeitleiste macht. Das gilt aber eigentlich auch für den Fall, wenn die Maske innerhalb des Tween-MCs liegt.
__________________ :: Warum einfach, wenn's auch kompliziert geht! :: |
| | |
| | #7 (permalink) |
| Grand Master Flash Registriert seit: Dec 2003 Ort: Schweiz
Beiträge: 130
|
Au Mann! Ich hatte ja keine Ahung ![]() Das scheint wirklich um einiges simpler zu sein als mein Script, da die ganze Intervall-Geschichte wegfällt. Das werde ich heute abend sofort ausprobieren! Ich hoffe nur, das ganze läuft auch mit Maske. Vielen Dank für den Hinweis psyk!
__________________ Gruss }-^°> |
| | |
| | #8 (permalink) |
| Grand Master Flash Registriert seit: Dec 2003 Ort: Schweiz
Beiträge: 130
|
So, hat jetzt doch länger gedauert. War etwas stressig in letzter Zeit. Also mit der Tween-Klasse konnte ich den Code wirklich stark vereinfachen und um ca. 75% verkleinern. Getweent wird, aber wiederum ohne Berücksichtigung der Maske. Ich werde noch ein bisschen daran basteln müssen.
__________________ Gruss }-^°> |
| | |
| | #9 (permalink) |
| Grand Master Flash Registriert seit: Dec 2003 Ort: Schweiz
Beiträge: 130
| [gelöst] setMask() Problem
Es funktioniert jetzt! Das Problem war, dass jeder container-MC seine eigene Maske (mask1 + mask2) braucht. Nach dieser Erweiterung funktioniert mein Script tadellos. Danke nochmals an psyk, ohne Deine Hilfe wäre ich noch nicht weiter!
__________________ Gruss }-^°> |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |