Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-02-2007, 06:29   #1 (permalink)
Neuer User
 
Benutzerbild von Papa_Lars
 
Registriert seit: Nov 2006
Ort: St.Goarshausen
Beiträge: 29
Flächenfüllung mit Loch

Hallo,

vielleicht kann mir jemand weiterhelfen?
Es wird interaktiv so etwas erstellt, wie weiter unten zu sehen ist.
Ich habe folgendes Problem: Die grüne Füllung soll nicht grün, sondern durchsichtig sein - also das Hintergrundbild zu sehen sein.
Der Code dazu sieht so aus:
PHP-Code:
function fuellen(){
mc.createEmptyMovieClip("polygon"+objekt300-objekt);
    
with(mc["polygon"+objekt]){
        
lineStyle(10x000000);
        if(
objekt==0){
            
beginFill(0x00ff00,100);
        }
        else if(
objekt==1){
            
beginFill(0x0000ff,100);
        }
        
moveTo(punkt[objekt][0][0], punkt[objekt][0][1]);
        for(var 
i=1i<zaehler[objekt]; i++){
            
lineTo(punkt[objekt][i][0], punkt[objekt][i][1]);
        }
        
endFill();
    }
    
objekt += 1;

Wenn ich den Alphawert der grünen Füllung auf 0 setze, erscheint natürlich die blaue Farbe - gut, das war mir ja schon fast klar.
Wie aber kann ich das grüne Polygon durchsichtig machen, so dass das darunter liegende Bild sichtbar wird?
Angehängte Grafiken
Dateityp: jpg area.jpg (48,2 KB, 9x aufgerufen)
Papa_Lars ist offline   Mit Zitat antworten
Alt 23-02-2007, 08:11   #2 (permalink)
angry > always
 
Benutzerbild von ingohill
 
Registriert seit: Jul 2001
Ort: NRW
Beiträge: 1.635
ActionScript:
  1. unction fuellen(){
  2. mc.createEmptyMovieClip("polygon"+objekt, 300-objekt);
  3.     with(mc["polygon"+objekt]){
  4.         lineStyle(1, 0x000000);
  5.         if(objekt==0){
  6.             beginFill(0x00ff00,0);
  7.         }
  8.         else if(objekt==1){
  9.             beginFill(0x0000ff,100);
  10.         }
  11.         moveTo(punkt[objekt][0][0], punkt[objekt][0][1]);
  12.         for(var i=1; i<zaehler[objekt]; i++){
  13.             lineTo(punkt[objekt][i][0], punkt[objekt][i][1]);
  14.         }
  15.         endFill();
  16.     }
  17.     objekt += 1;
  18. }
-ingo
__________________

on air: caliban | neaera | heaven shall burn | hatebreed | the agony scene
ingohill ist offline   Mit Zitat antworten
Alt 23-02-2007, 08:35   #3 (permalink)
Neuer User
 
Benutzerbild von Papa_Lars
 
Registriert seit: Nov 2006
Ort: St.Goarshausen
Beiträge: 29
Ja, das hatte ich ja schon versucht - da besteht allerdings das Problem, dass das grüne Polygon zwar durchsichtig wird, dann aber die blaue Farbe des darunter liegenden blauen Polygons zum Vorschein kommt.
Irgendwie müsste ein Loch von der Größe des grünen Polygons in das blaue geschnitten werden?
Papa_Lars ist offline   Mit Zitat antworten
Alt 23-02-2007, 09:01   #4 (permalink)
no guts no glory
 
Benutzerbild von readme.txt
 
Registriert seit: May 2004
Ort: Nordhorn
Beiträge: 7.998
Solange du nicht mit endFill das füllen beendest wird nur der Teil befüllt der innerhalb deiner gezeichneten Linien existiert ... hier mal ein vereinfachte sBeispiel mit 2 Quadraten:

PHP-Code:
var quad:MovieClip _root.createEmptyMovieClip("quad",_root.getNextHighestDepth());
    
quad._x 50;
    
quad._y 50;

quad.lineStyle(1,0xFF0000,100);
quad.beginFill(0xFF0000,100);

// -> Erstmal das äußere Quadrat zeichenen
quad.moveTo(0,0);
quad.lineTo(200,0);
quad.lineTo(200,200);
quad.lineTo(0,200);
quad.lineTo(0,0);
// <- Erstmal das äußere Quadrat zeichenen

// -> jetzt innen ein Quadrat "rausschneiden"
quad.moveTo(50,50);
quad.lineTo(100,50);
quad.lineTo(100,100);
quad.lineTo(50,100);
quad.lineTo(50,50);
// <- jetzt innen ein Quadrat "rausschneiden"

quad.endFill(); 
__________________
Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke.

'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.'
readme.txt ist offline   Mit Zitat antworten
Alt 23-02-2007, 12:17   #5 (permalink)
Neuer User
 
Benutzerbild von Papa_Lars
 
Registriert seit: Nov 2006
Ort: St.Goarshausen
Beiträge: 29
Vielen Dank für die Hilfe!
Für die, die es interessiert - der Code sieht nun so aus ...
PHP-Code:
function fuellen(){
    
mc.createEmptyMovieClip("polygon"3);
    
with(mc["polygon"]){
        
lineStyle(10x000000);
        
beginFill(0xFF0000,100);
        
moveTo(punkt[0][0][0], punkt[0][0][1]);
        for(var 
i=1i<zaehler[0]; i++){
            
lineTo(punkt[0][i][0], punkt[0][i][1]);
        }
        
moveTo(punkt[1][0][0], punkt[1][0][1]);
        for(var 
i=1i<zaehler[1]; i++){
            
lineTo(punkt[1][i][0], punkt[1][i][1]);
        }
        
endFill();
    }

und erzeugt das hier (siehe Bild unten).
Und nebenbei hat es auch den Effekt, dass ich den hitTest nicht mehr 2x ausführen muss.

Danke
Lars
Angehängte Grafiken
Dateityp: jpg area1.jpg (46,3 KB, 3x aufgerufen)
Papa_Lars ist offline   Mit Zitat antworten
Alt 23-02-2007, 12:20   #6 (permalink)
liebt Skorpionin
 
Benutzerbild von Skorpion
 
Registriert seit: Apr 2003
Beiträge: 1.258
@readme.txt: wuff, hätte nicht geahnt dass es so einfach gehen würde. Klasse!
Skorpion ist offline   Mit Zitat antworten
Alt 23-02-2007, 12:45   #7 (permalink)
no guts no glory
 
Benutzerbild von readme.txt
 
Registriert seit: May 2004
Ort: Nordhorn
Beiträge: 7.998
Hehe ... hab ich irgendwann mal durch Zufall rausgefunden ^^
__________________
Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke.

'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.'
readme.txt 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 11:52 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele