Вот заделал я такую прогу, даже не спрашивайте, зачем мне это надо. Я и сам не знаю)).
В результате должно получится такое:
http://s03.***********/i176/1010/f3/20627661a4c3.jpg
Красные блоки (их там 3, просто они друг над другом) долны перемещаться по зонам и выравниваться по левому краю, а также становитьяс друг за другом, и если оди убирается, придвигаться к левому краю.
Вот код MainClass:

Код AS3:
package {
import flash.display.*;
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.display.*
import BlockClass
public class MainClass extends MovieClip {
public function MainClass() {
//Environment///////
var m;
var y1 = 0
var drawEnv = new Shape ()
var drawEnv2 = new Shape ()
for (var i=1; i<23; i++) {
var x2 = 140
addChild(drawEnv)
m = y1+35
drawEnv.graphics.lineStyle(1,0x000000)
drawEnv.graphics.drawRect(0,y1,140,m)
drawEnv.graphics.lineTo(1024, y1)
for (var b=1; b<80; b++) {
drawEnv2.graphics.lineStyle(1,0xcccccc)
drawEnv2.graphics.drawRect(0,y1,x2+11,y1+35)
x2 += 11;
addChild(drawEnv2)
}
y1 += 35
}
var tix=250;
drawEnv.graphics.moveTo(250,0)
for (var d = 1; d<9; d++) {
drawEnv.graphics.lineTo(tix,768)
drawEnv.graphics.moveTo(tix+110,0)
tix += 110
}
var fon = new Shape()
fon.graphics.lineStyle(1, 0x000000)
fon.graphics.drawRect(0,0,1024,768)
addChild(fon);
drawEnv.graphics.lineStyle(1,0xffffff)
drawEnv.graphics.beginFill(0xffffff)
drawEnv.graphics.drawRect(-1,666,1025,1500)
//ААА, 666, мы все умрем!!!!!!!!111111
addChild(drawEnv)
//Environment///////
var dragged
//////Zones/////////////
//Zone draw
var z=35
var cy=53
var cx=-58
var kv = new Array()
for(i=1; i<19; i++) {
kv[i] = new ZoneClass()
kv[i].graphics.lineStyle(1, 0x000000)
kv[i].graphics.beginFill(0xdddddd)
kv[i].graphics.drawRect(140,z,884,35)
addChild(kv[i])
kv[i].zon_y = -733+((i-1)*35)
kv[i].kvn = i
kv[i].addEventListener(MouseEvent.MOUSE_UP, stuk1)
z+=35}
//Zone draw
trace(kv[5].zon_y)
CreateBlock()
CreateBlock()
CreateBlock()
var m1
var mh
function Restart (zon) {
for (var i=0; i<zon.numo+1; i++) {
zon.BlAr[i] = 0 }
zon.numo = 0
}
function Vizualize(zona){
for(var i=0; i<(zona.numo); i++) {
zona.BlAr[i].x = 142+(i*103)
addChildAt(zona.BlAr[i], numChildren)
}
}
function StandBlock (zon, blok){
m1=zon.BlAr[0]
zon.BlAr[zon.numo] = blok
blok.v_num = zon.numo
zon.numo++
Vizualize(zon)
blok.vps = zon.kvn
}
function stuk1 (me) {
// SetCoordY(me.currentTarget)
cy=me.currentTarget.zon_y
StandBlock (me.currentTarget,dragged)
dragged.y = cy
dragged.stopDrag()
dragged.mouseEnabled = true;
dragged = null
//now = me.currentTarget
}
/*function SetCoordY (a) {
switch (a) {
case kv[1]: cy=-733;break;
case kv[2]: cy=-698;break;
case kv[3]: cy=-663;break;
case kv[4]: cy=-628;break;
case kv[5]: cy=-593;break;
case kv[6]: cy=-558;break;
case kv[7]: cy=-523;break;
case kv[8]: cy=-488;break;
case kv[9]: cy=-453;break;
case kv[10]: cy=-418;break;
case kv[11]: cy=-383;break;
case kv[12]: cy=-348;break;
case kv[13]: cy=-313;break;
case kv[14]: cy=-278;break;
case kv[15]: cy=-243;break;
case kv[16]: cy=-208;break;
case kv[17]: cy=-173;break;
case kv[18]: cy=-138;break;
default : trace("!!!");
}}
// m = (L+768)/35*/
var sh
//var mi=0
function CreateBlock () {
sh = new BlockClass()
sh.graphics.lineStyle(1, 0x000000)
sh.graphics.beginFill(0xf54545)
sh.graphics.drawRect(0,770,100,31)
addChild(sh)
sh.addEventListener(MouseEvent.MOUSE_DOWN, startDr) }
function startDr(e) {
e.currentTarget.startDrag()
e.currentTarget.mouseEnabled = false;
dragged = e.currentTarget
for (var i = e.currentTarget.v_num; i < kv[e.currentTarget.vps].numo+1; i++) {
kv[e.currentTarget.vps].BlAr[i] = kv[e.currentTarget.vps].BlAr[i+1] }
Vizualize(kv[e.currentTarget.vps])
}
}
}
}
Вот ZoneClass (это то, что выделено серым, 18 зон):

Код AS3:
package {
import flash.display.*;
import flash.events.*;
public class ZoneClass extends Sprite {
public var kvn
public var zon_y
public var numo = 0
public var BlAr = new Array(30)
public function ZoneClass () {
BlAr[0]=0
}
}
}
И BlockClass (это, собссно блоки):

Код AS3:
package {
import flash.display.*;
import flash.events.*;
public class BlockClass extends Sprite {
public var widt = 101
public var vps = -1
public var v_num = -1
}
}
А проблема в том, что когда я поставил блок на одну зону, а потом убрал его (не зависимо от того, был ли он там единственным или я его вытащил) зона как бы блокируется, туда больше ничего не поставишь (как будто убирается event listener на MOUSE_DOWN). Что делать, я уже все перепроверил, не нашел ошибок. Буду благодарен за советы.