• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-10-2009, 13:04   #16 (permalink)
Nix Wisser
 
Benutzerbild von nullidee
 
Registriert seit: May 2003
Ort: Würzburg, Kleinstadt
Beiträge: 3.510
schreib halt mal eine Nachricht an Mario (Quasimondo) ist ja auch hier im Forum
http://www.flashforum.de/forum/members/quasimondo.html
__________________
nullidee

Abakus GT 10² Kugeln - 80"Leinwand - CARAN D´ACHE SUPRACOLOR®
nullidee ist offline   Mit Zitat antworten
Alt 26-10-2009, 13:47   #17 (permalink)
Isch kucke
 
Registriert seit: Jan 2005
Beiträge: 1.616
Hab ich gemacht. Mal schauen was sich tut

Wobei ich gerade selbst eine Klasse schreibe (mit der tracer Geschichte).
Geht sogar von der Perf. Aber ich bekomme die Koordinaten nicht entsprechend sortiert.

Mal schauen wie weit ich komme
__________________
Gesehen auf einem Türschild:

Niederknien, anklopfen und um Audience betteln

Har Har

http://www.flashforum.de/forum/flash-mx-2004/uberblenden-tutorial-180341.html
Mp3 Player http://www.flashforum.de/forum/stuff/stuff-jukebox-196373.html
labrar ist offline   Mit Zitat antworten
Alt 28-10-2009, 10:03   #18 (permalink)
Isch kucke
 
Registriert seit: Jan 2005
Beiträge: 1.616
Will nicht hinhauen.
Hat noch jemand andere Lösungsvorschläge in AS2?

BZW. hat jemand schonmal was ähnliches gemacht oder weiß zumindest wie ich die Printklasse lediglich zum auslesen der Punkte verwenden kann ohne zu drucken?
__________________
Gesehen auf einem Türschild:

Niederknien, anklopfen und um Audience betteln

Har Har

http://www.flashforum.de/forum/showthread.php?t=180341
Mp3 Player http://www.flashforum.de/forum/showthread.php?t=196373
labrar ist offline   Mit Zitat antworten
Alt 29-10-2009, 21:48   #19 (permalink)
Isch kucke
 
Registriert seit: Jan 2005
Beiträge: 1.616
Okay ich bin schon einen großen Schritt weiter.

