ActionScript 3.0 :: BitmapData Draw() Method - Draw The Bitmap On The Stage At Design Time?
Mar 18, 2009
I am using the draw() method of the BitmapData to encode a jpeg of part of the image. Now this should be easy enough given the object I want to draw to the bitmap is on the stage at design time so I know its location and dimetions exactly! Heres the code I have in place.
Code:
var myBitmapSource:BitmapData = new BitmapData ( street.width, street.height, false, 0x333333);
myBitmapSource.draw(street, null, null, null, new Rectangle( 96, 5, 571, 450 ), true );
I know for a FACT that no part of the street clip I am drawing out is in negative space, and it's registration is (0,0). However, it cuts off A lot of the top of my image. y=5 in the above rectangle is where I need the top to be, but it cuts the top off of the image... even if I change it to 0, it has no effect.
I am having an issue with using BitmapData.draw(stage). I am getting the following error:
SecurityError: Error #2123: Security sandbox violation: BitmapData.draw: file:///C|/Documents%20and%20Settings/bla...bla...bla.swf cannot access null. No policy files granted access. Here is a portion of my code:
var bd:BitmapData = new BitmapData(2800, 2100); bd.draw(stage);//this is where the error happens All of the files referenced (.xml/.jpg/.swf) are located in the same local folder as the main .swf. How do I get around this error? The main objective is to print the stage using PrintJob(). I am using Flash Professional CS5.5 and publishing to Flash 10.0/10.1. Let me know if I need to supply any more info.
I'm trying to do some lean blitting for an object that rotates by rotating it once at startup and capturing a BitmapData snapshot of each 5 degrees. The problem I'm having is that the draw() method of the BitmapData object is only picking up pixels in the MovieClip that are below and to the right of the registration point. If I change the MC so that the registration point is in the top left corner, I sometimes get what looks like most of the pixels, but the entire object rotates into and out of the frame, since it's rotating around the corner and not the center.
I'm making a copy of a Sprite via the BitmapData Draw method. It kind of works other than the top portion of the bitmap gets cut off (replaced with transparent pixels). It looks like it's about the same height as the Sprite's y value.
I am drawing a flash sprite on a BitmapData using its draw() method. This sprite has some nested objects with 0 alpha, yet the draw() method draws them on the bitmap data.
I think it has to do with the color transform I am using, but I have no idea how to change it to achieve the effect I want.
The color transform is the following:
Code: new ColorTransform(1, 1, 1, 1, 255, 255, 255, 255);
I am using these values in order for the Bitmap to have white pixels wherever the object was, and black where there is nothing. The draw() also draws my alpha = 0 objects in white as well.
The documentation says that clipRect parameter of the BitmapData.draw method sets clipping for the source.Reading this I wrote an AnimatedObject class for my potential flash game. This class draws a frame from a .png animation strip, and doesn't work with Flash scene hierarchy.
I have a .swf file at one domain that is trying to play a video on my influxis account. So far, so good.But I am trying to draw a bitmap based on the video that is playing on my influxis account and I am getting the following error:
Can someone explain how the cross-domain policy file works? Like, do I need to place the policy file on the same server as my .swf or on the server with the influxis account?Influxis has a admin panel where you can set a referring domain, do I just enter the domain of my .swf file?Also, do I have to add actionscript to my .swf file to access the policy file?
I wrote a collision detection class that works off using BitmapData.hitTest. Basically, every update, the .draw method is called and then two BitmapData's are hitTest'ed against each other to see if there is a collision.It works pretty well, however if I start rotating the source MovieClip I use for the BitmapData, the transformations don't get registered in the draw method. So what I did was pass through a Matrix in the draw method. That works. But here's the actual issue. If I output the BitmapData to a Bitmap on the stage, I see that Bitmap is, in fact, rotating, but now it's exceeding the bounds (width and height) of the BitmapData. Which is cropping / clipping the image of the source MovieClip.
UPDATE: Basically, when the Bitmap clone of the MovieClip rotates outside the positive co-ordinate space, it doesn't get drawn. It rotates outside the bounds of the BitmapData set width and height. I can multiply the bounds by 2, and then center the bitmap inside the set bounds, but then the origin point is never fixed and the object is always being moved around. Works pretty well, but makes aligning the object to any specific point impossible.Here's my isolated test code. It requires you to have a MovieClip on the stage named "iTest". I used a fairly vertical arrow shape (higher than it is wide) so I could keep track of rotations visually accentuate the clipping problem:
var rotateTimer:Timer = new Timer(10); function rotateObject_init():void {
My game moves small pieces slowly. I am trying to bitmap blit with either CopyPixels() or Draw() but because the end result always blits to a whole pixel value, the animation looks choppy. Have a look at my test swf where I use a small helicopter, which shows 60fps with very choppy movement. I thought the bitmapData's draw() method would allow me to smooth, but it apparently only smooths changes made by it's matrix argument. My only other resort is to go back to using movieClips with hundreds of frames that represent the various poses.
I am copying a bunch of shapes from my stage to a set of bitmaps for filtering.
Is there a faster way to do this? Is there a way to copy everything over together from the stage rather than how I'm doing it by copying the shapes in my array one by one?[code]...
i have a class thats create a class with bitmapData that merge 2 IBitmapDrawable. one of them is 24*20 while the other is 16*16.i want to draw the smaller first in a bitmapData object which its width and height are 24*20 but i want to draw it in the center of the big bounds.
I've been using BitmapData.copyPixels() to draw graphics onto a canvas (Bitmap).I need to rotate the resulting graphics without the use of draw() because it's vastly slower.How can I rotate the target graphic? I'm assuming that there might be a formula or library that I can use which will first reorganize the pixels that make up a graphic based on an origin (point) and radians.I'm pretty certain that I'm not capable of creating such logic, so if there are any known libraries that do this, that would be awesome.I'd like to achieve something similar to XNA's SpriteBatch.Draw() method, which accepts rotation as its 5th argument.
I'm currently working on a flash game and I need to know how to addChild a BitmapData or draw a BitmapData to screen. If I can't than how can I give a DisplayObject my BitmapData?
I'm using Sandy to animate some objects in 3D. What I currently do to images which are EXPORTED in the library, I want to do to some bitmaps that I create using the DRAW technique. But it wont work :-(
CODE FOR 'CREATED BITMAP' : ActionScript Code: var bData:BitmapData = new BitmapData(myObject.width,myObject.height); bData.draw(mask5);
[Code]....
Sandy doesn't seem to treat the 'created' bitmap the same as those that are exported from the library.
the problem may be a simple one but I can't figure it out. I have an image loaded into BitmapData. now I want to take text from a textinput and put it on the BitmapData. Basically it's drawing a text on the BitmapData and get the result as another BitmapData that will consist of the original BitmapData with the text drawn over it on a specified position
When is a Bitmap not a Bitmap ?I can apply (using Sandy) an image as a texture :
var material:BitmapMaterial = new BitmapMaterial(new myImage(1,1)); myCone.appearance = new Appearance( material ); I can trace an object and form a bitmap :
I am trying to copy an image.The green stuff on the first image is a mask(which is not set, its just there to show it)Everything works fine when I dont set a mask to an image (picture 1)But when I set the mask I get picture 2.What I want is to copy a part of the image which is visible when the mask is set. I know what size the mask and image are going to be so I can calculate the size of the area which i need to copy.This is the code I am using, image has registration point in the center, thats why i use matrix.translate (not sure if its the right way).Also there is no image scaling applied (there might be later), thats why I am using matrix.scale.
Code: var _reflectionHolder:Sprite = new Sprite(); addChild(_reflectionHolder); _reflectionHolder.y =_targetObject.y + _targetObject.height / 2 + 10;[code]......
I'm building a flickr application in flex at the moment but i keep getting sandbox errors when i invoke BitmapData.draw();.After doing some google research i found that the proper policyfile needs to be loaded.i do this using: Code:Now this still doesn't resolve the issues. Upon further research i found that i need to check the policy file first using checkPolicyFile = true;
I'm trying to use images from wikimedia to tile a shape, but Wikimedia does not use crossdomain.xml files, so I get a security error whenever I try to do anything with BitmapData.draw().
I have a sprite with some objects in it which are transformed in 3D (positioned and rotated). The objects form a coneshape in such a way that the objects that make up the back are hidden.When I use that sprite as a source for the bitmapData.draw() it is drawn from another viewpoint so it seems. In my case the copy is viewed slightly from the bottom and right.
Bottomline:Does anyone know of a way to duplicate the image of a sprite which contains 3D manipulated graphics?
I am using NetStream.appendBytes() to play a local video (no server involved) in Adobe AIR. I would like to use BitmapData.draw() to take a picture of the video output, but I am getting this error:
This is only sample code use for an explanation. The error would happen when calling the getImage method while the video is playing. The error mentions a policy file not found. Since the file is loaded locally there isn't really a place to put a policy file. Is there a policy setting somewhere that needs to be set or is the BitmapData.draw feature just not available when using appendBytes?
I'm currently working on a flash game and I need to know how to addChild a BitmapData or draw a BitmapData to screen. If I can't than how can I give a DisplayObject my BitmapData?
How to tell BitmapData do draw MC on custom coordinates?
when I call draw function, it has not got argument of coordinates, where to draw, and It draws on x=0 and y=o coordinates, and if I want x=50?[code]...
I know half of the problem:the embedded movieclip is "content" of a Loader, and you can not draw Loaders directly with bitmapData.draw(aLoader);with a normal Loader, you could access the Loader.content and draw it but not in the embedded case.adobe forums could not give an answer to this and i searched for hours through the web ...
[Embed(source="aMovieClip.swf")] private static var AMovieClip:Class; //...
I am trying to load a external swf and then use the BitmapData.draw() method to draw the loaded swf to a bitmap. This does not seem to work. If I draw some lines into the loaded swf using the .lineTo() method and then use BitmapData.draw() i do see the lines that are made by this method, but not the content i put in the swf. Is it just not possible to do this