Здравствуйте. Имеется вертикальный лист раскадровки объекта. Я для него написал код, но почему то помимо того что кадры копируются, так ещё создаётся несколько таких же объектов и они движутся сверху вниз. В чём проблема, подскажите пожалуйста ? Код ниже:
Код AS3:
var tileSheet:MovieClip;
var tileSheetBD:BitmapData;
var backgroundBD:BitmapData;
var backgroundRect:Rectangle;
var backgroundPoint:Point;
var canvasBD:BitmapData;
var canvasBitmap:Bitmap;
var tileWidth:int;
var tileHeight:int;
var heliTilesLength:int;
var animationIndex:int;
var animationCount:int;
var animationDelay:int;
var heliRect:Rectangle;
var heliPoint:Point;
var heliX:int;
var heliY:int;
var tilePerRow:int;
var tileSheetB:Bitmap;
public function Main() {
tileWidth=178;
tileHeight=148;
heliTilesLength=40
animationIndex=0;
animationCount=0;
animationDelay=3;
heliX=6;
heliY=5;
backgroundBD=new BitmapData(178,148,false,0xFFFFFF);
backgroundRect=new Rectangle(0,0,178,148);
backgroundPoint = new Point(0, 0);
canvasBD=new BitmapData(178,148,false,0xFFFFFF);
canvasBitmap=new Bitmap(canvasBD);
tileSheet = new Ruletka();
tileSheetBD = new BitmapData(tileSheet.width, tileSheet.height)
tileSheetBD.draw(tileSheet)
tileSheetB = new Bitmap(tileSheetBD)
tilePerRow=tileSheet.height/tileHeight
heliRect=new Rectangle(0,0,178,148);
heliPoint = new Point(heliX, heliY);
addChild(canvasBitmap);
addEventListener(Event.ENTER_FRAME, gameLoop);
}
public function gameLoop(e:Event) {
drawHeli();
}
private function drawHeli():void {
canvasBD.lock()
canvasBD.copyPixels(backgroundBD,backgroundRect, backgroundPoint);
heliRect.x = int((animationIndex / tilePerRow)) * tileWidth;
heliRect.y = int((animationIndex % tilePerRow)) * tileHeight;
canvasBD.copyPixels(tileSheetB.bitmapData, heliRect, heliPoint);
canvasBD.unlock()
if (animationCount == animationDelay) {
animationIndex++;
animationCount = 0;
if (animationIndex == heliTilesLength){
animationIndex = 0;
}
}else{
animationCount++;
}
}