I am new to ActionScript and Flash. I was just trying to fool around with a
very simple example using the MovieClip programmatic drawing API. I thought I
understood it well enough, but darned if I can make this work... I've seen a
few things in AS & Flash so far that are a bit buggy, so now I'm not sure if I
am doing something stupid or there is some sort of bug here.
I have two blocks of code that draw triangles fine. But when I try to draw
another by programmatically iterating over a list of (x, y) coordinates,
nothing gets drawn. Do you observe the same behaviour with this code? Is there
a logical reason why the red triangle in the middle is not drawn?
The trace output shows all the data I would expect, but nothing is drawn. I
don't get it. Help?
Thanks,
-ej
// ActionScript 2.0 code:
// Just start a new FLA file and throw this all on frame 1:
// some defined colors
var BLACK = 0x000000;
var RED = 0xFF0000;
var MAGENTA = 0xFF00FF;
var GREEN = 0x00FF00;
// some defined (x, y) coordinates
var nw_pt:Array = [100, 100];
var ne_pt:Array = [200, 100];
var se_pt:Array = [200, 200];
var sw_pt:Array = [100, 200];
// this block works: draw a black triangle on the left, pointing NE
this.moveTo(0, 100);
this.beginFill(BLACK, 100);
this.lineTo(100, 100);
this.lineTo(100, 200);
this.lineTo(0, 100);
this.endFill();
// this works fine too: green triangle pointing SW
this.moveTo(nw_pt[0], nw_pt[1]);
this.beginFill(GREEN, 100);
this.lineTo(se_pt[0], se_pt[1]);
this.lineTo(sw_pt[0], sw_pt[1]);
this.lineTo(nw_pt[0], nw_pt[1]);
this.endFill();
function drawPolygon(a:Array)
// DESCRIPTION draw a closed polygon starting at the first coord of a
{
// this block works too:
// a magenta triangle, further to the right, pointing NE
this.moveTo(200, 100);
this.beginFill(MAGENTA, 100);
this.lineTo(300, 100);
this.lineTo(300, 200);
this.lineTo(200, 100);
this.endFill();
// DOESN'T WORK:
// where's the red triangle opposite green triangle?
// move to the first point in list
this.moveTo(a[0][0], a[0][1]);
trace(a[0]);
// start filled polygon
this.beginFill(RED, 100);
// move to indices [1..N]
for (var i = 1; i < a.length; i++) {
this.moveTo(a[i][0], a[i][1]);
trace('');
trace('a[' + i + '] = ' + a[i]);
trace('x, y = ' + a[i][0] + ', ' + a[i][1]);
}
// move back to starting point
this.moveTo(a[0][0], a[0][1]);
trace(a[0]);
// finish the polygon
this.endFill();
}
var ne_tri:Array = [nw_pt, ne_pt, se_pt];
drawPolygon(ne_tri);
_______________________________________________
[email protected]
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