Anyone? Tons of emails about the same topic over and over? But not one
reply to some AS2 coding help??
Surely it cant be too difficult for most of you 'coders' here, on this
mailing list?
//-------- Original email/post: ---------//
ok..maybe you gents can help me on a problem I've had off and on..
project summary:
* load in a dynamic image
* trace/create a lineTo object/fill on a layer above this loaded image
* click a button to create an inversed mask of this above created
lineTo object
* effect is the part you drew/colored is not 'cropped' out of the
loaded image (revealing whatever content below)
laymen's terms:
load in a image, using the mouse you draw an shape/object 'on' the loaded
image clip, click a button.. it crops it out (thats the effect).. so if you
load an image of a face..you draw a shape/object around the teeth/eye
(whatever) it will 'knock it out'..revealing whatever objects/clips are
underneath the loaded image clip..
project layout:
contentConainer:
a clips called faceContainer.. inside faceContainer is a clip called
centeredContainer
I load the image into faceContainer.centeredContainer (an offset/center the
centeredContainer inside faceContainer) so that if/when I scale/rotate
faceContainer clip..is scales/rotates form the center point.. (make sense?)
so:
parent.parent clip (contentContainer)
---parent clip (faceContainer)--
------lineContainer (holds the shape/object I'm using for my source of the
inverse mask ------maskContainer (empty clip to hold the dynamically created
clip from the inverse mask method above) ------centeredContainer (the place
where the dynamically loaded image gets loaded into, and is 'masked' by the
inversedMask method)
everything actually works FINE.... until I load in a BIG image.. if I load
an image that DOES not (originally) go -0 (before resize) or is smaller that
the display area..it works fine.. if I load in a HUGE image, something has
an _x value of less than 0 (zero).. it doesnt work.. (FYI: on the
movieClipLoader.onLoadInit() I do resize/scale the movieClip...but
again..for images that are originally very BIG before re-size..the
inversedmask effect does NOT work)
I'm fairly certain it has to do with the matrix.translate or maybe I need to
add to it? but no matter what I've tried.. I cant seem to get it to
work..or possible the threshold portion??
ok..onto the problem/question...
code snippets..
here is the resize code/check I do once the movieClip initializes
RE-SIZE:
// if height is too big then resize to fit height if
(target_mc._parent._height > max_height) {
target_mc._parent._height = max_height;
target_mc._parent._xscale = target_mc._parent._yscale; // if height
is too small then resize to fit height }else if(target_mc._parent._height <
max_height) {
target_mc._parent._height = max_height;
target_mc._parent._xscale = target_mc._parent._yscale; }
INVERSED MASK: ( mc = contentContainer.faceContainer.lineContainer)
//--------------------- [reverse mask code] --------------------- //
function inverseMask(mc:MovieClip) {
contentContainer.faceContainer.centeredContainer.cacheAsBitmap = true;
var _BMP:BitmapData = new
BitmapData(contentContainer.faceContainer.centeredContainer._width,
contentContainer.faceContainer.centeredContainer._height, true, 0xFFFFFFFF);
var invert:ColorTransform = new ColorTransform(0, 0, 0, 1);
var matrix:Matrix = new Matrix();
matrix.translate(0, 0);
//matrix.translate(mc._x, mc._y); //doesnt work
//matrix.translate(contentContainer.faceContainer.centeredContainer._x,
contentContainer.faceContainer.centeredContainer._y); //doesnt work
//matrix.identity();
//matrix.scale(contentContainer.faceContainer.centeredContainer._xscale,
contentContainer.faceContainer.centeredContainer._yscale);
_BMP.draw(mc, matrix, invert);
_BMP.threshold(_BMP, new Rectangle(0, 0, Stage.width, Stage.height),
new Point(0, 0), "<", 0xFFFFFFFF, 0x00FF0000);
var BMP:BitmapData = _BMP.clone();
var maskMC:MovieClip =
contentContainer.faceContainer.maskContainer.createEmptyMovieClip("invertedM
ask", contentContainer.faceContainer.maskContainer.getNextHighestDepth());
maskMC.attachBitmap(BMP,
contentContainer.faceContainer.maskContainer.getNextHighestDepth());
maskMC.cacheAsBitmap = true;
mc._visible = false;
return maskMC;
}
anybody good with matrix stiff and bitmap class??
I've tried doing/changing everything I can.... but it hasn't seemed to
work..
again to re-cap.. everything works.. if the image I load is 'around' the
470x410 dimension..(or smaller) it works fine..
I've tested it on a 550c462 image..and it works..however.... when I load in
an image 1500x1500 for example.. the inversed mask DOES NOT work..
it ONLY seems to work in the upper, left hand most corner....
I guess my 'thoughts' on this are:
since the image is centered, and being that it is 1500x1500.. the _x of the
'faceContainer' is less than zero (0)...and somehow this is affecting where
inversedMask function is applied?.. which is why I think it could be the
Matrix...OR, possible even the threshold portion of the code?
Thanks
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders