| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.109
| cacheAsBitmap eiert
hab mir mal die 8er-trial gezogen und alte fla's von mir neu compiliert. der grosse 'geschwindigkeitsrausch' hat sich aber noch nicht eingestellt. was ja 'sagenhaft' schnell sein soll ist cacheAsBitmap taugt natürlich nichts, wenn man die objekte ändert. da wird es eher langsamer. da so flash ständig neue bitmaps erzeugt? bei meinem traffic.fla fahren autos über strassen. die ändern sich nicht. aber mit cacheAsBitmap fallen die wie besoffen durch die gassen! offensichtlich wird das bitmap auf die nächste ganze pixelposition plaziert? ganz langsam tweenen scheint besser geworden zu sein. noch besser sollte sowas mit etwas bewegungsunschärfe werden. leider wird hierbei automatisch das cacheAsBitmap eingeschaltet. das rumgeeiere ist unerträglich :-( wem soll man den solche animationen verkaufen können?
__________________ die ultimative antwort auf alle programmierfragen: der debugger! - vor eine programmzeile klicken (==roter punkt) - im menü "debuggen" aufrufen - auf den grünen pfeil klicken - im swf etwas machen (der programmablauf hält beim roten punkt) - links die objekte auswählen, variable, interne... mal alles ansehen! mit dem debugger kann man sein programm schrittweisse abarbeiten und in alle variable reinsehen. mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #2 (permalink) |
| x39 Registriert seit: Oct 2004 Ort: St.Gallen, Schweiz
Beiträge: 1.261
|
ein Bitmap kennt halt keine halben Pixel, deshalb die "Aufrundung" auf ganze Pixel. sollte ein Bitmap auf ein halbes Pixel aligned werden, dann wird das glaub ich wieder in eine Vektorbild umgewandelt müssen, dass das klappt.... hmmmmmmm Geändert von georgem (14-09-2005 um 06:46 Uhr) |
| | |
| | #3 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.109
|
ein bild ist keine 'heilige kuh'. man kann bilder scalieren, drehen, verzerren und selbstverständlich auch weniger als 1 punkt versetzen. und anti-alias gibts nicht nur für text. natürlich benötigt das mehr zeit als wenn man pixel auf pixel setzt. nur was nützt mir das 'schnelle' gehoppel? ach ja, bilder. da haben sich die flash-leute auch was lustiges einfallen lassen. nur ich kann darüber irgendwie nicht lachen. zugegeben 'hoppeln' tuts nicht - das ist doch wohl nicht deren ernst ???
__________________ die ultimative antwort auf alle programmierfragen: der debugger! - vor eine programmzeile klicken (==roter punkt) - im menü "debuggen" aufrufen - auf den grünen pfeil klicken - im swf etwas machen (der programmablauf hält beim roten punkt) - links die objekte auswählen, variable, interne... mal alles ansehen! mit dem debugger kann man sein programm schrittweisse abarbeiten und in alle variable reinsehen. mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #4 (permalink) |
| x39 Registriert seit: Oct 2004 Ort: St.Gallen, Schweiz
Beiträge: 1.261
|
ja, den "effekt" kenn ich auch von älteren Flashversionen das kommt davon wenn man nicht auf ganze Zahlen abrundet. Also eigentlich ändert sich nichts. Vielleicht lässt sich das ganze halt nicht einfacher umsetzen. Das FlashentwicklerTeam hatte wahrscheinlich andere Sorgen. was das cacheAsBitmap angeht, ist es klar, dass damit die halben Pixels verschwinden. Ein Bitmap das direkt im Speicher cachiert wird, KANN nur ganze Pixel einnehmen, sonst wäre es bereits wieder ein Vektor oder ein Vektorisiertes Bitmap oder ein aliasdes Bitmap das vektoriell verschoben wird, oder was auch immer, aber auf keinen Fall ein CaCheAsBitmap Geändert von georgem (14-09-2005 um 07:39 Uhr) |
| | |
| | #5 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.109
|
"..kenn ich auch von älteren Flashversionen.." sieh dir doch mal den bärentanz bei meinem 2. upload an. das hat nichts mit dem ammenmärchen über die 'ganzen' zahlen zu tun. "..Das FlashentwicklerTeam hatte wahrscheinlich andere Sorgen.." ja, nämlich die, das ich mir DAS wohl nicht kaufen werde! --------- ok, den 'bärentanz' hab ich wegbekommen (hat nichts mit: 'ganze Zahlen abrundet' zu tun). jetzt bräuchte ich das selbe nur noch für die filter! denn wenn ich die filter (wegen diesem gehopse) nicht nutzen kann und stattdessen wie gehabt bilder einsetze. dann kann ich auch bei flash7 bleiben ...
__________________ die ultimative antwort auf alle programmierfragen: der debugger! - vor eine programmzeile klicken (==roter punkt) - im menü "debuggen" aufrufen - auf den grünen pfeil klicken - im swf etwas machen (der programmablauf hält beim roten punkt) - links die objekte auswählen, variable, interne... mal alles ansehen! mit dem debugger kann man sein programm schrittweisse abarbeiten und in alle variable reinsehen. mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (14-09-2005 um 08:37 Uhr) |
| | |
| | #6 (permalink) |
| x39 Registriert seit: Oct 2004 Ort: St.Gallen, Schweiz
Beiträge: 1.261
|
okay, hab dein (neuestest) Beispiel-fla mal angeschaut, na kein Wunder hat das nichts mit gerundeten Zahlen zu tun, wenn du einen Bewegungstween benutzt? Also ich habe die Bewegung mal in einem onEnterFrame programmiert. Und tatsächlich, wenn ich ganzeZahlen-Bedingung beachte, dann ist die Grafik smooth, ansonsten der berüchtigte Effekt ich hab dein Beispiel modifiziert, und mal einfach den Bären eingebaut, mit einer onEnterSchlaufe, mit folgendem Code: ActionScript:
den kommentierten Text kannst du auch benutzen um gleich zu testen, dass kommastellen tatsächlich das Bild verzerren. Also es hat Tatsächlich mit Rundungsfehlern zu tun. Ist also ein altbekannter "fehler" den man kennen und umgehen muss. Natürlich kannst du alle Effekte von Flash8 sauber benutzen. Geändert von georgem (14-09-2005 um 09:13 Uhr) |
| | |
| | #7 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.109
|
bildeinstellung: 'glätten zulassen' war nicht angeschaltet. ist dennoch keine erklärung dafür. dieses gezappel darf in keiner einstellung vorkommen! denn das kann niemand gebrauchen. gleichzeitig zeigt es, das bilder sehr wohl auf jede x-beliebige position gerändert werden können (sonst könnte man ja auch nur auf 1/2 und 1/4 scalieren). also muss es auch mit den gecachten bildern gehen. ich würde es akzeptieren, wenn flash sagt: diese einstellung ist extra für speed gemacht worden. dann muss ich es aber auch bei den filter ab- bzw. anschalten können! so wie ich das beim bär-mc anschalten kann - dann hoppelt der auch von pixel zu pixel. ------------- "..Natürlich kannst du alle Effekte von Flash8 sauber benutzen.." eben nicht! es ging um's langsame bewegen. und man kann nicht immer nur volle pixel bewegen. und selbst dann, was ist das für ein geruckel (so im sekundentakt - kann allerdings sein, dass das nur auf dem mac so ist)? das ist übrigens eine alte krankheit von flash. ActionScript:
nein, lass ich nicht gelten. das ist kein grund, das teile des bildes schwimmen! wenn das komplette bild einen versatz hat ok, aber nicht, das sich teile des bildes pro berechnung unterschiedlich weit bewegen. ich weiss nicht, was die da berechnen, aber so muss es nicht sein! P.S. ich arbeite seit über 25 jahren mit computern. du musst mir nicht erklären, was ein pixel ist ;-) ich habe wiederholt geschrieben: das ein bild, das so verschoben/scaliert oder gedreht wird neu berechnet werden muss. und wie du an meinem 3.upload siehtst kann man den bären sehr wohl um 0.1 punkte weit versetzen. dazu wird das bild neu berechnet (im ganzen und nicht stückschenweisse). ----------- "..pro Pixel glaub ich 4 Bytes, oder so.." kommt aufs bild drauf an. farbbilder belegen 1 byte für rot + grün + blau macht 3*8=24 bit = 16mio farben. das 4. byte bleibt unbenutz (ist besser so für 32bit prozessoren) bzw. da kann der alpha-kanal drinn liegen = 8bit graustufenbild.
__________________ die ultimative antwort auf alle programmierfragen: der debugger! - vor eine programmzeile klicken (==roter punkt) - im menü "debuggen" aufrufen - auf den grünen pfeil klicken - im swf etwas machen (der programmablauf hält beim roten punkt) - links die objekte auswählen, variable, interne... mal alles ansehen! mit dem debugger kann man sein programm schrittweisse abarbeiten und in alle variable reinsehen. mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (14-09-2005 um 09:48 Uhr) |
| | |
| | #8 (permalink) |
| x39 Registriert seit: Oct 2004 Ort: St.Gallen, Schweiz
Beiträge: 1.261
|
Aber du siehst ein dass das Zahlenrunden kein Ammenmärchen ist? Nochmal die Antwort die ich zuoberst gegeben habe: ein reines Bitmap kennt keine halben Pixel, deshalb auch das cacheBitmap nicht. ein Pixel ist das kleinste Quantum, wenn du so willst. es geht um die Natur des Caches . Es gibt nur ganze Bytes, das Bitmap wird im Speicher des Computers angebracht, pro Pixel glaub ich 4 Bytes, oder so. Das wird beim pasten dann einfach "schwups" ausgelesen, deshalb ist der Cache schnell. Der Bildschirm hat ebenfalls nur ganze Pixels. alle halben Pixel in Flash werden durch AntiAliasing approximiert, was rechenintensiv ist. Oder schon mal gefragt wie Flash ein Zehntel Pixel darstellt, wenn ja der Bildschrim an jener Stelle trotzdem nur einen Pixel zur Verfügung stellt? cacheBitmap hat nur ganze Pixels, der Screen ebenfalls---> daraus resultiert der GeschwindigkeitsBoost. Halbe Pixel kann man nur darstellen wenn man vektorisiert, --->auch wenn du SKALIERST vektorisierst du. Geändert von georgem (14-09-2005 um 09:36 Uhr) |
| | |
| | #9 (permalink) | |||
| x39 Registriert seit: Oct 2004 Ort: St.Gallen, Schweiz
Beiträge: 1.261
| Zitat:
es ist doch egal ob der kleinste Bewegungsunterschied nur ein Pixel ist.. ist das bereits zu rauh für manche Leute? Kann ich zwar verstehen, aber.... Vor allem bei Games hat man ja 3 Jahrzehnte lang genug Zeit gehabt um sich an PIXELGENAUE Bewegungen zu gewöhnen, und genau im Games-Bereich wird die CacheAsBitmap-Funktion noch einige Überraschungen präsentieren. Ich finde die Funktion genial. Sie ist zwar kein allrounder und man kann sie nicht Blind überall einsetzen , da sie nicht überall sinn macht, oder auch negativ auffallen kann, wenn 10tels Pixel-bewegungen. Aber man kann ja perfekt für jeden einzelnen mc die Funktion an und aus schalten, also bitte, was will man mehr? Zitat:
BitmapCache und halbe Pixels geht nicht, deshalb komm ich immer wider auf das Pixelgerede zurück... ;-) Zitat:
Geändert von georgem (14-09-2005 um 10:10 Uhr) | |||
| | |
| | #10 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.109
|
"..Aber man kann ja perfekt für jeden einzelnen mc die Funktion an und aus schalten.." dann schalte das doch bitte mal bei den filtern ab! das war mein ausgangspunkt. allmählig wirds [OT] ;-) "..es ist doch egal ob der kleinste Bewegungsunterschied nur ein Pixel ist.." nein! weil flash eben kein spezielles spiele-entwicklungs-programm ist. dazu ist es auch mit dieser cashfunktion viel, viel zu langsam. und man kann nicht, wie auf einer spiele-CD hunderte von vorgeränderten varianten benützen. das gibt das internet trotz DSL nicht her. und auch vom buget her spielen flash-animationen in einer ganz anderen liga. da muss eine figur möglichst für alles herhalten. in der werbebranche werden oft langsame bewegungen gefordert. da geht es nicht mit: bumm - krach - und schon wieder weg. und ich hätte dieses thema hier nicht eröffnet, wenn ich damit keine probleme gehabt hätte. man erinnere sich: meine autos auf der strasse... -------------- "..In deinem dritten Beispiel hat der Bär aber überhaupt kein BitmapCache mehr angeschaltet.." ja, du hasst recht und ich meine ruhe ;-) der bär ist ein bild! und bilder bestehen aus pixel. "..einpaar kommastellen dazu kommen.." pict._x += 3; wo sind da kommastellen?
__________________ die ultimative antwort auf alle programmierfragen: der debugger! - vor eine programmzeile klicken (==roter punkt) - im menü "debuggen" aufrufen - auf den grünen pfeil klicken - im swf etwas machen (der programmablauf hält beim roten punkt) - links die objekte auswählen, variable, interne... mal alles ansehen! mit dem debugger kann man sein programm schrittweisse abarbeiten und in alle variable reinsehen. mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (14-09-2005 um 10:14 Uhr) |
| | |
| | #11 (permalink) | |
| x39 Registriert seit: Oct 2004 Ort: St.Gallen, Schweiz
Beiträge: 1.261
|
okay, 2 Fragen was die Filter angeht, tust du die per ApplyFilter auf ein Bitmap "draufbrennen"? oder berechnest du den Filter in Echtzeit? Zitat:
oder aber die gecachten Bilder, was der echten BMP-Representation wie sie im Buche steht entspricht, welche leider GOTTES aber NUR PER PIXEL bewegt werden können. Dein Bär in Beispiel 3 hat zwar ein Bitmap als Urquell, da dieses aber in alter Flashmanier in ein mc_Symbol eingebaut wird, ganz ohne Cache, hast du aber auch gar kein BMP-Format mehr, nene Beim pict._x += 3 sehe ich eine smoothe bewegung. Du nicht? Kann sein, dass es flackert weil die Bewegung einbischen zu sprunghaft und schnell stattfindet, hat aber nicht mit rumeiern zu tun. Okay, du weisst jetzt, ich bin total der CacheAsBitmap-Advokat. ![]() Was die Brauchbarkeit dieser Funktion, und allgemein, das ontheFly Echtzeit erstellen/bearbeiten von Bitmaps angeht ( Games müssen nicht alle ihre Graphiken in einem riesen Packet vorher reinladen, es gibt da auch andere möglichkeiten) wird eine neue Qualität von Flashgames auf uns zukommen, keine Frage... Ausserdem finde ich dass eine Effekthascherei einem Game weit zuträglicher ist, als einer FlashWebpage. In letzter Zeit häufen sich ja die Meinungen, dass mit Flash 8 leider eine Flut von gleichartigen Blur-Schattenwerf-Gradienten-Displacement-FX-Flashseiten daherkommen wird. Geändert von georgem (14-09-2005 um 10:30 Uhr) | |
| | |
| | #12 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.109
|
"..Es gibt den Unterschied zwischen in Vector-Behältern eingefügten Bilder.." nö! bild bleibt bild und ein bild besteht aus pixel. der bär bewegt sich ohne mc-behälter genauso wie mit. wie kommst du auf die idee, das flash bilder vektorisieren würde nur weil die in einem mc liegen? nach deiner theorie wäre ja ein in ein mc gefasster filter (==cashBitmap ==pixelbild) eben weil er in ein mc gefasst ist kein bitmap mehr, sondern vektor und könnte so stufenlos bewegt werden. dem ist ebenfalls nicht so. ----------- "..Kann sein, dass es flackert weil die Bewegung einbischen zu sprunghaft und schnell stattfindet.." halber punkt ist zu wenig. drei punkte wären zu viel - da bleibt aber keine grosse auswahl übrig ;-)
__________________ die ultimative antwort auf alle programmierfragen: der debugger! - vor eine programmzeile klicken (==roter punkt) - im menü "debuggen" aufrufen - auf den grünen pfeil klicken - im swf etwas machen (der programmablauf hält beim roten punkt) - links die objekte auswählen, variable, interne... mal alles ansehen! mit dem debugger kann man sein programm schrittweisse abarbeiten und in alle variable reinsehen. mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (14-09-2005 um 11:23 Uhr) |
| | |
| | #13 (permalink) |
| x39 Registriert seit: Oct 2004 Ort: St.Gallen, Schweiz
Beiträge: 1.261
|
ne, das hast du falsch verstanden ich sag nicht dass die BMP-bilder vektorisiert werden, das wäre gar nicht möglich, da bräuchte man ja im schlimmsten fall so viele Vektoren wie das Bild pixel hat... also ich meine keine Trace. was ich meine ist, so ein SymbolBMP liegt nicht im Speicher als ein BitMAP vor. wenn ich hingegen z.B. ActionScript:
ich kenne nicht die Zusammenhänge/Gründe im Hintergrund, war aber soweit immer meine Erfahrung mit BMPs Geändert von georgem (14-09-2005 um 11:26 Uhr) |
| | |
| | #14 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.109
|
"..liegt nicht im Speicher als ein BitMAP vor.." jetzt wirds aber albern. als was liegt das bild denn vor?
__________________ die ultimative antwort auf alle programmierfragen: der debugger! - vor eine programmzeile klicken (==roter punkt) - im menü "debuggen" aufrufen - auf den grünen pfeil klicken - im swf etwas machen (der programmablauf hält beim roten punkt) - links die objekte auswählen, variable, interne... mal alles ansehen! mit dem debugger kann man sein programm schrittweisse abarbeiten und in alle variable reinsehen. mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #15 (permalink) |
| x39 Registriert seit: Oct 2004 Ort: St.Gallen, Schweiz
Beiträge: 1.261
|
da fragst du macromedia ;-) hat nichts mit albernheiten zu tun... schliesslich ist ja dein SWF auch nur so klein, als wäre das Bitmap plötzlich zum JPEG geworden, na? klingelts? ![]() also irgendwas geschieht da mit dem BMP, ich kann draufzeigen aber ich kanns nicht genau erklären, aber ich kanns natürlich weiterhin versuchen... ![]() aber du glaubst natürlich nicht dass da jemand unkomprimierte Bitmaps von deiner Homepage runterlädt? nene, aber mit den neuen Flash8 Features kannst du die echten Bitmap features verwenden, siehe getpixel, setpixel, cacheAsBitmap, create Bitmap apllyfilters, um nur ein paar zu nennen P.S. eine Jpeg-Kopression ist ein ONEWAY-Algorithmus, du kannst ein echtes Bitmap in ein Jpeg umwandeln, da geht IMMER information verloren, du kannst das nacher wieder zu einem BMP machen und im Speicher darstellen, aber halt mit Verlusten, ausser du nimmst PNG oder GIF, dann kann pixelgenau representiert. Aber das nur nebenbei. P.P.S. Was willst du eigentlich genau mit dem pict._x += 3 beispiel zeigen? Geändert von georgem (14-09-2005 um 11:45 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |