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

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

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

Регистрация: Apr 2009
Сообщений: 78
По умолчанию Псевдоизометрия

Есть задача создать псевдоизометрический вид. Сам подходящим способом нашел для себя поворот на 45 градусов и сжатие по высоте вдвое (как это описано тут: http://xitri.com/2008/10/17/two-step-isometric.html). Только вот чтото не получается у меня никак.
Вот такой код у меня:
Код AS3:
package src.game 
{
	import flash.display.DisplayObjectContainer;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
 
	public class TileMap extends Sprite
	{
 
		private var map:Array;
 
		private var tileW:Number;
		private var tileH:Number;
 
		public static const WALKABLE:Number = 0;
 
		private var mapW:Number;
		private var mapH:Number;
 
		private var graphicsContainer:Sprite;
 
		public function TileMap(_parent:DisplayObjectContainer) 
		{
			super();
 
			map = [
			[1, 1, 1, 1, 1, 1, 1, 1],
			[1, 0, 0, 0, 0, 0, 0, 1],
			[1, 0, 0, 1, 0, 0, 0, 1],
			[1, 0, 0, 1, 1, 0, 0, 1],
			[1, 0, 0, 0, 0, 0, 0, 1],
			[1, 0, 0, 1, 1, 0, 0, 1],
			[1, 0, 1, 1, 0, 1, 0, 1],
			[1, 1, 1, 1, 1, 1, 1, 1],			
			];
 
			tileW = 60;
			tileH = 60;
 
			mapW = map[0].length;
			mapH = map.length;
 
			buildMap();
			this.addChild(graphicsContainer);
 
		}
 
		private function buildMap():void
		{
			graphicsContainer = new Sprite();
			for (var i:int = 0; i < mapH; ++i)
			{
				for (var j:int = 0; j < mapW; ++j)
				{
					var tile:Sprite = new Sprite();
 
					tile.name = "t_" + i + "_" + j;
					tile.x = j * tileW;
					tile.y = i * tileH;
 
					tile.graphics.lineStyle(0, 0x004080);
					var fillColor:int = (map[i][j] == WALKABLE) ? 0x000000 : 0xFFFFFF;
					tile.graphics.beginFill(fillColor);					
					tile.graphics.drawRect(0, 0, tileW, tileH );
					tile.graphics.endFill();
					tile.addEventListener(MouseEvent.CLICK, function(e:MouseEvent) { e.currentTarget.alpha = 0; } );
 
					graphicsContainer.addChild(tile);
				}
			}
 
		}
 
	}
 
}
Если пытаюсь производить манипуляции с graphicsContainer (rotation=45, height=height/2) - получается ну совсем чтото не то. Пытался придумать, как расчитывать координаты напрямую в цикле создания тайла, там же его крутить и ужимать - никак не додумаюсь. Целый день с этим бьюсь Подскажите, ребят

Старый 03.02.2010, 20:19
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Конверт в конверте.
Контейнер помести в спрайт, контейнер поверни на 45°.
Внешний спрайт сожми по вертикали в два раза))
__________________
Reality.getBounds(this);

Старый 03.02.2010, 20:27
imdogma вне форума Посмотреть профиль Отправить личное сообщение для imdogma Найти все сообщения от imdogma
  № 3  
Ответить с цитированием
imdogma
 
Аватар для imdogma

Регистрация: Apr 2009
Сообщений: 78
Wolsh, спасибо! С меня тонны нефти ))

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

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

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


 


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


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