Actionscript 3 :: Bitmapdata.hittest Collisions With Opaque/transparent Png Files Imported With Loaders
Aug 27, 2010
I have two png files. I import them using loaders. The images in the png files each have opaque (solid) and transparent parts. I want to use the bitmapdata.hittest method to detect when their opaque parts have collided.
[Code]...
I've been working on this for a couple of days now and nobody seems to know how to do this. Please don't post the examples on google, I've looked through at least the first five pages of results on google and haven't gotten any of them to work. The problem is that none of them provide an example of using this method with loaders, so I'm guessing the reason I can't get it to work is some gimmick associated with them.
im trying to draw opaque pixels on a transparent bitmapdata background
heres the ex:
ActionScript Code: //TRANSPARENT BACKGROUND var _pixelColor:uint = 0x9998002E; var _bmpd:BitmapData = new BitmapData(4, 7, true, 0x00333333);
[Code].....
This example paints 2 arrows, the first is using the transparent background, and the second is using an opaque background on the BitmapData.
What I'm trying to achieve is to paint the pixels of the arrow completely opaque on the transparent background. But as you can see, the pixel is at 99% of its opacity (var _pixelColor:uint = 0x9998002E) How can I paint 100% opaque pixels on a transparent BitmapData "canvas"?
I know you use the HitTest function to check for collisions, but how would I do that the moment a movie clip is dynamically created. So the moment the clip is created it would check if it is overlapping another clip. Also, does it matter if the clips are at different depths?
I am trying to detect if a point on an image is on the opaque part of the image or the transparent part. I have a image in a 48X48 area. half the image has transparent pixels. I seem to detect a hit on every part of the image like a bounding box test but I don't want that. For example . I place a 48X48 size image on stage at 0,0. At point 40,20 on the stage the image has transparent pixels but I get it detects a hit? mm.img.hitTestPoint(40,20,true); //it should give me false
how to use the bitmapData collision method. Now I'm trying to figure out if there is a way to see at what angle or coordinate of the bitmapData the collision happens? I need it in order to figure the accurate bounce angle after the collision occurs.
I have found that events Events.ACTIVATE and Events.DEACTIVATE do not fire in the browser when wmode = transparent or when wmode = opaque. This is found when the swf is published with or without fullscreen mode capability.However, the events do fire:In the standalone player, such as opening the publised swf locally ( not using a browser ) In the browser when wmode = window
My Goal:Is to detect Events.ACTIVATE and Events.DEACTIVATE with a swf that has been published with fullscreen capability, where the wmode = opaque. ( I have found that when in fullscreen and wmode = window, mouse interactivity events, such as clicks, do not fire. Mouse interactivity is something I need, which I get with wmode = transparent or opaque. )
FYI:I have found that when wmode = window, the DEACTIVATE event fires both when entering and leaving fullscreen mode. The event ACTIVATE does not fire when entering fullscreen mode or when returning to the browser from fullscreen ( user presses Escape, etc ). In the event the user switched to a different window, the DEACTIVATE event fires. When the user returns to the browser, the ACTIVATE fires in IE but does not fire in Firefox until the user clicks in the swf
Setup: Flash CS4 Using the Flash published HTML ( wmode = transparent / opaque ) Firefox 3.6.6 ( Windows XP Pro ) IE 8.0.60 ( Windows XP Pro )
How do I detect collisions between movie clips and a line created through actionscript (with the lineStyle, lineTo, etc. commands). I tried making the line inside a movie clip and doing a hitTest with that movie clip, but it did nto work.
I have a customized drag event that works great for most things:
[Code]...
The issue is that when I use this code with wmode=transparent or wmode=opaque the MOUSE_LEAVE event is not detected when the MOUSE_UP event occurs off the stage. Is there a way to detect the MOUSE_LEAVE event when wmode is transparent or opaque? OR Is there a way to detect that the wmode is set to transparent or opaque so that a work-around may be implemented?
Im making a simple game with destructable terrain. Therefore i use a bitmap for the ground and a movieClip for the player. When the ground is a bitmap i cant use regular hitTestPoint because of the bitmaps transparent pixels. So i looking i the livedocs for the bitmapData.hitTest but i rly dont understand all the parameters.So my question is. How can i reproduce this with bitmapData.hitTest?
I am trying to create a tween in which an imported jpg will fade away to completely transparent. After importing the jpg image and converting to a movie clip symbol, I am able to create a motion tween where it grows and moves, but using the alpha setting, I cannot get it to become transparent. Is this not possible with an imported image?
I'm working on a game (my first) where objects touching is A-Ok, but I want to detect overlapping collisions ahead of time, prevent them, and react. This seems like a pretty basic and common thing, such as a character walking along a platform (even though by touching it it's 'colliding'), but of all the many many collision detection tutorials I've looked at, none of them have covered this case--they all assume that objects touching should be indistinguishable from overlapping. I've been using a workaround of a slightly smaller hitbox to use for collisions, but it has issues of it's own that make it not so good. So basically I'm looking to redo my CD from scratch.
So, like I said, I'd like to know how to differentiate between 'touching' collisions and overlapping collisions, but even a way to keep touching collisions from triggering entirely would work.
import flash.display.BitmapData; import flash.geom.Point; // var BitmapA:BitmapData = new BitmapData(550, 400, true, 0x00);
[code]....
This is using the bitmapdata.hittest way to check whether the one bitmap is overlapping the other. Throug pixel-to-pixel detection.But I'm having trouble understanding this line:
Code:
if (BitmapA.hitTest(destPoint, 255, BitmapB, currPoint, 255))
I know that destPoint is the topleft point from which it is determining all opaque pixels. No value is given to destPoint so basically it is checking from 0,0. Having determined all opaque pixels from that bitmap it should compare them with the opaque pixels of the other bitmap. But why does currPoint use the topleft coordinate of its movieclip? Couldn't it just as well use 0,0 too? I mean when determining the opaque pixels of bitmap two it might as well start checking for those from 0,0 as the topleft position as well?
I should mention that the reason for me taking this approach is that I have a PNG, with transparent areas, I need to test for collisions in the non-transparent areas, which is why I was using this approach
I have a PNG, i import that and convert to bitmap, then convert to bitmapData
I have a BitmapData object created dynamically that contains user-drawn shapes. I then attach that BitmapData object to a MovieClip via a Bitmap object and set that MovieClip as a mask to another MovieClip. The mask works but the whole bounding rectangle of the BitmapData is acting as the mask. But I want to exclude the transparent portion from the mask so only user-drawn shape can be set as mask. Can anyone tell how to achieve that?
I loaded a flv into a uiloader. I have 4 buttons which load different projects in. A quiz, an animation and a video. Works great apart from when you click the buttons either the flv sound remains or if you click the flv button I have multiple instances of the audio. The main file AS3 is
Having used copyPixels to display an image, I'm trying to copy another in it's place when the mouse is hovering.The only way I can copy the new image over the old is by setting the If statement to == false. I know there's something wrong with testing the bitmapData of the loaded .png because the hitTest would apply to anything copied from that tile sheet... but how to designate just the copied area?
I've got an application which gives the viewer the capability to create a design then further customize it with their own art, i.e. a logo, which can be a .jpg, .gif or .png. I may narrow the file options down, but right now I'm finding when one prints this design (I have a "print" button as well) any transparent .png file that's in this design prints out with a white "box" that is obviously the canvas on which said .png was designed.
Code: ArgumentError: Error #2005: Parameter 0 is of the incorrect type. Should be type BitmapData. at flash.display::BitmapData/hitTest()
This is the line where I get this error:
Code: if (player.bitmapData.hitTest(player.point, 255, tempUpgrade.bitmapData, tempUpgrade.point, 255))
I have absolutely no idea what went wrong. My object (tempUpgrade) is generated inside of a manager-class. There I can define the look of it and it gets cached. The image I use is a spritesheet (png) that's embed inside of my library-class. The spritesheet is splitted into appropriate pics via a CacheTileSheet-class.After that process they get thrown inside of an array because I need the bitmapData for pixel-perfect collision detection. Of course this is not the complete code so if someone needs more please let me know.
I have a huge background bitmapdata with a corresponding grid. I'm trying to draw the two parts onto a different bitmapdata, but for some reason, the bitmap for the grid is overriding the bitmapdata of the background that is being drawn first. The grid seems to be making the entire third bitmapdata transparent for some reason.
My code for creating the background and corresponding grid:
I have a list of images, and without scanning through each pixel in each image, I want to find out if the image contains transparency (at least one non-opaque pixel).Is there a shortcut to do this (like a property of bitmapData object) rather than looping through the pixels?
Is there any way of checking what percentage of the BitmapData is filled, and what percentage is transparent?You could easily brute-force it by looping through each pixel and counting which ones are empty
I am trying to use the bitmapData.setPixels method to set certain pixels in the bitmap transparent.But no matter what I do, it always seems to set the pixel(s) black (non-transparent).Here is my code:
[AS] bmpd = new ImageFromLibrary(0, 0); bmpd.setPixel(0, 0, 0x00000000); [/AS]
I've written a simple MovieClip replacement that converts an existing imported MovieClip to a sequence of BitmapData. This removes the requirement for Flash to render vector data in the MovieClip on each frame.
But BitmapData has a huge memory footprint. I've tried converting the BitmapData to a ByteArray and using the compress() method. This results in a significantly smaller memory footprint. But it has proven impractical. For each redraw, I tried uncompressing()'ing the ByteArray, then using SetPixels to blit the data to the screen, then re-compressing() the frame. This works but is terribly slow.
So I was wondering if anybody else has an approach I could try. In Flash, is it possible to compress bitmap data in memory and quickly blit it to the screen?
I wonder how native animated GIFs work in Flash. Does it uncompress them to BitmapData behind the scenes, or is frame decompression done on the fly?
I am using Flash CS4 and Flash CS5.I bought some music from Amazon MP3 that I want to use in my Flash animation and I keep getting this error upon import:one or more files were not imported because there were problems reading them.