I think the static method would work if I were just doing rectangles, but
with lineTo, curveTo I think it needs to be an object.

A new thought that occurred to me: Have an object that will have a fill
sprite and a stroke sprite, separate from each other. Then if you call
lineStyle() with the inner:Boolean = true anytime you call a drawing command
it would draw a stroke in the stroke Sprite but offset all the values so the
stroke is inside. If you specify overlap:Boolean = false; then the object
would compensate so that the stroke does not overlap the fill.

It may work, but it would only really work if lineStyle pixelHinting = true,
and better still, if I forced all values to be int. There's no reason for it
not to be anyway.

Does that make sense?

Ktu

On Tue, Apr 13, 2010 at 2:40 PM, Latcho <spamtha...@gmail.com> wrote:

> Thanks for thinking out loud :)
> Can do that too if I need it. But if you ever write something generic I'd
> love to use / see it because I don't have the time for this now.
> Personally I wouldn't extend directly on shape but create some static
> methods like
> GraphicsInnerStroke.drawRect(myDispObj.graphics, linestyleObject, method
> arguments );
>
> Cheers,
> Latcho
>
>
> atm the best thing I can come up with is an object that can recreate the
> draw methods, assuming that you want a stroke on it. If I am just going to
> stick with drawRect, drawRoundRect, and drawRoundRectComplex I can do that.
> Looking into 'drawing' an inner stroke when using lineTo curveTo etc and
> other draw commands will take a bit more work and time.
>
> I kind of feel like it might end up being InnerStroke extends Shape, and
> creating public methods that are 'override's of the graphics drawing api.
> Just thoughts out loud.
>
> Ktu
>
> On Tue, Apr 13, 2010 at 12:09 PM, Latcho <spamtha...@gmail.com <mailto:
> spamtha...@gmail.com>> wrote:
>
>
>
>   Hi Ktu,
>   Thanks for your supportive emails.
>   I'm not a newbie but I thought I might have missed something on the
>   API that wasn't apparent in the as3 docs.
>
>   It sucks to have it confirmed it isn't supported :)
>   The thing is I want to stay as close to the original api as possible
>   preferably without wrappers (we're not only talking about rects but
>   also curved shapes are possible you see...). Though I'd be happy to
>   see what you're take on it looks like :)
>
>   Thanks,
>   Latcho
>
>
>   On 13-04-10 16:59, Ktu wrote:
>
>        >From my experience, there is no API support for it. It sucks I
>       know. I deal with this problem all the time.
>
>       For transparency, the beginFill(color:uint, alpha:Number); you
>       can specify alpha. With the system I have shown you, the stroke
>       would be transparent over top of the original color, so a red
>       square with a semi transparent blue border would produce purple
>       as your border.
>
>       If you want the stroke to be unaffected by the inside square it
>       wouldn't be that hard to write a class to handle that. In fact,
>       I use this so often I think I will do that.
>
>       I should be able to finish by Thursday at the latest and I'll
>       share when I'm done. If you are eager for it, the idea would be
>       to have build an object, that you would specify dimensions for,
>       and fill color and alpha, and also the border fill and alpha,
>       then when it draws the rectangle, it incorporates the stroke
>       width into consideration so that there are no graphics behind it.
>
>       Ktu
>
>       On Tue, Apr 13, 2010 at 7:50 AM, spank man <spamtha...@gmail.com
>       <mailto:spamtha...@gmail.com> <mailto:spamtha...@gmail.com
>
>       <mailto:spamtha...@gmail.com>>> wrote:
>
>           nice and simple sollution,
>           but not so fine if you want the inner to be semi-transparent....
>           Other ideas ? So no API support on this ?
>
>
>           On Tue, Apr 13, 2010 at 4:11 AM, Ktu
>       <ktu_fl...@cataclysmicrewind.com
>       <mailto:ktu_fl...@cataclysmicrewind.com>
>       <mailto:ktu_fl...@cataclysmicrewind.com
>       <mailto:ktu_fl...@cataclysmicrewind.com>>> wrote:
>
>               When I want inside borders I do this:
>
>
>               var spr:Sprite = new Sprite();
>               addChild(spr);
>               var g:Graphics = spr.graphics;
>               g.beginFill(0xFF45A3);
>
>               g.drawRect(0, 0, 100, 100);
>               g.endFill();
>               drawInsideStroke(g, 0, 0, 100, 100, 1, 0x32010B);
>
>               function drawInsideStroke(graphics:Graphics, x:int, y:int,
>               width:int, height:int, thickness:int = 1, color:uint =
>       0x000000) {
>                   graphics.endFill(); // for good measure, but maybe not?
>                   graphics.beginFill(color);
>                   graphics.drawRect(x, y, width, height);
>                   graphics.drawRect( x + thickness, y + thickness, width -
>               (thickness * 2), height - (thickness * 2) );
>                   graphics.endFill();
>
>               }
>               trace(spr.width,spr.height);  // -> 110 110
>               trace(spr.getBounds(this)) // -> (x=-5, y=-5, w=110, h=110)
>
>
>               On Mon, Apr 12, 2010 at 7:14 PM, Latcho
>       <spamtha...@gmail.com <mailto:spamtha...@gmail.com>
>       <mailto:spamtha...@gmail.com <mailto:spamtha...@gmail.com>>> wrote:
>
>                   Hello,
>                   Something i still can't solve is that when drawing for
>                   example a rect in a Shape graphics object with a fat
>                   lineStyle, the line drawn is always half it's
>       thicknes in
>                   the inner part of the rect and half outside; This always
>                   gives me headaches  when aligning, measuring,
>         skinning or
>                   bitmapping stuff since half the line is in the
>       negative x
>                   / y coordinate space of the shape..
>                   I know that I can use the getBounds method to get me the
>                   accurate  negative x and y offset of the (line)
>       graphics,
>                   but what I really want is to have the line beign drawn
>                   totally within the rect. Is that possible by the default
>                   graphics api ? Then please expand on my example.
>
>                   Thanks.
>                   Latcho.
>
>
>                   var spr:Sprite = new Sprite();
>                   addChild(spr);
>                   var g:Graphics = spr.graphics;
>                   g.lineStyle(10,0xff0000);
>                   g.beginFill(0x0000ff);
>                   g.drawRect(0,0,100,100);
>                   g.endFill();
>                   trace(spr.width,spr.height);  // -> 110 110
>                   trace(spr.getBounds(this)) // -> (x=-5, y=-5, w=110,
>       h=110)
>
>                   _______________________________________________
>                   Flashcoders mailing list
>       Flashcoders@chattyfig.figleaf.com
>       <mailto:Flashcoders@chattyfig.figleaf.com>
>       <mailto:Flashcoders@chattyfig.figleaf.com
>       <mailto:Flashcoders@chattyfig.figleaf.com>>
>
>       http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
>
>
>
>
>
>   _______________________________________________
>   Flashcoders mailing list
>   Flashcoders@chattyfig.figleaf.com
>   <mailto: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
>
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to