Делаю генератор хекс карты. Если просто отрисовываю хексы и добавляю их в массив, все работает прекрасно. Однако если заменить векторный спрайт(grass) на спрайт с битмапом(bit), все перестает работать. Что я делаю не так?
Код AS3:
package
{
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.Event;
import flash.display.DisplayObject;
import flash.display.Graphics;
import flash.display.Shape;
/**
* ...
* @author Nikiroz
*/
public class Main extends Sprite
{
private var mapArray:Array = new Array(),
RADIUS:Number = 60,
WIDTH_MAP:Number = 10,
HEIGHT_MAP:Number = 8,
HEX_SCALE:Number =0.4,
map:Sprite = new Sprite(),
hex_skin:Bitmap=new Bitmap(new hex_veld1);
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
doDrawHex();
}
private function generateRndColor():uint
{
var color:uint = Math.random() * 0x1000000;
return color;
}
private function doDrawHex():void {
var kk:uint = 1;
var kol:uint = WIDTH_MAP * HEIGHT_MAP;
for (var k:uint = 0; k <= kol+1; k += 1 ) {
var colorBox:uint = generateRndColor();
var grass:Sprite = new Sprite();
var bit:Sprite = new Sprite();
grass.graphics.lineStyle (1, colorBox, 100);
grass.graphics.beginFill (colorBox,1)
grass.graphics.moveTo (RADIUS, 0);
for (var i:int = 0; i <= 360; i += 360 / 6)
{
var radians:Number = i * Math.PI / 180;
var x:Number = Math.cos (radians) * RADIUS;
var y:Number = Math.sin (radians) * RADIUS;
grass.graphics.lineTo (x, y);
}
grass.scaleY = 0.5;
bit.addChild(hex_skin);
bit.scaleY = bit.scaleX = HEX_SCALE;
mapArray[k] = grass;
}
var yy:Number = 0;
for (var v:uint = 0; v <= HEIGHT_MAP-1; v += 1 ){
mapArray[kk].x = 0;
mapArray[kk].y = yy;
map.addChild (mapArray[kk])
kk++
for (var d:uint = 1; d <= WIDTH_MAP-1; d += 1 ){
mapArray[kk].x += mapArray[kk - 1].x + mapArray[kk].width / 1.35;
if ((d & 1)) {
mapArray[kk].y += mapArray[kk - 1].y + mapArray[kk].height / 2;
} else {
mapArray[kk].y = yy;
}
map.addChild (mapArray[kk])
kk++
}
yy += mapArray[kk].height;
}
addChild(map);
}
}
}