Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-04-2004, 09:01   #1 (permalink)
Ühnen
 
Benutzerbild von Barabas1977
 
Registriert seit: Aug 2003
Ort: Bad Nauheim
Beiträge: 52
Mit einer Form Maske per AS "malen"

Hallo Leute,

habe folgendes Problem:
Ich möchte ein Flash-Intro machen, bei dem eine schwarze Fläche den darunterliegenden Hintergrund verdeckt. Diese Fläche soll dann von einem Rechteck Stück für Stück "weggewischt" werden, d.h. das Rechteck soll per AS gesteuert über den Bildschirm wandern und die schwarze Fläche wegradieren, so das schließlich der ganze Hintergrund sichtbar ist. Das ist ja im Prinzip so etwas wie eine Malfunktion, oder? Mit welchen Skriptbefehlen kann ich so etwas erreichen?

Vielen Dank für Eure Hilfe.
Florian
Barabas1977 ist offline   Mit Zitat antworten
Alt 23-04-2004, 11:30   #2 (permalink)
Ühnen
 
Benutzerbild von Barabas1977
 
Registriert seit: Aug 2003
Ort: Bad Nauheim
Beiträge: 52
Scheint eine schwierige Frage zu sein...
Barabas1977 ist offline   Mit Zitat antworten
Alt 23-04-2004, 12:39   #3 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
Hi,

du kannst in Masken-MCs zeichnen, attachen, duplizieren, etc., genau wie in jedem anderen MC.

ActionScript:
  1. _root.createEmptyMovieClip("maske",1);
  2. _root.contentmc.setMask(maske);
  3.  
  4. _root.maske.beginFill(0,100);
  5. _root.maske.lineTo(0,100);
  6. _root.maske.lineTo(100,100);
  7. _root.maske.lineTo(100,0);
  8. _root.maske.lineTo(0,0);
  9. _root.maske.endFill();

Dabei ist contentmc der Instanzname deines Content-MovieClips.
In der Maske entsteht so ein 100*100 Pixel großes Quadrat, in dem der Content sichtbar ist.

Du kannst natürlich auch erst weitere einzelne MCs in maske erzeugen und darin zeichnen...

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 23-04-2004, 13:03   #4 (permalink)
Ühnen
 
Benutzerbild von Barabas1977
 
Registriert seit: Aug 2003
Ort: Bad Nauheim
Beiträge: 52
Hi Sascha,
danke für Deinen Tipp. Ich würde aber gerne ein Rechteck zeichnen, dieses über den Bildschirm bewegen und mit diesem Rechteck sozusagen die Maske malen. Solange das Rechteck sich nur horizontal oder vertikal bewegt, ist das ja kein Problem. Aber sobald es sich diagonal oder in Kurven bewegt, weiß ich nicht mehr wie ich das machen soll. Ich hoffe, ich habe mich verständlich ausgedrückt Fällt Dir was dazu ein?

Gruß Flo
Barabas1977 ist offline   Mit Zitat antworten
Alt 23-04-2004, 13:19   #5 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
das ist kein Problem.

Dein Bild bekommt einen Instanzname (bild), der aufdeckende MC erhält ein startDrag(true).
Per setInterval (wahlweise mit onEnterFrame) wird immer an die Position des gedragten MCs in maske der MC attacht.

ActionScript:
  1. mc.startDrag(true);
  2. _root.createEmptyMovieClip("maske",1);
  3. bild.setMask(_root.maske);
  4. addBlock = function() {
  5.     i++;
  6.     maske.attachMovie("mc","mc"+i,i,{_x:_root.mc._x,_y:_root.mc._y});
  7. };
  8.  
  9. setInterval(addBlock,10);

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 23-04-2004, 13:39   #6 (permalink)
Ühnen
 
Benutzerbild von Barabas1977
 
Registriert seit: Aug 2003
Ort: Bad Nauheim
Beiträge: 52
ok, das werde ich testen. Danke für Deine Hilfe, Sascha.

Gruß Flo
Barabas1977 ist offline   Mit Zitat antworten
Alt 26-04-2004, 07:31   #7 (permalink)
Ühnen
 
Benutzerbild von Barabas1977
 
Registriert seit: Aug 2003
Ort: Bad Nauheim
Beiträge: 52
So, habe jetzt mal folgendes Script geschrieben:
ActionScript:
  1. a = 1;
  2. _root.createEmptyMovieClip ("maske", 1);
  3. x = -200;
  4. y = -100;
  5. attachMovie("traufel_mc", "traufel", 9999);
  6. addBlock = function(xmove, ymove) {
  7.     i++;
  8.     _root.maske.attachMovie("kasten", "kasten"+i, i);
  9.     _root.maske["kasten"+i]._x = x;
  10.     _root.maske["kasten"+i]._y = y;
  11.     traufel._x = x;
  12.     traufel._y = y;
  13.     updateAfterEvent();
  14.     x = x+xmove;
  15.     y = y+ymove;
  16. }
  17. intervalID = setInterval(addBlock, a, 1, 6);
  18. _root.attachMovie("content", "content", 2);
  19. _root.content.setMask(maske);
Dieses Skript wird im ersten Frame des Films ausgeführt. In weiteren Frames kann ich dann Richtungsänderungen des Masken-Rechtecks "kasten" mit z.B. folgendem Skript auslösen:
ActionScript:
  1. clearInterval(intervalID);
  2. intervalID = setInterval(addBlock, a, 1, -6);
Jetzt habe ich ein Problem: Je nachdem wie schnell der Rechner ist, auf dem das Programm läuft, bewegt sich der Kasten unterschiedlich schnell. Es ist aber wichtig, dass der Film überall synchron läuft, d.h. dass der mc "kasten" in einem bestimmten Frame immer an der gleichen Position erscheint. Kann ich hier überhaupt mit setInterval arbeiten?

Gruß Flo
Barabas1977 ist offline   Mit Zitat antworten
Alt 26-04-2004, 10:13   #8 (permalink)
Ühnen
 
Benutzerbild von Barabas1977
 
Registriert seit: Aug 2003
Ort: Bad Nauheim
Beiträge: 52
Hat keiner ne Idee?
Ich muss das Teil heute unbedingt noch fertig kriegen...
Barabas1977 ist offline   Mit Zitat antworten
Alt 26-04-2004, 11:21   #9 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
Du verwendest setInterval und in der aufgerufenen Funktion zusätzlich updateAfterEvent(). Ich schätze, letzteres ist das Problem, da es Flash unabhängig von der Framerate dazu veranlasst, die Berechnungen darzustellen.


Nimm es mal raus, vielleicht hilft das schon.
Ansonsten ist Flash nunmal sehr rechenintensiv und von daher fast nicht zu synchronisieren. Da helfen nur Tweens mit Streaming-Audio; das läuft synchron...


Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 26-04-2004, 12:24   #10 (permalink)
Ühnen
 
Benutzerbild von Barabas1977
 
Registriert seit: Aug 2003
Ort: Bad Nauheim
Beiträge: 52
Habe das updateAfterEvent() mal rausgenommen. Die Animation läuft jetzt ziemlich ruckelig, aber das ist noch zu verkraften. Ich kann jetzt leider nicht testen, ob das mein Problem behebt, ich hoffe es aber mal Gibt es eigentlich eine Möglichkeit, die Animation etwas zu glätten?

Gruß
Flo
Barabas1977 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 22:04 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele