Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.10.2010, 21:44
cucumber007 вне форума Посмотреть профиль Отправить личное сообщение для cucumber007 Найти все сообщения от cucumber007
  № 1  
Ответить с цитированием
cucumber007

Регистрация: Jul 2010
Сообщений: 63
По умолчанию Почему "блокируются" event Listener'ы в проге

Вот заделал я такую прогу, даже не спрашивайте, зачем мне это надо. Я и сам не знаю)).
В результате должно получится такое: 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). Что делать, я уже все перепроверил, не нашел ошибок. Буду благодарен за советы.

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:45.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.