> 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