> From: [email protected]
> Subject: Re: [Flashcoders] Impossible?
> Date: Wed, 8 Sep 2010 16:18:36 -0500
> To: [email protected]
> 
> 
> On Sep 8, 2010, at 1:15 PM, George Jones wrote:
> 
> >   if (gp < 1050112)
> >                 {
> >                     _redArray.push(0);
> >                     _alphaArray.push(255);
> >                     _greenArray.push(0);
> >                     _blueArray.push(255);
> 
> 
> 
> Shouldn't this be
>   _blueArray.push(0);
> 
> and only alphaArray should be set to 255?
> That may be why your getting a blue background.

First up, I fixed the flame coming back. As I supposed, that was easy. The 
problem remains with making the background disappear. I've reworked the code 
some:

                gp = _fireColor.getPixel(i, 0);
                if (_bitmapFlag == true && gp < 1050112)
                {
                    _redArray.push(255);
                    _alphaArray.push(0);
                    _greenArray.push(255);
                    _blueArray.push(255);
                } else if (_bitmapFlag == false && gp < 1050112) {
                    _redArray.push(gp);
                    _alphaArray.push(0);
                    _greenArray.push(255);
                    _blueArray.push(255);
                } else {
                    _redArray.push(gp);
                    _alphaArray.push(0);
                    _greenArray.push(0);
                    _blueArray.push(0);
                }

I've changed the if statement. Values of gp less than 1050112 are that which 
are not the flame, therefore are the background which should be set to alpha=0. 
When _bitmapFlag == true, then it's the mask that's being painted; otherwise, 
the sprite being masked (the else if statement). The final else statement is 
for the flame itself. Interestingly, changing the value of either the blue, 
green or alpha of that final else statement to 255 gives a blue flame with 
white border and very attractive, though not what I want. I wonder why changing 
the alpha especially would have that effect.

I guess what I'm not clear about is the values I'm pushing. If I push 
255 for the red, green and blue arrays, does that result in white? If I 
push 0 for alpha, is that the same as alpha=0 or alpha=1?



Here again is the code for building the sprites:

        private function _onLoadedAll(e:Event):void
        {
            _onLoadedContent(e, _bitmapFlag = false);
            _onLoadedContent(e, _bitmapFlag = true);
        }

        private function _onLoadedContent(e:Event, _bitmapFlag:Boolean):void {
            _fireColor = Bitmap(LoaderInfo(e.target).loader.content).bitmapData;
...
            if (_bitmapFlag == false)
            {
                _fire = new BitmapData(865, 92, _bitmapFlag, 0xffffff);
                addChild(new Bitmap(_fire));
                _fireSprite.addChild(new Bitmap(_fireMask));
                addChild(_fireSprite);
                _fireSprite.mask = _fireMaskSprite;
                _fireSprite.cacheAsBitmap = true;
            } else {
                _fireMask = new BitmapData(865, 92, _bitmapFlag, 0xffffff);
                _fireMaskSprite.addChild(new Bitmap(_fireMask));
                addChild(_fireMaskSprite);
                _fireMaskSprite.cacheAsBitmap = true;
            }

I'm wondering now if this is possible, to mask the flame only and let the 
background show.


The following combinations give me a blue background and flame:

                if (gp < 1050112)
                {
                    _redArray.push(255);
                    _alphaArray.push(0);
                    _greenArray.push(255);
                    _blueArray.push(255);

                if (gp < 1050112)
                {
                    _redArray.push(0);
                    _alphaArray.push(255);
                    _greenArray.push(0);
                    _blueArray.push(255);

                if (gp < 1050112)
                {
                    _redArray.push(0);
                    _alphaArray.push(255);
                    _greenArray.push(255);
                    _blueArray.push(255);

                if (gp < 1050112)
                {
                    _redArray.push(255);
                    _alphaArray.push(255);
                    _greenArray.push(255);
                    _blueArray.push(255);

This gives me a black background:

                if (gp < 1050112)
                {
                    _redArray.push(0);
                    _alphaArray.push(255);
                    _greenArray.push(0);
                    _blueArray.push(0);

TIA,
George
                                          
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to