• FFK10 - 13. bis 16. April 2010 in Köln
  • Unterstützt das Flashforum!
  • Adobe User Group
Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-10-2009, 16:47   #1 (Permalink)
Neuer User
 
Registriert seit: Oct 2009
Ort: Österreich
Beiträge: 9
Video Transparenzen zu einem bestimmten Zeitpunkt ermitteln

Hey Leute!

Ich hab da eine recht knifflige Problemstellung für mein kleines Spiel (im Zuge des Semsterprojekts und meiner Bakk-Arbeit).

Spielkonzept: Unterwasserwelt, in der Fische schwimmen, die abgeschossen werden sollen.

Wir legen aber Wert darauf, dass die Fische nur dann als getroffen gelten, wenn auch wirklich nur die farbigen Pixel des Objekts getroffen wurden (transparenter Hintergrund, der aufgrund der Boundingbox ebenfalls mit Click gezählt wird, soll mithilfe eines Algorithmus ausgeschlossen werden).
Jetzt wirds etwas komplizierter: Wir gestalten die Animationen der Objekte (Fische) in AfterEffects CS4 und müssen diese aus AFX nach Flash importieren - geht, indem man als .flv mit Transparenzen rendert.

Jetzt habe ich bisher herausgefunden, dass ich Videodateien sehr gut mittels Klasse "Video" und einem NetConnection und einem NetStrem importieren kann (sehe das aber nicht als elegante Lösung..), brauche aber die Bildinformation zu einem bestimmten Zeitpunkt (Zeitpunkt, als draufgeclickt wurde) um die Transparenz-Information zu kontrollieren! Geht das überhaupt? Wenn nein, wie kann ich das zum Laufen bringen?

Wenn jemand bessere Ideen und Vorschläge dazu hat, wie ich die Information aus AfterEffects nach Flash bringen kann und es nachher einfacher habe, auf die Bildinformation zuzugreifen - nur zu, ich lerne gern!

Ich freue mich über alle Antworten, am allermeisten über hilfreiche, zögert bitte nicht, Verständnisfragen zu meiner Problemstellung zu äußern, ich gebe mir dann Mühe, es verständlicher zu erklären.

Liebe Grüße,
Natascha
Taesch ist offline   Mit Zitat antworten
Alt 17-10-2009, 19:37   #2 (Permalink)
Neuer User
 
Registriert seit: Oct 2009
Ort: Österreich
Beiträge: 9
-closed-
Nachdem ich nirgends etwas finde, wird es wohl leider per PNG-Bildsequenzimport to MovieClip funktionieren müssen. Schade um die Größe der finalen Datei.
Taesch ist offline   Mit Zitat antworten
Alt 18-10-2009, 09:08   #3 (Permalink)
hmmm
 
Registriert seit: Dec 2003
Beiträge: 150
hast du schonmal probiert, das ganze zum jeweiligen zeitpunkt per "draw" in ein bitmapdata zu zeichnen. ich hab keine ahnung, wie es sich da bei videos mit den transparenzen verhällt aber sollte er die transparenzen mitnehmen kannst du dann per getPixel32 den farbwert inkl. entsprechendem alphawert rauslesen.
astrocreep ist offline   Mit Zitat antworten
Alt 18-10-2009, 13:37   #4 (Permalink)
Neuer User
 
Registriert seit: Oct 2009
Ort: Österreich
Beiträge: 9
Zitat:
ich hab keine ahnung, wie es sich da bei videos mit den transparenzen verhällt
Ja, in After Effects kann man als .flv mit Transparenzen exportieren. Leider habe ich keine Methode gefunden, die es ermöglicht, auf einzelne Frames zuzugreifen und per getPixel32() den Wert rauszulesen.

Zitat:
Hast du schonmal probiert, das ganze zum jeweiligen zeitpunkt per "draw" in ein bitmapdata zu zeichnen.
Nachdem das aber ziemlich viele Objekte werden können und diese animiert sind, bezweifle ich, dass ich die zu jedem Frame zeichnen möchte - Flash CS4 kann Bildsequenzen als Movieclip in die Library importieren, dann kann ich bei jedem Frame hoffentlich über die Bitmapdata zugreifen. Und AFX CS4 kann auch PNG-Sequenzen exportieren.

Geändert von Taesch (18-10-2009 um 13:48 Uhr)
Taesch ist offline   Mit Zitat antworten
Alt 18-10-2009, 14:03   #5 (Permalink)
hmmm
 
Registriert seit: Dec 2003
Beiträge: 150
das videos mit transparenzen gehen ist mir schon klar

du sollst ja nicht alles zu jedem zeitpunkt zeichnen. du hast viele videoobjekte, so wie ich es verstanden habe. nach einem klick weisst du ja schonmal, welches objekt angeklickt wurde. und dann das jeweilige videoobjekt mit

bitmapdata.draw(video)

zeichnen. anschließend den pixel an der jeweiligen position überprüfen.
astrocreep ist offline   Mit Zitat antworten
Alt 18-10-2009, 16:04   #6 (Permalink)
Neuer User
 
Registriert seit: Oct 2009
Ort: Österreich
Beiträge: 9
Von Adobe LiveDocs
Zitat:
draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
Draws the source display object onto the bitmap image, using the Flash Player or AIR vector renderer.
Bedeutet also, dass ich in ein dummy-Bitmap die Bitmapdaten des Videos zeichne - nimmt es dann das aktuelle Bild (Zeitpunkt A != Zeitpunkt B)? Wenn das funktioniert, wäre es das was ich gesucht habe!
Taesch ist offline   Mit Zitat antworten
Alt 18-10-2009, 19:25   #7 (Permalink)
hmmm
 
Registriert seit: Dec 2003
Beiträge: 150
ja klar. genau der aktuelle zustand wird gezeichnet, inkl. aller verzerrungen, filter, zustände etwaiger childs etc.
astrocreep ist offline   Mit Zitat antworten
Alt 18-10-2009, 22:57   #8 (Permalink)
Neuer User
 
Registriert seit: Oct 2009
Ort: Österreich
Beiträge: 9
Lightbulb

Geil
ich schreib dir hier wieder, wenn ich das testen konnte, aber heut kann ich endlich wieder ruhig schlafen denk ich ) ausser es tauchen wieder fragen auf *hihi*
Taesch ist offline   Mit Zitat antworten
Alt 19-10-2009, 00:21   #9 (Permalink)
Neuer User
 
Benutzerbild von derbrueller
 
Registriert seit: Mar 2002
Beiträge: 109
hoi,

also den Pixel wo du klickst kannst du doch kopieren und die Farbinformation abfragen.
Wenn es nicht geht liegt es eventuell daran das du das Video per Streaming Server bekommst und dieser VSA (Video Sampling Access) nicht erlaubt.

Grüsse
__________________
http://www.basecampquickie.com/
Ruby on Rails ist einfach nur GENIAL
derbrueller ist offline   Mit Zitat antworten
Alt 19-10-2009, 10:54   #10 (Permalink)
Neuer User
 
Registriert seit: Oct 2009
Ort: Österreich
Beiträge: 9
Wenn ich die Farbinformation des Pixels abfrage, hilft mir das nicht viel weiter - weil mit einem transparenten Pixel an der Stelle des Videos würd ich ja trotzdem die Farbe von darunter sehen oder verstehe ich die Funktion falsch?
Taesch ist offline   Mit Zitat antworten
Alt 19-10-2009, 11:24   #11 (Permalink)
lebt in stereo
 
Benutzerbild von figure8
 
Registriert seit: Mar 2008
Ort: karlsruhe
Beiträge: 991
naja, pixelinformationen beinhalten neben der farbe (0x000000) auch noch die alpha-transparenz (0x00000000). die kannst du ermitteln und/oder sogar einfach den channel der bitmapdata kopieren und als maske benutzen oder löschen.
figure8 ist offline   Mit Zitat antworten
Alt 19-10-2009, 11:46   #12 (Permalink)
Neuer User
 
Registriert seit: Oct 2009
Ort: Österreich
Beiträge: 9
BitmapData.draw(video) ergibt folgende Fehler Hab ich was falsch gemacht, oder funktioniert es so nicht?

Code:
 // Objekt, welches Video beinhaltet, lädt ein Video per NetStream
var video:Video = new Video();
video.name = "video";
background.addChild(video);
Code:
 // clicked-Handler
var tmp:BitmapData = new BitmapData(100,100);
tmp.draw( Video(getChildByName("Video")) );
var alpha:int = tmp.getPixel32(event.localX,event.localY);
Code:
ArgumentError: Error #2005: Parameter 0 ist nicht vom richtigen Typ. Er sollte vom Typ IBitmapDrawable sein.
	at flash.display::BitmapData/draw()
	at actionscript.classes::GameObject/


Sofern ich nicht das Video zeichne (weil nicht IBitmapDrawable), sondern den Container (background:MovieClip)
Code:
tmp.draw( background);
zeichnet es mir eine BitmapData, die einen weißen Hintergrund hat. Daher ist der Rückgabewert von getPixel32(x,y) nie 0!

Geändert von Taesch (19-10-2009 um 12:03 Uhr)
Taesch ist offline   Mit Zitat antworten
Alt 19-10-2009, 12:00   #13 (Permalink)
hmmm
 
Registriert seit: Dec 2003
Beiträge: 150
einmal "video" und einmal "Video"

aber bau der mal eine ordentlich verwaltung deiner verschiedenen objekte auf. das ganze über name und getChildByName zu lösen ist nicht wirklich optimal.
astrocreep ist offline   Mit Zitat antworten
Alt 19-10-2009, 12:25   #14 (Permalink)
Neuer User
 
Registriert seit: Oct 2009
Ort: Österreich
Beiträge: 9
Zitat:
einmal "video" und einmal "Video"
*beschämt* Das ist ja mal doof, entschuldige, darauf hätte ich selbst kommen können. Nichts desto trotz, wird bei "draw" immernoch der Hintergrund weiß gemalt. Durch die Ergebnisse von getPixel32() find ich zumindest das weiß immer raus, ist ja nicht optimal, weils auch ein weißes Video sein könnte, aber: 0xFFFFFFFF = 4294967295 und damit abfragbar
Zitat:
aber bau der mal eine ordentlich verwaltung deiner verschiedenen objekte auf. das ganze über name und getChildByName zu lösen ist nicht wirklich optimal.
Ich bin erstmal am Basteln und ausloten, welche Möglichkeiten ich habe. Wenn diese Schwierigkeit gelöst ist, weiß ich ja schonmal wie ich das ausbauen kann, danach gehts an den Sound und die SoundChannels - wenn ich dann die Sturktur dahinter verstehe und weiß was ich brauche, kann ich auch eine vernünftige Stuktur bauen - wer baut ein Hochhaus, wenn er nicht weiß was ein Stützpfeiler ist? =)

Geändert von Taesch (19-10-2009 um 12:34 Uhr)
Taesch ist offline   Mit Zitat antworten
Alt 19-10-2009, 12:44   #15 (Permalink)
Neuer User
 
Benutzerbild von derbrueller
 
Registriert seit: Mar 2002
Beiträge: 109
zu zeichnest ja auch weiss!

schau dir mal die BitmapData Classe an

BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
__________________
http://www.basecampquickie.com/
Ruby on Rails ist einfach nur GENIAL
derbrueller 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
Steuerung von Sounds per AS zu einem genauen Zeitpunkt im Video snk ActionScript 2 0 20-05-2009 16:20
Freunde bestrafen mit Flash, PHP. Zufallszahl zu einem Bestimmten Zeitpunkt on Screen ermuraten Flash MX 14 13-01-2007 19:16
flash film zu einem bestimmten zeitpunkt laden nina_ Flash MX 2004 8 13-09-2005 15:22
Bild einfügen ab einem bestimmten Zeitpunkt The Regulator Flash MX 2004 2 22-04-2004 16:47
loop zu einem bestimmten zeitpunkt abspielen bnetz Softwarearchitektur und Entwurfsmuster 2 06-12-2003 17:07


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

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
FFK10 - 13. bis 16. April 2010 in Köln


Copyright ©1999 – 2010 Marc Thiele und Sascha Wolter.