FYI, I got a response from my bug report. Since I couldn't include the PNG on the bug report page, the Adobe person wasn't able to reproduce the problem. So I did some research and created a test app to send them to. You can view it here:
http://three.fsphost.com/flex2/pngbug/PNGBug.html (Note: that for some reason, I have problems in Firefox loading Flex apps off this host. If you run into the same problem, try IE and/or go to the srcview and run it locally) It's based off this site: http://entropymine.com/jason/testbed/pngtrans/ It has a whole bunch of different PNG types with non-transparent GIF showing how it should look properly. As you can see, some render properly in both the Embed/non-embed, some render correctly as a non-Embed and some render incorrectly as either. Hopefully, this will give someone a good test to run against when fixing these bugs. So first, there are the problems in support for PNG. Second, there is the discrepancy between using @Embed and not using @Embed. On 1/31/07, Doug McCune <[EMAIL PROTECTED]> wrote:
Just to follow up, here's my post that explains the issue and my workaround: http://dougmccune.com/blog/2007/01/31/problem-with-transparent-pngs-in-flex-using-embed/ Doug Pan Troglodytes wrote: Doug, Very cool that you tracked it down in SWFLoader. Right now I can get by with using GIF, but it's great to know if I absolutely have to have more than 256 colors I can use your code. Hopefully Adobe is following this thread. Either that, or they already tracked it down and have it fixed internally but just never read my posts. ;) On 1/31/07, Doug McCune <[EMAIL PROTECTED]> wrote: > > You're definitely right, that's a clear bug in how SWFLoader works. I > have a solution that involves duplicating the code for SWFLoader and > modifying it a little bit. What's interesting is that in the Design view of > FB, the PNG has perfect transparency in both cases. But in the published > SWF, the transparency is not preserved when using @Embed. > > I will be writing up a blog post and my solution later today. > > For now, here's a sample of the problem with a working solution. I'll be > writing up the description of what I had to do (obviously it's not much > since it didn't take very long). So if you want to check out the code before > I write up the post, the important part has to do with setting the mimeType > of the embedded asset, and then in the modified SWFLoader code, check out > around line 1217 in the loadContent method. It uses loadBytes of the Loader > class to load the bytes of the embedded asset. > > http://dougmccune.com/flex/png_test/ > (right click to View Source) > > Doug > > > > Pan Troglodytes wrote: > > Could you clarify what you mean by "works for me"? Do you mean you > are getting transparency on the PNG? > > I uploaded my full code for an example: > > http://three.fsphost.com/flex2/png/PNGBug.html > > Just right-click to view the source. > > They both use the same png file. The first one renders with an olive > background (the original background color of the image). The second renders > the transparency properly. > > Does this work differently under Flex/Flash Player for you? > > > On 1/31/07, ben.clinkinbeard <[EMAIL PROTECTED] > wrote: > > > > <mx:Image source="@Embed(source='plusSymbol.png')"/> orks for me... > > > > Not sure what else to recommend. > > > > --- In [email protected] <flexcoders%40yahoogroups.com>, "Pan > > Troglodytes" > > <[EMAIL PROTECTED]> wrote: > > > > > > Sadly, no. It also doesn't work if you declare a variable like > > > > > > [Embed(source="/assets/user-big.png")] private var userIcon:Class; > > > > > > > > > FYI, from the docs: > > > > > > About the source parameter > > > > > > In almost all cases, you must specify the source parameter or > > nothing is > > > embedded. > > > > > > The source parameter is the default parameter of the [Embed] > > metadata tag; > > > therefore, if you are not specifying any other parameters, you can > > just > > > supply its value without explicitly including the parameter name or > > > assigning it the desired value > > > > > > > > > On 1/31/07, ben.clinkinbeard <[EMAIL PROTECTED]> wrote: > > > > > > > > According to the docs, the correct syntax is: > > > > > > > > <mx:Image source="@Embed(source='assets/user-big.png')"/> > > > > > > > > Does that work? > > > > > > > > HTH, > > > > Ben > > > > > > > > --- In [email protected] <flexcoders%40yahoogroups.com><flexcoders%40yahoog > > roups.com>, "Pan > > > > > > Troglodytes" > > > > <chimpathetic@> wrote: > > > > > > > > > > This is still a problem. I couldn't remember if I entered it in > > the > > > > Adobe > > > > > bug page, so I just went ahead and did it. This is a bit of a > > pain as > > > > > transparent icons are very important in GUIs. GIF works fine but > > is > > > > limited > > > > > to 256 colors. > > > > > > > > > > > > > > > > > > > > On 12/6/06, Pan Troglodytes <chimpathetic@> wrote: > > > > > > > > > > > > I've run into a situation where the exact same PNG file will > > show > > > > up as > > > > > > transparent only when it's not embedded. Here is the mxml: > > > > > > > > > > > > <mx:Image source="@Embed('assets/user-big.png')"/> > > > > > > <mx:Image source="assets/user- big.png"/> > > > > > > > > > > > > Including both images on the page, the first is missing the > > > > transparent > > > > > > background. The second is fine. I have manually checked the > > > > images, both > > > > > > in the dev directory and bin directory. In fact, I have > > manually > > > > copied the > > > > > > dev ones over the top of the bin ones to make sure. If I drag > > the > > > > images to > > > > > > Firefox, both appear with no background. The background color > > is > > > > teal, so I > > > > > > would definitely notice. > > > > > > > > > > > > Near as I can tell, the embed is causing the background > > > > transparency to > > > > > > not be processed. I can't find anything in the docs saying > > this > > > > is expected > > > > > > behavior. > > > > > > > > > > > > -- > > > > > > Jason > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > Jason > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > Jason > > > > > > > > > > -- > Jason > > > -- Jason
-- Jason

