Цитата:
Сообщение от 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");
}
Ни инлайнов, ни сторонних либ тут нет