Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-03-2004, 09:49   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 18
Maskeneffekt mit AS

Hallo,

vielleicht könnt ihr mir weiterhelfen:

ich versuche mit duplicateMovieClip und einer zeitlichen Verzögerung beim duplizieren einen Maskeneffekt mit ActionScript zu erzeugen. Hab damit noch kaum Erfahrung, aber zumindest funktioniert das Duplizieren und die Verzögerung.
Ich schaffs aber nicht die mc´s als maske für ein bild zu definieren.

Hab die fla im Anhang.

Hier der Code auf einem leeren MC zum Steuern des Ablaufs:
PHP-Code:
onClipEvent (load) {
    
_parent.timeout 0.02;
    
_parent.startzeit getTimer();
    
_parent.anzahl 40;
    
_parent.0;
    
_parent.xposstart 30;
                
_parent.yposstart 15;
    
_parent.xpos xposstart;
    
_parent.ypos yposstart;
    
_parent.breite 10;

}

onClipEvent (enterFrame) {
    
if (
_parent.i<_parent.anzahl and getTimer()-_parent.startzeit>=_parent.timeout*1000) {
        
_parent.startzeit getTimer();
         
        
_root.mask._x=_parent.xpos;
        
_root.mask._y=_parent.ypos;
        
        
_root.mask.duplicateMovieClip("mc"+_parent.i_parent.i);
        
         if (
_parent.spalte == _parent.breite) {
            
_parent.xpos 0;
            
_parent.ypos += _parent.yposstart+18;
            
_parent.spalte 0;
        }
         
_parent.spalte ++;
         
        if(
_parent.spalte==1){
            
_parent.ypos+=15;
        }
        
      
_parent.xpos +=48;
      
_root["mc"+_parent.i]._x =  _parent.xpos;
      
_root["mc"+_parent.i]._y =  _parent.ypos;
       
      
_parent.i++;
        
    }
     
_root.bild.setMask(_root.mask); 
             

Die Maske erscheint nur während der aktuelle MC dupliziert wird, danach ist sie jeweils weg. Muss ich das Bild genausooft duplizieren wie den MC damit die Maske das ganze Bild aufdeckt?
Was mach ich falsch?
Vielen Dank schon im Vorraus für eure Mühe

gruss birgit
Angehängte Dateien
Dateityp: zip as_maske.zip (45,6 KB, 55x aufgerufen)
marla18 ist offline   Mit Zitat antworten
Alt 02-03-2004, 10:44   #2 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
so wie Du es jetzt gemacht hast, müsstest Du tatsächlich, jedesmal maske und maskiertes Objekt duplizieren,
aber es gibt natürlich einen einfachen Trick,
...da ich auch noch einige andere Sachen überarbeitet habe jetzt mal Schritt für Schritt:
-----als erstes mal hab ich den völlig übberflüssigen actions-mc entfernt, das script (daß gleich folgt) legst Du besser direkt in die Hauptzeitleiste (wg. der Übersicht evtl. einer extra Ebene) seit flashMX kann man ja Clip-Events dynamisch erstellen....
-----als nächstes (der Trick)...aus dem mask mc habe ich wieder einen mc mit dem Instanznamen 'maske' erstellt, so daß der mc mask absolut jetzt auf _root.maske liegt, jetzt kann ich _root.bild mit _root.maske maskieren... wenn ich jetzt _root.maske.mask dupliziere gehört der duplizierte mc ja schon zur maske....
----als letztes, deine Duplizier- und Positionier-Technik ist wenig dynamisch gewesen, so daß ich nach meinen Änderungen einiges anpassen hätte müssen, ich hab das dann lieber komplett neu geschrieben, dabei nutz ich die Funktion '%' (ausgesprochen 'modulo') wenn Du wissen willst wie das funktioniert gib einfach mal modulo in der Suchfunktion ein, auf jeden Fall brauchst Du jetzt einfach nur den mc maske richtig zu positionieren, und die variaben 'breite_hoehe' und 'luecke' entsprechend Deiner Vorstellungen anzupassen un das Ding funktioniert.
Hier das script (wie gesagt einfach in die HZL einfügen):
ActionScript:
  1. this.breite_hoehe = 46.5;
  2.     this.luecke=1;
  3. this.timeout = 0.02;
  4.     this.startzeit = getTimer();
  5.     this.anzahl = 40;
  6.     this.i = 0;
  7.     this.breite = 10;
  8.     this.bild.setMask(this.maske);
  9. this.onEnterFrame=function() {
  10.    
  11. if (this.i<this.anzahl and getTimer()-this.startzeit>=this.timeout*1000) {
  12.         this.startzeit = getTimer();
  13.         this.maske.mask.duplicateMovieClip("mc"+this.i, this.i);
  14.       this.maske["mc"+this.i]._x(this.breite_hoehe+this.luecke)*(this.i%this.breite);
  15.            this.maske["mc"+this.i]._y(this.breite_hoehe+this.luecke)*Math.floor(this.i/this.breite);
  16.       this.i++;
  17.        
  18.     }
  19. }

Gruß

Alois

Edit: ...als allerletztes, natürlich ist das ganze ein ideales Beispiel für einen intervall, dann säh das script so aus:
ActionScript:
  1. this.breite_hoehe = 46.5;
  2.     this.luecke=1;
  3. this.timeout = 0.02;
  4.     this.anzahl = 40;
  5.     this.i = 0;
  6.     this.breite = 10;
  7.     this.bild.setMask(this.maske);
  8. this.oEF=function() {
  9. if (i<anzahl) {
  10.         maske.mask.duplicateMovieClip("mc"+i, i);
  11.       maske["mc"+i]._x(breite_hoehe+luecke)*(i%breite);
  12.            maske["mc"+i]._y(breite_hoehe+luecke)*Math.floor(i/breite);
  13.       i++;
  14.     }else{
  15.         clearInterval(myIntervall);
  16.     }
  17. }
  18. myIntervall=setInterval(oEF,1000*this.timeout);
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-

Geändert von Alois (02-03-2004 um 11:02 Uhr)
Alois ist offline   Mit Zitat antworten
Alt 02-03-2004, 11:38   #3 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 18
super, genauso wollt ich´s
vielen vielen dank!
marla18 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 19:46 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele