> From: k...@designdrumm.com
> Subject: Re: [Flashcoders] (no subject)
> Date: Wed, 1 Sep 2010 18:51:38 -0500
> To: flashcoders@chattyfig.figleaf.com
> 
> I dont think that setting the alpha to true was your problem.
> It may not be showing anything because it may be making ALL the  
> pixels transparent?

I assume that's what's happening, yes, but I don't know how to change that. How 
could I set the alpha in 

    _fire = new BitmapData(865, 92, false, 0xffffff);

to true for *just* certain bitmap data? I don't imagine that's possible, and 
therein, I believe, lies my problem.

> Maybe look into that? Also try blendmode overlay. That may help the  
> opaque pixels lay over the transparent ones. or vice versa
> I don't have an example per say, but had the same problem with a php  
> image creation script I was writing and the blendmode overlay helped  
> there.
> May do the same for you.

Yeah, no such luck, Karl. I forgot to mention I tried every combination to see 
what would happen. If there were some way I could catch the values, for 
example, coming out of this function:

    private function _createPalette(idx:int):void {
    _redArray = [];
    _greenArray = [];
    _blueArray = [];
    _alphaArray = [];
    for (var i:int = 0; i < 256; i++) {
    var gp:int = new int();
    gp = _fireColor.getPixel(i, 0);
    if (gp < 1050112)
    {
    _redArray.push(255);
    _alphaArray.push(255);
    } else {
    _redArray.push(gp);
    _alphaArray.push(0);
    }
    _greenArray.push(0);
    _blueArray.push(0);
    }
    }

where I catch the values under a certain numeric value in my if statement with 
the var gp, then somehow set the alpha of those values to 0 and leave the rest 
at alpha=1, I'd be set, but I can't figure out how to do that.
TIA,
George

> On Sep 1, 2010, at 7:15 AM, George Jones wrote:
> 
> >
> >
> >
> >
> > Hi;
> > I'm trying to tweak a script I found online to work for my  
> > application. The problem I am having is to make a certain part of  
> > the bitmap that is created by code transparent...but only a certain  
> > part of it. The code has the following:
> >
> >             _fire = new BitmapData(865, 92, false, 0xffffff);
> >
> > Note
> >  the alpha flag must be set to false, which is the source of my  
> > problem,
> >  or nothing prints to screen at all. I need to make certain pixels
> > transparent. _fire is added to the stage and then called thus:
> >
> >             _fire.paletteMap(_grey, _grey.rect, ZERO_POINT,  
> > _redArray, _greenArray, _blueArray, _alphaArray);
> >
> > at the end of the script. The colors for the arrays are created  
> > thusly:
> >
> >         private function _createPalette(idx:int):void {
> >             _redArray = [];
> >             _greenArray = [];
> >             _blueArray = [];
> >             _alphaArray = [];
> >             for (var i:int = 0; i < 256; i++) {
> >                 var gp:int = new int();
> >                 gp = _fireColor.getPixel(i, 0);
> >                 if (gp < 1050112)
> >                 {
> >                     _redArray.push(255);
> >                     _alphaArray.push(255);
> >                 } else {
> >                     _redArray.push(gp);
> >                     _alphaArray.push(0);
> >                 }
> >                 _greenArray.push(0);
> >                 _blueArray.push(0);
> >             }
> >         }
> >
> > I
> >  added that if clause to capture when the color is black because  
> > that's
> > where I need to make it transparent. The problem is that where I  
> > need it
> >  to be transparent, it's blue (why blue I don't know). Is there any  
> > way
> > to make it transparent? The entire code follows.
> > TIA,
> > George
> >
> >
> >
> > package {
> >     import flash.display.Bitmap;
> >     import flash.display.BitmapData;
> >     import flash.display.BlendMode;
> >     import flash.display.DisplayObject;
> >     import flash.display.Loader;
> >     import flash.display.LoaderInfo;
> >     import flash.display.Sprite;
> >     import flash.display.StageQuality;
> >     import flash.display.StageScaleMode;
> >     import flash.events.Event;
> >     import flash.events.MouseEvent;
> >     import flash.filters.ColorMatrixFilter;
> >     import flash.filters.ConvolutionFilter;
> >     import flash.geom.ColorTransform;
> >     import flash.geom.Point;
> >     import flash.system.LoaderContext;
> >     import flash.net.SharedObject;
> >     import flash.net.URLRequest;
> >     import flash.text.TextField;
> >     import flash.text.TextFieldAutoSize;
> >     import flash.text.TextFormat;
> >
> >     [SWF(width=465, height=92, backgroundColor=0xffffff,  
> > frameRate=30)]
> >
> >     public class Fire extends Sprite {
> >
> >         private static const ZERO_POINT:Point = new Point();
> >
> >         private var _fireColor:BitmapData;
> >         private var _currentFireColor:int;
> >
> >         private var _canvas:Sprite;
> >         private var _grey:BitmapData;
> >         private var _spread:ConvolutionFilter;
> >         private var _cooling:BitmapData;
> >         private var _color:ColorMatrixFilter;
> >         private var _offset:Array;
> >         private var _fire:BitmapData;
> >         private var _redArray:Array;
> >         private var _zeroArray:Array;
> >         private var _greenArray:Array;
> >         private var _blueArray:Array;
> >         private var _alphaArray:Array;
> >
> >         public function Fire() {
> > //            stage.scaleMode = StageScaleMode.NO_SCALE;
> > //            stage.quality = StageQuality.LOW;
> >             var loader:Loader = new Loader();
> >             loader.contentLoaderInfo.addEventListener 
> > (Event.COMPLETE, _onLoaded);
> >             loader.load(new URLRequest('images/fire-color.png'),  
> > new LoaderContext(true));
> >         }
> >
> >         private function _onLoaded(e:Event):void {
> >             _fireColor = Bitmap(LoaderInfo 
> > (e.target).loader.content).bitmapData;
> >
> >             _canvas = new Sprite();
> >             _canvas.graphics.beginFill(0xffffff, 0);
> >             _canvas.graphics.drawRect(0, 0, 865, 465);
> >             _canvas.graphics.endFill();
> >             _canvas.addChild(_createEmitter());
> >
> >             _grey = new BitmapData(865, 465, false, 0xffffff);
> >             _spread = new ConvolutionFilter(3, 3, [0, 1, 0,  1, 1,  
> > 1,  0, 1, 0], 5);
> >             _cooling = new BitmapData(865, 465, false, 0xffffff);
> >             _offset = [new Point(), new Point()];
> >             _fire = new BitmapData(865, 92, false, 0xffffff);
> >             addChild(new Bitmap(_fire));
> >
> >             _createCooling(0.16);
> >             _createPalette(_currentFireColor = 0);
> >
> >             addEventListener(Event.ENTER_FRAME, _update);
> > //            stage.addEventListener(MouseEvent.CLICK, _onClick);
> >         }
> >
> >         private function _onClick(e:MouseEvent):void {
> >             if (++_currentFireColor == int(_fireColor.height / 32)) {
> >                 _currentFireColor = 0;
> >             }
> >             _createPalette(_currentFireColor);
> >         }
> >
> >         private function _createEmitter():DisplayObject {
> >             var tf:TextField = new TextField();
> >             tf.selectable = false;
> >             tf.autoSize = TextFieldAutoSize.LEFT;
> >             tf.defaultTextFormat = new TextFormat('Verdana', 80,  
> > 0xffffff, true);
> >             tf.text = '__________________________________________';
> >             tf.x = (465 - tf.width) / 2;
> >             tf.y = 0;
> > //            tf.y = (465 - tf.height) / 2;
> >             return tf;
> >         }
> >
> >         private function _createCooling(a:Number):void {
> >             _color = new ColorMatrixFilter([
> >                 a, 0, 0, 0, 0,
> >                 0, a, 0, 0, 0,
> >                 0, 0, a, 0, 0,
> >                 0, 0, 0, 1, 0
> >             ]);
> >         }
> >
> >         private function _createPalette(idx:int):void {
> >             _redArray = [];
> >             _greenArray = [];
> >             _blueArray = [];
> >             _alphaArray = [];
> >             for (var i:int = 0; i < 256; i++) {
> >                 var gp:int = new int();
> >                 gp = _fireColor.getPixel(i, 0);
> >                 if (gp < 1050112)
> >                 {
> >                     _redArray.push(255);
> >                     _alphaArray.push(255);
> >                     _greenArray.push(255);
> >                     _blueArray.push(255);
> >                 } else {
> >                     _redArray.push(gp);
> >                     _alphaArray.push(0);
> >                     _greenArray.push(0);
> >                     _blueArray.push(0);
> >                 }
> >             }
> >         }
> >
> >         private function _update(e:Event):void {
> >             _grey.draw(_canvas);
> >             _grey.applyFilter(_grey, _grey.rect, ZERO_POINT, _spread);
> >             _cooling.perlinNoise(50, 50, 2, 982374, false, false,  
> > 0, true, _offset);
> >             _offset[0].x += 2.0;
> >             _offset[1].y += 2.0;
> >             _cooling.applyFilter(_cooling, _cooling.rect,  
> > ZERO_POINT, _color);
> >             _grey.draw(_cooling, null, null, BlendMode.SUBTRACT);
> >             _grey.scroll(0, -3);
> >             _fire.paletteMap(_grey, _grey.rect, ZERO_POINT,  
> > _redArray, _greenArray, _blueArray, _alphaArray);
> >            }
> >     }
> > }
> >                                       
> > _______________________________________________
> > Flashcoders mailing list
> > Flashcoders@chattyfig.figleaf.com
> > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> 
> Karl DeSaulniers
> Design Drumm
> http://designdrumm.com
> 
> _______________________________________________
> Flashcoders mailing list
> Flashcoders@chattyfig.figleaf.com
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
                                          
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to