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

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

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

Регистрация: Jul 2009
Сообщений: 19
По умолчанию Пропорциональное масштабирование граф элементов игры, при изменении размеров окна.

Здравствуйте.

AS3

1.Необходимо чтобы все графические элементы в флэш игре при изменении окна игры пропорционально масштибировались, т.е. максимальное разрешение у игры 800х600, надо чтобы при переразмере в 640х480 все графические элементы игры пропорционально уменьшились и вошли в игровое окно?

2.Как зафиксировать игровое окно в разрешении 800х600, чтобы игрок не смог сделать разрешение игры больше, чем указанное (а в меньшую строну, конечно можно)?

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Код AS3:
stage.scaleMode = StageScaleMode.SHOW_ALL;
приложение будет пропорционально вписываться в размеры плеера, при уменьшении и увеличении размеров.

Если нужен другой функционал
Код AS3:
stage.scaleMode = StageScaleMode.NO_SCALE;
и слушаете событие Event.RESIZE
В обработчике масштабируйте как угодно.

Старый 02.08.2009, 20:54
WRC_S вне форума Посмотреть профиль Отправить личное сообщение для WRC_S Посетить домашнюю страницу WRC_S Найти все сообщения от WRC_S
  № 3  
Ответить с цитированием
WRC_S
[+6 23.11.09]
 
Аватар для WRC_S

Регистрация: Jun 2009
Адрес: Россия
Сообщений: 318
Отправить сообщение для WRC_S с помощью ICQ
Цитата:
Сообщение от alatar Посмотреть сообщение
Код AS3:
stage.scaleMode = StageScaleMode.SHOW_ALL;
приложение будет пропорционально вписываться в размеры плеера, при уменьшении и увеличении размеров.

Если нужен другой функционал
Код AS3:
stage.scaleMode = StageScaleMode.NO_SCALE;
и слушаете событие Event.RESIZE
В обработчике масштабируйте как угодно.
может поможет:
Код AS3:
package main 
{  	import flash.display.Sprite; 
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.*;
	import flash.display.MovieClip;
           public class init extends MovieClip { 
 
	 	public function init() { 
 
			stage.addEventListener(Event.RESIZE, onRes);
			this.loaderInfo.addEventListener(Event.INIT, onRes);
		}
 
		function onRes(e:Event):void
		{
 		   //сёда пишешь  свой мувик 
                         //каторый надо поставит, и правило как его двигать маштабировать и т.п.
 
		}
 
	}
}

Старый 02.08.2009, 21:23
Dimax4d вне форума Посмотреть профиль Отправить личное сообщение для Dimax4d Найти все сообщения от Dimax4d
  № 4  
Ответить с цитированием
Dimax4d
 
Аватар для Dimax4d

Регистрация: Jul 2009
Адрес: Москва
Сообщений: 99
Код AS3:
package {
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.*;
 
	public class Main extends Sprite {
		private var proportion:Number=800./600.;
 
		public function Main() {
			super();
 
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			stage.addEventListener (Event.RESIZE, resizeHandler);						
		}
 
		private function resizeHandler (event:Event):void {
			this.resize();
		}		
 
		private function resize():void {
			if (stage.stageWidth/stage.stageHeight>this.proportion) {
				this.height = stage.stageHeight;
				this.width = proportion*stage.stageHeight;
				this.x = stage.stageWidth/2 - this.width/2;
				this.y = 0;
			} 
			else {
				this.width = stage.stageWidth;
				this.height = stage.stageWidth/this.proportion;
				this.x = 0;
				this.y = stage.stageHeight/2 - this.height/2;
			}	
		}		
	}	
}
Это чтобы флешка всегда в пределах окна была, ограничения добавьте какие нужно


Последний раз редактировалось Dimax4d; 02.08.2009 в 21:26.
Старый 02.08.2009, 21:23
Рен вне форума Посмотреть профиль Отправить личное сообщение для Рен Найти все сообщения от Рен
  № 5  
Ответить с цитированием
Рен

Регистрация: Jul 2009
Сообщений: 19
Спасибо за примеры.
stage.scaleMode = StageScaleMode.NO_SCALE;- по сути это получается ручной режим, где в обработчике, мы сами задаем высоту и ширину клипа.
stage.scaleMode = StageScaleMode.SHOW_ALL; - где лучше прописывать такие общие настройки - первом кадре, или в базовом классе или еще где?
А по второму пункту, как заблокировать на 800х600, чтобы игрок не смог растянуть игру на большее разрешение?


Последний раз редактировалось Рен; 02.08.2009 в 21:30.
Старый 02.08.2009, 21:53
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Забудьте про код в кадрах. Настройки прописываются в основном классе. По второму пункту см. NO_SCALE

Старый 03.08.2009, 12:28
Рен вне форума Посмотреть профиль Отправить личное сообщение для Рен Найти все сообщения от Рен
  № 7  
Ответить с цитированием
Рен

Регистрация: Jul 2009
Сообщений: 19
Забудьте про код в кадрах - все забыл)
Все получилось, всех благодарю.

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

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

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


 


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


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