![]() |
|
||||||||||
|
||||||||||||
|
Регистрация: May 2011
Сообщений: 221
|
Цитата:
Цитата:
Цитата:
Цитата:
Вобщем, дабы не усложнять всем жизнь пройдусь по тем комментариям, к которым я могу предоставить код. Цитата:
Цитата:
private function sortChild(container:DisplayObjectContainer, child:IsoObject):void { for (var i:int = 0, length:int = _model.buildingsCount; i < length; i++) { var compareBuilding:Building = _model.getBuildingAt(i) as Building; var currentIsNearest:Boolean = false; if (child != compareBuilding) { if (child.isoLeft >= compareBuilding.isoRight && child.isoTop >= compareBuilding.isoBottom) { currentIsNearest = true; } else if (Projection.intersects(child.isoLeft, child.isoRight, compareBuilding.isoLeft, compareBuilding.isoRight) && child.isoTop >= compareBuilding.isoBottom) { currentIsNearest = true; } else if (Projection.intersects(child.isoTop, child.isoBottom, compareBuilding.isoTop, compareBuilding.isoBottom) && child.isoLeft >= compareBuilding.isoRight) { currentIsNearest = true; } if (currentIsNearest && container.getChildIndex(child) < container.getChildIndex(compareBuilding)) { container.swapChildren(child, compareBuilding); } } } } Цитата:
код составление чанка карты private function createChunk():QuadBatch { var chunk:QuadBatch = new QuadBatch(); var tile:Image = new Image(LandscapeAssetManager.instance.getTexture("landscapeTiles_081.png")); tile.alignPivot(HAlign.CENTER, VAlign.TOP); for (var col:int = 0; col < _model.CHUNK_SIZE_IN_TILES; col++) { for (var row:int = 0; row < _model.CHUNK_SIZE_IN_TILES; row++) { var screenPoint:ScreenPoint = IsoTransformer.isoToScreen(col * _model.TILE_SIZE, row * _model.TILE_SIZE); tile.touchable = false; tile.x = screenPoint.x; tile.y = screenPoint.y - _model.TILE_HEIGHT; chunk.addImage(tile); } } return chunk; } Цитата:
package util { public class IsoTransformer { private static const ALPHA_RAD:Number = Math.atan(0.5); private static const TAN:Number = Math.tan(ALPHA_RAD); private static const SIN:Number = Math.sin(ALPHA_RAD); private static const COS:Number = Math.cos(ALPHA_RAD) public static function screenToIso(x:Number, y:Number):IsoPoint { var isoX:Number = (x * TAN + ((y - x * TAN) / 2)) / SIN; var isoY:Number = ((y - x * TAN) / 2) / SIN; return new IsoPoint(isoX, isoY); } public static function isoToScreen(isoX:Number, isoY:Number):ScreenPoint { var x:Number = isoX * COS - isoY * COS; var y:Number = isoX * SIN + isoY * SIN; return new ScreenPoint(x, y); } } } Но меня просто взбесила логика в духе "не понимаю как работает - значит неправильно". Цитата:
код: public function moveBy(xOffset:Number, yOffset:Number):void { x += xOffset; y += yOffset; for (var i:int = 0, length:int = _model.buildingsCount; i < length; i++) { var building:Building = _model.getBuildingAt(i); var localX:Number = x + building.x; var localY:Number = y + _buildingsLayer.y + building.y; var old:Boolean = building.visible; building.visible = (localX + building.screenLeft > 0) && (localX + building.screenRight < _viewportWidth) && (localY + building.screenBottom > 0) && (localY + building.screenTop < _viewportHeight); } } Цитата:
Из серии "я так не делаю - значит неправильно" Цитата:
Вобщем, поверьте мне, я целиком и полностью признаю, что я далеко не гуру разработки, и мне конечно же есть чему учиться и куда стремиться, но черт возьми, киньте в меня камень, если ХОТЯ БЫ ОДИН из этих комментариев справедлив. Я мог бы принять отказ от товарища Rzer, потому что его комментарии хотя бы по делу. Потому что незавершенность задачи, даже при ее больших размерах и малом времени на выполнение (ну леший их знает, может они там вундеркиндов ищут), это хотя бы реальная причина, по которой можно получить отказ. Но отправленные ими комментарии - просто детский лепет, ей-богу. Кстати да, Rzer, большое спасибо, что нашли время заглянуть внутрь кода. |
![]() |
Часовой пояс GMT +4, время: 02:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|