Klasse:
PHP-Code:
import flash.display.BitmapData;
import flash.geom.Point;
class 
shape2vector{
    
    private var 
from:MovieClip;
    private var 
nodes;
    private var 
nodesIn;
    
    public function 
DRAW(){
        var CLASS:
shape2vector=this;
        var 
nodes=CLASS.nodes;
        var 
nodesIn=CLASS.nodesIn;
        CLASS.
from.createEmptyMovieClip("testd",20);
        var 
testd=CLASS.from.testd;
            
testd.beginFill(0x000000,100);
            var 
c=nodes[0].split("|");
            
testd.moveTo(c[0],c[2]);
            var 
num=nodes.length;
            
            for(var 
i=0;i<nodes.length;i++){
                
                var 
c=nodes[i].split("|");
                    
testd.lineTo(c[1],c[2]);
                
                }
            for(var 
a=num;a>0;a--){
                
                var 
c=nodes[a].split("|");
                if(!
isNaN(c[0])&& !isNaN(c[2])){
                    
testd.lineTo(c[0],c[2]);
                }
            }
            var 
c=nodesIn[0].split("|");
            
testd.moveTo(c[0],c[2]);
            var 
num=nodesIn.length;
            
            for(var 
i=0;i<nodesIn.length;i++){
                
                var 
c=nodesIn[i].split("|");
                    
testd.lineTo(c[1],c[2]);
                
                }
            for(var 
a=num;a>0;a--){
                
                var 
c=nodesIn[a].split("|");
                if(!
isNaN(c[0])&& !isNaN(c[2])){
                    
testd.lineTo(c[0],c[2]);
                }
            }
        }
    
    private function 
simple(array){
        var CLASS:
shape2vector=this;
        var 
star=array[0];
        var 
end=star;
        for(var 
i=0;i<array.length;i++){
            if(
end<array[i]){end=array[i];}
            }
        
            
            
            
            if(!
isNaN(star) && !isNaN(end)){
            return 
star+"|"+end;
            }
    }
    private function 
simpleAll(arrayA,arrayB){
        var CLASS:
shape2vector=this;
            var 
backray=new Array();
            var 
checker=arrayA[0];
            
backray.push(arrayA[0]+"|"+arrayB[0]);
            for(var 
i=0;i<arrayB.length;i++){
                if(
arrayA[(i+1)]==checker){}else{
                    
backray.push(arrayA[i]+"|"+arrayB[i]);
                    }
                    
checker=arrayA[i];
                }
                return 
backray;
            }

    
    public function 
shape2vector(from,mc){
        
        var CLASS:
shape2vector=this;
        CLASS.
from=from;
        var 
bound=mc.getBounds(from);
        var 
widt=bound.xMax-bound.yMax;
        var 
heig=bound.yMax-bound.yMin;
        
from.createEmptyMovieClip('mcdragger',from.getNextHighestDepth());
        var 
mcdragger=from.mcdragger;
        
mcdragger.lineStyle(1,0xFFFFFF,100);
        
mcdragger.moveTo(0,0);
        
mcdragger.lineTo(1,1);
        var 
threshold 1;
        var 
thisBitmap:BitmapData = new BitmapData(widtheigtrue0);
         
thisBitmap.draw(mc);
         var 
mcBitmap:BitmapData = new BitmapData(mcdragger._widthmcdragger._heighttrue0);
         
mcBitmap.draw(mcdragger); 
            function 
test(){
                    if(
thisBitmap.hitTest(new Point(bound.xMin,bound.yMin), thresholdmcBitmap, new Point(mcdragger._xmcdragger._y), threshold)) {  
                     return 
true;
                    }
            
            }
        
mcdragger._x=bound.xMin;
        
mcdragger._y=bound.yMin;
        var 
Ynot=new Array();
        var 
YnotIn=new Array();
        var 
Xnot=new Array();
        var 
XnotIn=new Array();
    for(var 
hor=0;hor<widt;hor++){
    var 
inX=new Array();
    var 
inXIn=new Array();
    var 
contact=false;
    for(var 
ver=0;ver<heig;ver++){
        
mcdragger._x=bound.xMin+ver;
        
mcdragger._y=bound.yMin+hor;
        var 
pos=(mcdragger._x-bound.xMin);
        
        if (
test()) {
            
inX.push(pos);            
            var 
maxcall=pos;
            
contact=true;
            
        }else{
            
            if(
contact && pos<max){
                
inXIn.push(pos);            
                }
            }
        
            
            
        }
        var 
max=maxcall;
        var 
p=CLASS.simple(inX);
        var 
pin=CLASS.simple(inXIn);
        if(
pin!=undefined && inXIn.length>0){
            
YnotIn.push(mcdragger._y-bound.yMin);
            
XnotIn.push(pin);
        }
        if(
p!=undefined){
            
Ynot.push(mcdragger._y-bound.yMin);
            
Xnot.push(p);
        }
        }

            
        
        CLASS.
nodes=CLASS.simpleAll(Xnot,Ynot);
        if(
XnotIn.length>0){
            CLASS.
nodesIn=CLASS.simpleAll(XnotIn,YnotIn);
        
        }
        
        
mcdragger.removeMovieClip();
    }
    

Aufruf:
PHP-Code:
shape=new shape2vector(_root,t);
shape.DRAW(); 
shape2vector wird mit zwei Parametern aufgerufen
1. Der Hauptmc (in meinem Fall _root)
2. Der zu vektorisierende MC

Die Funktion DRAW ist optional und dient im Prinzip nur der Kontrolle der Vektordaten indem hier einfach per moveTo und lineTo der mc anhand der Vektordaten nachgezeichnet wird.


So funktioniert das ganze (Was im übrigen sogar recht performant geht):

Im Hauptmc (erster Parameter) wird kurzzeitig ein 1 Pixel breiter und 1 Pixel hoher mc erstellt der die Boundingbox von links nach rechts Pixelzeile für Pixelzeile durchrastert und per Hittest prüft ob im getracten Pixel etwas vorhanden ist order nicht.

Zunächst werden lediglich die äusseren Pixel in ein Array gespeichert (nodes) und durch die Funktionen simple und simpleAll auf ein minimum reduziert.
Danach dann die inneren Pixel(nodesIn). Also zB einem großen R der leere Teil oben.

Mein Problem, und das werdet ihr beim testen merken, liegt zum einen darin dass gerade die inneren Pixel nicht ganz stimmen und ich habe keine Ahnung warum.

Und zweitens. Wie kann ich es am besten lösen dass, auch zwei oder drei Leerräume gespeichert werden können (zB beim Buchstabe B)?

Und drittens. Wenn ich den mc drehe zerschießt es das ganze ganz.

Ich würde mich freuen wenn das ganze ein wenig auf Interesse stößt und ihr vieleicht sogar Lust habt hier zu besseren Lösungen beizutragen

Viel Spaß erstmal mit der Klasse

Zum besseren Verständniss meines Problems, hier noch die Testswf.
Der rechte Buchstabe ist das Original, links oben das Vektorisierte Teil davon. Da sieht ma die Problematik am besten
Angehängte Dateien
Dateityp: swf vektor4.swf (22,8 KB, 7x aufgerufen)
__________________
Gesehen auf einem Türschild:

Niederknien, anklopfen und um Audience betteln

Har Har

http://www.flashforum.de/forum/showthread.php?t=180341
Mp3 Player http://www.flashforum.de/forum/showthread.php?t=196373

Geändert von labrar (29-10-2009 um 22:06 Uhr)
labrar ist offline   Mit Zitat antworten
Alt 31-10-2009, 11:16   #20 (permalink)
Isch kucke
 
Registriert seit: Jan 2005
Beiträge: 1.616
Neue Version.
Geht etwas schneller und genauer.
Im Anhang seht ihr nochmal eine swf ind der aber eine neue Problematik auftaucht.

Also zum Hergang:

Es wird also, wie schon in der alten Klasse, geprüft ob ein Kontakt stattgefunden hat oder nicht.
Entsprechend werden dann die X und Y Koordinaten zum Zeitpunkt des Kontaktes in ein Array gespeichert getrennt durch |

Resultatarray wäre dann zB.
100|40,160|40,50|41,70|41 usw.

Danach habe ich anhand der Arraykoordinaten testdummys attached und an die entsprechende Position gesetzt.

Blöder- und logischerweise, wie ihr seht, bekomme ich jetzt für jede Pixelreihe einen entsprechenden Wert und den Dummy dazu.

Wie könnte ich die Sache jetzt lösen dass tatsächlich nur die Eckpunkte berücksichtigt werden?
Angehängte Dateien
Dateityp: swf vektor5.swf (972 Bytes, 5x aufgerufen)
__________________
Gesehen auf einem Türschild:

Niederknien, anklopfen und um Audience betteln

Har Har

http://www.flashforum.de/forum/showthread.php?t=180341
Mp3 Player http://www.flashforum.de/forum/showthread.php?t=196373
labrar ist offline   Mit Zitat antworten
Alt 31-10-2009, 13:52   #21 (permalink)
Nix Wisser
 
Benutzerbild von nullidee
 
Registriert seit: May 2003
Ort: Würzburg, Kleinstadt
Beiträge: 3.510
weiß ja nicht obs dir was hilft aber hab da 2 Links

Home - as3swf - GitHub

und

http://ericlin2.tripod.com/swftoas/swf_as.html

zum zweiten von ericlin hab ichs mal hochgeladen
Ergebnis anschauen
__________________
nullidee

Abakus GT 10² Kugeln - 80"Leinwand - CARAN D´ACHE SUPRACOLOR®
nullidee ist offline   Mit Zitat antworten
Alt 31-10-2009, 14:13   #22 (permalink)
Isch kucke
 
Registriert seit: Jan 2005
Beiträge: 1.616
Danke aber Link 1 ist AS3 und Link 2 arbeitet mit bereits eingegebenen Werten und zeichnet diese nach.
Ich brauche aber was, was mir die Poligone einer statischen Grafik oder auch dynamischen Grafik zurückfeuert.
__________________
Gesehen auf einem Türschild:

Niederknien, anklopfen und um Audience betteln

Har Har

http://www.flashforum.de/forum/showthread.php?t=180341
Mp3 Player http://www.flashforum.de/forum/showthread.php?t=196373
labrar ist offline   Mit Zitat antworten
Alt 01-11-2009, 11:40   #23 (permalink)
Isch kucke
 
Registriert seit: Jan 2005
Beiträge: 1.616
Noch mal einen Schritt weiter
Schaut euch bitte angehängte swf an

Jetzt habe ich noch 3 Schritte vor mir

A. Den Bezug der Vektorknoten zueinander festlegen (Es sind ja in diesem Fall 4 Grafiken die nachgezeichnet werden müssen)

B. Diagonale Linien ebenfalls auf nur zwei Knoten reduzieren(Wenn ich jetzt ein Viereck drehe bekomme ich pro Pixel einen Dot)

C. CurveTo festlegen bei gebogenen Linien.

Habt ihr da Lösungsansätze?
Angehängte Dateien
Dateityp: swf vektor6.swf (1,8 KB, 4x aufgerufen)
__________________
Gesehen auf einem Türschild:

Niederknien, anklopfen und um Audience betteln

Har Har

http://www.flashforum.de/forum/showthread.php?t=180341
Mp3 Player http://www.flashforum.de/forum/showthread.php?t=196373
labrar ist offline   Mit Zitat antworten
Alt 01-11-2009, 16:01   #24 (permalink)
Isch kucke
 
Registriert seit: Jan 2005
Beiträge: 1.616
Zitat:
Zitat von labrar Beitrag anzeigen
Habt ihr da Lösungsansätze?
Bitte nicht alle auf einmal
__________________
Gesehen auf einem Türschild:

Niederknien, anklopfen und um Audience betteln

Har Har

http://www.flashforum.de/forum/showthread.php?t=180341
Mp3 Player http://www.flashforum.de/forum/showthread.php?t=196373
labrar ist offline   Mit Zitat antworten
Alt 03-11-2009, 12:07   #25 (permalink)
Isch kucke
 
Registriert seit: Jan 2005
Beiträge: 1.616
Ich braüchte nochmal Hilfe

Also. Ich habe es jetzt geschafft für jedes einzelne Element (besteht ja aus mehreren Vierecken usw) die entsprechenden Koordinaten zuzuordnen

So hat jetzt zB das linke ober Viereck folgendes Array

PHP-Code:
koordinaten[[10,40,10],[10,40,50]]; 
Erkärung:
Das Array koordinaten enthält ebenfalls ein Array welches die Linienpunkte beinhaltet.

Also wäre von diesem Viereck die erste Linie
X StartPunkt koordinaten[0][0];
X EndPunkt koordinaten[0][1];
Y Punkt koordinaten[0][2];

Und die zweite Linie
X StartPunkt koordinaten[1][0];
X EndPunkt koordinaten[1][1];
Y Punkt koordinaten[1][2];

und könnte mit
PHP-Code:
linieoben.moveTo(koordinaten[0][0],koordinaten[0][2]);
linieoben.lineTo(koordinaten[0][1],koordinaten[0][2]);
linieunten.moveTo(koordinaten[1][0],koordinaten[1][2]);
linieunten.lineTo(koordinaten[1][1],koordinaten[1][2]); 
nachgezeichnet werden sodass ich nun die oberste und die unterste Linie sehen würde.

Um das Viereck aber richtig nachzuzeichnen sollte folgendes Kostrukt rauskommen
PHP-Code:
viereck.moveTo(koordinaten[0][0],koordinaten[0][2]);
viereck.lineTo(koordinaten[0][1],koordinaten[0][2]);
viereck.lineTo(koordinaten[1][1],koordinaten[0][2]);
viereck.lineTo(koordinaten[1][0],koordinaten[0][2]);
viereck.lineTo(koordinaten[0][0],koordinaten[0][2]); 
Also bin ich hergegangen und habe (zumindest versucht)mir diese Arrays in zwei forschleifen so zusammengefasst dass, ich nur ein Array erhalte welches in etwas so aussieht

dots[[10,10],[40,10],[40,50],[10,50],[10,10]];

Somit funktioniert das ganze solange es nur Vierecke sind ganz gut.

Aber jetzt kommts.

Ich bekomme es bei komplexeren Dingen oder gedrehten Vierecken nicht geregelt.
(Siehe Bild)
Von links nach rechts gesehen ist der erste Punkt der X Startpunkt und er zweite der X Endpunkt.
Es können auch mehrere Linien auf der selben Y Zeile nebeneinander sitzen. Also mehrere Start und Endpunkte.

Die roten Punkte sind also die Koordinaten und die Linien sollen zeigen in welcher Reihenfolge ich die gern gespiechert hätte.

Wie könnte ich das lösen?
Angehängte Grafiken
Dateityp: jpg zeichnung.jpg (7,3 KB, 1x aufgerufen)
__________________
Gesehen auf einem Türschild:

Niederknien, anklopfen und um Audience betteln

Har Har

http://www.flashforum.de/forum/showthread.php?t=180341
Mp3 Player http://www.flashforum.de/forum/showthread.php?t=196373
labrar ist offline   Mit Zitat antworten
Alt 08-11-2009, 22:06   #26 (permalink)
Isch kucke
 
Registriert seit: Jan 2005
Beiträge: 1.616
Okay. Ich habs so einigermassen hinbekommen.
Bin aber trotzdem sehr entäuscht vom Flashforum da ich immer dachte dass hier die Cracks der Cracks herumhängen.

Vieleicht war auch meine Frage zu doof oder langweilig
__________________
Gesehen auf einem Türschild:

Niederknien, anklopfen und um Audience betteln

Har Har

http://www.flashforum.de/forum/showthread.php?t=180341
Mp3 Player http://www.flashforum.de/forum/showthread.php?t=196373
labrar 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Text -> Buchstabe für Buchstabe einfaden Dublay ActionScript 2 3 05-06-2008 13:17
text Buchstabe für Buchstabe auslesen Mr. xxx Flash Einsteiger 10 02-01-2007 17:00
Textfelder Buchstabe für Buchstabe füllen DaHofer ActionScript 1 4 27-02-2004 11:47
Text Buchstabe für Buchstabe in dyn.Textfeld laden ??? FunZer ActionScript 1 22 11-07-2002 15:00
Textausgabe: Buchstabe für Buchstabe Buck Flash 4 und Flash 5 7 04-10-2001 22:16


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele