RE: [Flashcoders] Copy negative pixels from a movie clip using draw()
I had the same problem a while ago, here was my final solution [as] import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; import flash.geom.Matrix; // function staticCloneMC(target, mc, padding) { var bounds = mc.getBounds(mc); var offset_y = padding; var offset_x = padding; bounds.height = bounds.yMax-bounds.yMin; bounds.width = bounds.xMax-bounds.xMin; var w = bounds.width+offset_x; var h = bounds.height+offset_y; bounds.x = bounds.xMin-offset_x/2; bounds.y = bounds.yMin-offset_y/2; var lvl = target.getNextHighestDepth(); var clip = target.createEmptyMovieClip(dupe_+mc._name+_+lvl, lvl); var holder = clip.createEmptyMovieClip(holder, 1); clone_bitmap = new BitmapData(w, h, true, 0x); holder.attachBitmap(clone_bitmap, 1, auto, true); clone_bitmap.draw(mc, new Matrix(1, 0, 0, 1, bounds.x*-1, bounds.y*-1)); holder._x = bounds.x; holder._y = bounds.y; clip._x = mc._x; clip._y = mc._y; clip.bitmap=clone_bitmap return clip; } function animCloneMC(target, mc, padding) { var lvl = target.getNextHighestDepth(); var clip = target.createEmptyMovieClip(dupe_+mc._name+_+lvl, lvl); var holder = clip.createEmptyMovieClip(holder, 1); clip.mc = mc; clip.padding = padding; clip.onEnterFrame = function() { var bounds = this.mc.getBounds(this.mc); var offset_y = this.padding; var offset_x = this.padding; bounds.height = bounds.yMax-bounds.yMin; bounds.width = bounds.xMax-bounds.xMin; var w = bounds.width+offset_x; var h = bounds.height+offset_y; bounds.x = bounds.xMin-offset_x/2; bounds.y = bounds.yMin-offset_y/2; clone_bitmap = new BitmapData(w, h, true, 0x); holder.attachBitmap(clone_bitmap, 1, auto, true); clone_bitmap.draw(mc, new Matrix(1, 0, 0, 1, bounds.x*-1, bounds.y*-1)); holder._x = bounds.x; holder._y = bounds.y; }; clip._x = mc._x; clip._y = mc._y; clip.bitmap=clone_bitmap return clip; } [/as] -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Niclas Åberg Sent: 10 January 2007 13:50 To: flashcoders@chattyfig.figleaf.com Subject: [Flashcoders] Copy negative pixels from a movie clip using draw() Hi all, I'm using the BitmapData.draw method, and I've bumped into a problem. I need to copy all the pixels from a movie clip, including the pixels which are on negative coordinates. I've only succeeded copying the ones on positive coordinates. Has anyone experienced the same thing, and, maybe, have a solution? I got the basic code from Livedocs, written by Andreas Weber (of this list?) code below. How would I modify it to accept negative pixels? Thamks, Niclas ---8--- // 'snapshot' import flash.display.BitmapData; // create a clip with visual content original = this.createEmptyMovieClip(orig, this.getNextHighestDepth()); original.opaqueBackground = 0xFF; original.lineTo(100,100); // create a BitmapData object with the same size var myBitmapData:BitmapData = new BitmapData(original._width, original._height); // attach the Bitmap to a clip so that it will be rendered on screen var copy:MovieClip = this.createEmptyMovieClip(cop, this.getNextHighestDepth()); copy.attachBitmap(myBitmapData, this.getNextHighestDepth()); copy._x = 300; // take a 'snapshot' myBitmapData.draw(original); ___ Flashcoders@chattyfig.figleaf.com To change your subscription options or search the archive: http://chattyfig.figleaf.com/mailman/listinfo/flashcoders Brought to you by Fig Leaf Software Premier Authorized Adobe Consulting and Training http://www.figleaf.com http://training.figleaf.com ECM Systems Ltd, Ellifoot Park, Burstwick, East Yorkshire HU12 9DZ Tel: 01964 672000 Fax: 01964 671102 Registered in England no. 01646471 The information contained within this email expresses the views of the sender and not necessarily those of the company. It is private and confidential and may be legally privileged. It is intended solely for those authorised to receive it. If you are not the intended recipient you are hereby notified that any disclosure, copying, distribution or action taken in reliance on its contents is strictly prohibited and may be unlawful. If you have received this email in error, please telephone us immediately on 01964 672000 or email a reply to highlight the error and then delete it from your system. This email may contain links to web-sites, the contents of which ECM Systems Ltd have no control over
Re: [Flashcoders] Copy negative pixels from a movie clip using draw()
Hi all, I'm using the BitmapData.draw method, and I've bumped into a problem. I need to copy all the pixels from a movie clip, including the pixels which are on negative coordinates. I've only succeeded copying the ones on positive coordinates. Has anyone experienced the same thing, and, maybe, have a solution? Use a transformation matrix as the second parameter of the .draw() method (check the documentation). You can use it to move the 'data' before drawing (ie, to get 100 pixels width from the negative side, you'd move it 100 pixels right). Zeh ___ Flashcoders@chattyfig.figleaf.com To change your subscription options or search the archive: http://chattyfig.figleaf.com/mailman/listinfo/flashcoders Brought to you by Fig Leaf Software Premier Authorized Adobe Consulting and Training http://www.figleaf.com http://training.figleaf.com
Re: [Flashcoders] Copy negative pixels from a movie clip using draw()
Mike, You have, quite literally, saved the day! Thanks a lot for the very useful and quick response. Niclas Mike Mountain wrote: I had the same problem a while ago, here was my final solution [as] import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; import flash.geom.Matrix; // function staticCloneMC(target, mc, padding) { var bounds = mc.getBounds(mc); var offset_y = padding; var offset_x = padding; bounds.height = bounds.yMax-bounds.yMin; bounds.width = bounds.xMax-bounds.xMin; var w = bounds.width+offset_x; var h = bounds.height+offset_y; bounds.x = bounds.xMin-offset_x/2; bounds.y = bounds.yMin-offset_y/2; var lvl = target.getNextHighestDepth(); var clip = target.createEmptyMovieClip(dupe_+mc._name+_+lvl, lvl); var holder = clip.createEmptyMovieClip(holder, 1); clone_bitmap = new BitmapData(w, h, true, 0x); holder.attachBitmap(clone_bitmap, 1, auto, true); clone_bitmap.draw(mc, new Matrix(1, 0, 0, 1, bounds.x*-1, bounds.y*-1)); holder._x = bounds.x; holder._y = bounds.y; clip._x = mc._x; clip._y = mc._y; clip.bitmap=clone_bitmap return clip; } function animCloneMC(target, mc, padding) { var lvl = target.getNextHighestDepth(); var clip = target.createEmptyMovieClip(dupe_+mc._name+_+lvl, lvl); var holder = clip.createEmptyMovieClip(holder, 1); clip.mc = mc; clip.padding = padding; clip.onEnterFrame = function() { var bounds = this.mc.getBounds(this.mc); var offset_y = this.padding; var offset_x = this.padding; bounds.height = bounds.yMax-bounds.yMin; bounds.width = bounds.xMax-bounds.xMin; var w = bounds.width+offset_x; var h = bounds.height+offset_y; bounds.x = bounds.xMin-offset_x/2; bounds.y = bounds.yMin-offset_y/2; clone_bitmap = new BitmapData(w, h, true, 0x); holder.attachBitmap(clone_bitmap, 1, auto, true); clone_bitmap.draw(mc, new Matrix(1, 0, 0, 1, bounds.x*-1, bounds.y*-1)); holder._x = bounds.x; holder._y = bounds.y; }; clip._x = mc._x; clip._y = mc._y; clip.bitmap=clone_bitmap return clip; } [/as] -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Niclas Åberg Sent: 10 January 2007 13:50 To: flashcoders@chattyfig.figleaf.com Subject: [Flashcoders] Copy negative pixels from a movie clip using draw() Hi all, I'm using the BitmapData.draw method, and I've bumped into a problem. I need to copy all the pixels from a movie clip, including the pixels which are on negative coordinates. I've only succeeded copying the ones on positive coordinates. Has anyone experienced the same thing, and, maybe, have a solution? I got the basic code from Livedocs, written by Andreas Weber (of this list?) code below. How would I modify it to accept negative pixels? Thamks, Niclas ---8--- // 'snapshot' import flash.display.BitmapData; // create a clip with visual content original = this.createEmptyMovieClip(orig, this.getNextHighestDepth()); original.opaqueBackground = 0xFF; original.lineTo(100,100); // create a BitmapData object with the same size var myBitmapData:BitmapData = new BitmapData(original._width, original._height); // attach the Bitmap to a clip so that it will be rendered on screen var copy:MovieClip = this.createEmptyMovieClip(cop, this.getNextHighestDepth()); copy.attachBitmap(myBitmapData, this.getNextHighestDepth()); copy._x = 300; // take a 'snapshot' myBitmapData.draw(original); ___ Flashcoders@chattyfig.figleaf.com To change your subscription options or search the archive: http://chattyfig.figleaf.com/mailman/listinfo/flashcoders Brought to you by Fig Leaf Software Premier Authorized Adobe Consulting and Training http://www.figleaf.com http://training.figleaf.com ECM Systems Ltd, Ellifoot Park, Burstwick, East Yorkshire HU12 9DZ Tel: 01964 672000 Fax: 01964 671102 Registered in England no. 01646471 The information contained within this email expresses the views of the sender and not necessarily those of the company. It is private and confidential and may be legally privileged. It is intended solely for those authorised to receive it. If you are not the intended recipient you are hereby notified that any disclosure, copying, distribution or action taken in reliance on its contents is strictly prohibited and may be unlawful. If you have received this email in error, please telephone us immediately on 01964 672000 or email a reply to highlight the error and then delete it from your system. This email may contain