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

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

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

Регистрация: Jan 2013
Сообщений: 38
По умолчанию Камера слежения за персонажем

Привет, помогите написать код для камеры слежения за персонажем, что бы при ресайзе и открытии в фуллскрин ничего не ломалось, если разрешения экрана больше карты , то она должна центрироваться и не двигаться по этому направлению. по возможности хотелось бы что были рамки побокам которые определяли когда не обходимо двигаться, для наглядности пример из блога Anton Karlov. scroll map

сам код для которого нужна камера:
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
 
	[SWF(width="768", height="704", frameRate="30", backgroundColor="#000000")]
	public class testd extends Sprite
	{
		private var map:Sprite;
 
		private var hero:Sprite;
 
		public function testd()
		{
 
			map = new Sprite();
			map.graphics.beginFill(0x8FBC8F);
			map.graphics.drawRect(0,0,1024,1024);
			map.graphics.endFill();
			map.graphics.beginFill(0xE9967A);
			map.graphics.moveTo(0,1024);
			map.graphics.lineTo(1024,0);
			map.graphics.lineTo(0,0);
			map.graphics.endFill();
			map.cacheAsBitmap =  true;
			addChild(map);
 
 
			hero = new Sprite();
			hero.graphics.beginFill(0xA52A2A);
			hero.graphics.drawRect(0,0,64,64);
			hero.graphics.endFill();
			hero.cacheAsBitmap = true;
			map.addChild(hero);
 
			this.addEventListener(Event.ADDED_TO_STAGE, init);
 
 
		}
		private function init(e:Event = null):void
		{
 
			this.removeEventListener(Event.ADDED_TO_STAGE, init);
 
			stage.scaleMode = StageScaleMode.NO_SCALE;
 
 
			stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
			stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
			stage.addEventListener(Event.ENTER_FRAME, update);
 
			stage.addEventListener(Event.RESIZE, resize);
 
			moviePix = 16;
			movie = true;
		}
		// Переменные для движения
		private var nextKeyDown:int;
		private var currentKeyDown:int;
		private var moviePix:int;
		private var movie:Boolean;
		private function onKeyDown(e:KeyboardEvent):void
		{
			nextKeyDown = e.keyCode;
		}
		private function onKeyUp(e:KeyboardEvent):void
		{
			if(e.keyCode == currentKeyDown && currentKeyDown == nextKeyDown)
			{
				nextKeyDown = 0;
			}
		} 
		private function update(e:Event):void
		{
			if(movie)
			{
				if(moviePix == 16)
				{
					if(nextKeyDown != 0)
					{
						moviePix = 0;
						currentKeyDown = nextKeyDown;
					}else
						currentKeyDown = 0;
				}
				switch(currentKeyDown)
				{
					case 37:
						hero.x -= 4;
						moviePix++;
						break;
					case 38:
						hero.y -= 4;
						moviePix++;
						break;
					case 39:
						hero.x += 4;
						moviePix++;
						break;
					case 40:
						hero.y +=4;
						moviePix++;
						break;
				}
 
			}
			updateCamera();
		}
		private function updateCamera():void
		{
			//code camera
		}
 
		private function resize(e:Event = null):void
		{
			//code resize
		}
 
	}//class
}
карта разделена на 2 цвета по диагонали для лучшей визуализации и координации.
камера не должна выезжать за пределы карты когда сцена меньше карты.
проект прикреплен ниже.
ужа давно бьюсь ничего путного не получается(
Вложения
Тип файла: zip testd.zip (2.5 Кб, 47 просмотров)
Тип файла: swf testd.swf (1.8 Кб, 96 просмотров)


Последний раз редактировалось taluks; 18.01.2014 в 18:49.
Создать новую тему   Часовой пояс GMT +4, время: 10:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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