Показать сообщение отдельно
Старый 15.09.2016, 09:17
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 7  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
Сообщение от caseyryan Посмотреть сообщение
А вообще, покажи ка лучше свой метод. А то тут пальцем в небо гадания
Код AS3:
		private function onMU(e:MouseEvent):void {
			if (e.target is VScroller) return;
			if (tray)
				addChild(tray);
			if (!sel_group || tween) return;
			var i:int;
			for (i = 0; i < sel_group.length; i++) {
				if (groupCont.contains(sel_group[i]))
					groupCont.removeChild(sel_group[i]);
					if (sel_group[i])
						pieceCont.addChild(sel_group[i]);
			}
			if (Main.special_users.indexOf("fb_" + fbm.fbId) != -1) {
				writeToDebugPanel("left mouse up. group size:"+sel_group.length);
				LoggerBox.addLog("group released " + sel_group.length);
				groupCont.graphics.clear();
			}
			if (sel_group.length == 1) (sel_group[0] as PieceDO).stopBlink();
			if (blinkingPiece>=0 && singlePieces[blinkingPiece]==sel_group[0])
				blinkingPiece = -1;
			var n_snd:uint = Math.floor(Math.random() * 3) + 1;
			SoundManager.playSound("piece_put" + n_snd + "_snd");
			stateChanged = true;
			//alignConnected(sel_group[0]);
			//ExternalInterface.call("console.log('before connect:')");
			//showStats();
			var p:Point;
			if (sel_group.length>1) {
				for (i = 0; i < sel_group.length; i++) {
					alignToGrid(sel_group[i] as PieceDO,false);
				}
				alignToGrid(sel_group[0] as PieceDO, true);
			} else {
				alignToGrid(sel_group[0] as PieceDO, true);
			}
			for (i = 0; i < sel_group.length; i++) {
				connect(sel_group[i]);
			}
			//ExternalInterface.call("console.log('after connect:')");
			//showStats();
			var n:int = sel_group.length;
			var firstPiece:PieceDO = sel_group[0] as PieceDO;
			var old_group:Array = sel_group;
			sel_group = getConnected(firstPiece);
			if (sel_group.length>old_group.length) {
				// mark pieces
				for (i = 0; i < sel_group.length; i++)
					sel_group[i].checked = false;
				// mark dropped pieces
				for (i = 0; i < old_group.length; i++) 
					sel_group[i].checked = true;
				//alignConnected(firstPiece);
				// allign newly connected pieces to already connected part
				for (i = 0; i < sel_group.length; i++) {
					if (!sel_group[i].checked) {
						alignConnected(sel_group[i]);
						break;
					}
				}
			} else {
				alignConnected(firstPiece);
			}
			old_group = null;
			findSinglePieces();
			dispatchEvent(new AppEvent("search_panel_state_changed", getSearchPanelState()));
			var ev:AppEvent;
			fromTray = false;
			//dispatchEvent(new AppEvent("piece released"));
			if (n != sel_group.length) {
				ev = new AppEvent("connected");
				dispatchEvent(ev);
				SoundManager.playSound("merge_snd",false);
				lastMoveData = null;
			}
			LoggerBox.addLog("onMU log 1:"+n+","+sel_group.length+","+blink);
			if (n != sel_group.length && blink) {
				for (i = 0; i < sel_group.length; i++) {
					if (sel_group[i].parent != pieceCont) {
						sel_group[i].parent.removeChild(sel_group[i]);
						pieceCont.addChild(sel_group[i]);
					}
				}
				BlinkManager.blink(sel_group);
			}
			LoggerBox.addLog("onMU log 2,event:" + e+",this:" + this + ",sel_group:" + sel_group.length);
			if (e)
				LoggerBox.addLog("onMU log 3,target==stage?:" +(e.currentTarget==stage)+",n*m:"+(this.n * this.m)+"skipCompleted:"+skipCompleted);
			if (sel_group.length == (this.n * this.m) && this.mouseEnabled && e.currentTarget != stage && !skipCompleted) {
				LoggerBox.addLog("last piece connected");
				ev = new AppEvent("gameover");
				dispatchEvent(ev);
				//e.stopImmediatePropagation();
				skipCompleted = true;
				if (zoomTween)  zoomTween.fforward();
				zoomParams = { startZoom:zoom, endZoom:field_scale};
				scaleFactor = 1;
				zoom = field_scale;
				zoomTween=new Tween(null,"",None.easeNone,0,1,0.3,true);
				zoomTween.addEventListener(TweenEvent.MOTION_CHANGE,zoomAnim);
				zoomTween.start();
			}
			LoggerBox.addLog("onMU log 4");
			sel_group = null;
			LoggerBox.addLog("onMU log 5");
			this.removeEventListener(Event.ENTER_FRAME, onEF);
			LoggerBox.addLog("onMU log 6");
		}
Ни инлайнов, ни сторонних либ тут нет