{lang: 'de'}
Flashhilfe.de - Flash Community

Duplizierte MovieClips als Masken und deren Erscheinung [Flash 9]

 


AntwortenRegistrieren Seite1  

morritza#1
Benutzerbild von morritza
Beiträge: 4
Registriert: Jul 2010

22.07.2010, 17:42

Hallo Zusammen,
ich hoffe ihr könnt mir weiterhelfen.
Hab mich hier schon wund-gesucht und bin leider auf keine Lösung gestoßen.

Ich möchte eine Art Mosaik effekt programmieren, also Bilder sollen "Kachelweise" (5x4Kacheln) aus und eingeblendet werden. Wenn jetzt eine Kachel des Bildes aus-fadet soll das Bild dort drunter sichtbar werden. Wenn alle Kacheln auf Bild2 gewechselt sind, soll das ganze von Vorne laufen und Bild3 soll auftauchen.

Bis jetzt hab ich mir etwas zusammen gebaut, was die Bühne mit duplizierten MCs füllt(direkt im 1. Frame), wenn die Stage voll ist, faden die Kacheln aus und das darunter liegende Bild wird sichtbar.

Mein Ansatz ist nun, dass die Kacheln die Maske für das erste Bild darstellen ( voll == komplett Sichtbar) beim Wegfaden wird dann das 1. Bild nicht mehr Sichtbar, gleichzeitig müssten die Kachel-Masken auftauchen und das 2. Bild anzeigen. Diese Mechanik müsste dann ja auch auf das 3. Übertragbar sein.
Ich hoffe ihr könnt mir bei meinem vorhaben behilflich sein. Momentan habe ich Probleme die Kacheln als Maske zu definieren, anscheinend übernimmt er duplizierte MCs nicht als Maske die erste Kachel(aus der dupliziert wird) zeigt er noch als Maske an.
Auch die Animation der MC-Maske verliert sich.


ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function  zeigeDot(anzahlbilder)   {
 
  //Fläche füllen
   //Anzahl y
   for (y=0; y<4; y++) { //17
   //Anzahl x
      for (x=0; x<5; x++) { //35
         i++;
           // Create an y,x Position
         duplicateMovieClip ("_root.dot", "dot_"+y+"_"+x, i+2);
           
           this["dot_"+y+"_"+x]._y = y*dot._height;
           this["dot_"+y+"_"+x]._x = x*dot._width;
           
           trace("dot_"+y+"_"+x);
           //test1.setMask("dot_"+y+"_"+x);
         test1.setMask("dot");
           //bild1.setMask("dot_"+y+"_"+x);
      }
     // Blende Start Element aus
   dot._visible = false;
     //Überblend-Animation
   //bild_einblenden.gotoAndPlay(2);
   }
     
     //Bild.gotoAndPlay(10);
   
     }

this.createEmptyMovieClip("test1", 1);
this.test1.createEmptyMovieClip("image", 1);
this.test1.setMask("dot");
this.test1.image.loadMovie("bild1.jpg");

//Aufruf nach erzeugen des BIldes
zeigeDot(2);



Gruß aus HH


*beim Anhang muss bild1.jpg im root liegen

Angehängte Dateien:
Adobe Flash Animationen bild_mosaik_effekt.swf44.44 KB
Schlagwörter: duplizierte, masken, mosaik, setMask
morritza#2
Benutzerbild von morritza
Beiträge: 4
Registriert: Jul 2010

Themenautor/in

22.07.2010, 20:24

http://www.flashforum.de/forum/flash-mx-2004/mosaik-uberblendeffekt-162385.html

Das hilft !
morritza#3
Benutzerbild von morritza
Beiträge: 4
Registriert: Jul 2010

Themenautor/in

26.07.2010, 12:55

Arg, hab ein Problem. Bei dem ich eure Erfahrung brauche.

Ich arbeite jetzt mit transparenten Masken, die per alpha ausgeblendet werden. Um die "attached" Movies beim erzeugen mit alpha zuversehen benötigen diese cacheAsBitmap.
Leider stürtz dann Flash komplett ab. Ohne cacheAB passiert dies nicht.
Wie kann ich das Problem lösen? Entweder cacheAsBitmap umgehen oder gibts eine andere Lösung?

Veröffentlicht für Flash 9, AS2
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//Anzahl Y Felder
for (var i = 0; i<anzahl_y; i++) {
    //Anzahl X Felder
    for (var x = 0; x<anzahl_x; x++) {
        v++;
        //Moviename, Quelle, Z-Index
        attachMovie("bild1", ("bild1"+v), v);
        attachMovie("bild2", ("bild2"+v), 100+v);
        //Moviename, Quelle, Z-Index
        attachMovie("maske", ("maske"+v), 200+v);
               
        this["bild1"+v].cacheAsBitmap = true;
        this["bild2"+v].cacheAsBitmap = true;
        this["maske"+v].cacheAsBitmap = true;
       
        //trace(this["maske"+v]);
        this["maske"+v]._x = x*168-22;
        this["maske"+v]._y = i*124;
        this["bild2"+v].setMask(this["maske"+v]);

        if (anzahl_felder[v] != "undefined") 
        {
            anzahl_felder[v] = v;
        }
       
    }

}



Gruß
Geändert von morritza am 26.07.10 um 12:56 Uhr
RustyCake#4
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

26.07.2010, 13:50