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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.04.2008, 19:57
teka вне форума Посмотреть профиль Отправить личное сообщение для teka Найти все сообщения от teka
  № 1  
Ответить с цитированием
teka
[+1.3 03.08.07]
 
Аватар для teka

Регистрация: Nov 2005
Адрес: moscow
Сообщений: 26
По умолчанию FLVPlayback skin hit area

Юзаю flvplayback.swc . Проблема такая. При stage resize (и соотв. масштабировании всего на сцене) и включенном skinAutoHide перестает показываться собсно скин. Долго не мог понять в чем дело. Оказалось, что "уплывает" hit area для "органов управления". Как только для родителя возвращаю scale в 100%, все нормально.

Также установлены VideoScaleMode.MAINTAIN_ASPECT_RATIO и VideoAlign.CENTER. Игрался с registrationWidth и т.п., но безрезультатно. Может кто знает решение "правильного" позиционирования скина?
P.S. Скин стандартный, SkinOverPlaySeekMute.swf .

Старый 21.04.2008, 21:09
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
если ты положишь пример проблемы в чистом виде, то шансы получить ответ сильно возрастут..

Старый 21.04.2008, 23:55
teka вне форума Посмотреть профиль Отправить личное сообщение для teka Найти все сообщения от teka
  № 3  
Ответить с цитированием
teka
[+1.3 03.08.07]
 
Аватар для teka

Регистрация: Nov 2005
Адрес: moscow
Сообщений: 26
Код:
package
{
	import fl.video.FLVPlayback;
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.display.StageScaleMode;
	import flash.display.StageAlign;
	import flash.events.Event;
	import fl.video.VideoScaleMode;
	//
	public class MainTestVideo extends Sprite
	{
		private var grandSpr:Sprite;
		private var myPlayer:FLVPlayback;
		//
		public function MainTestVideo():void
		{
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			grandSpr = new Sprite;
			var rect:Shape = new Shape();
			rect.graphics.beginFill(0xFF0000);
			rect.graphics.drawRect(0, 0, 500, 400);
			rect.graphics.endFill();
			grandSpr.addChild(rect);
			addChild(grandSpr);
			
			stage.addEventListener(Event.RESIZE, onStageResize);
			myPlayer = new FLVPlayback();
			myPlayer.source = 'video.flv';
			myPlayer.skin = 'SkinOverPlaySeekMute.swf';
			myPlayer.width = 300;
			myPlayer.height = 200;
			//myPlayer.scaleMode = VideoScaleMode.NO_SCALE;
			//myPlayer.scaleMode = VideoScaleMode.MAINTAIN_ASPECT_RATIO;
			myPlayer.scaleMode = VideoScaleMode.EXACT_FIT;
			myPlayer.skinAutoHide = true;
			myPlayer.skinFadeTime = .3;
			myPlayer.skinBackgroundColor = 0x8A5917;
			myPlayer.play();
			onStageResize();
			//grandSpr.addChild(myPlayer);
		}

		private function onStageResize(e:Event=null):void {
			this.width = stage.stageWidth;
			this.scaleY = this.scaleX;
			this.x = this.y = 0;
			trace(this.width, myPlayer.width, grandSpr.width);
		}
	}
}
После компиляции поиграйтесь с размером сцены и наблюдайте трейсы. А потом раскомментируйте строчку grandSpr.addChild(myPlayer); и опять следите за трейсами. Ага? :-)


Последний раз редактировалось teka; 21.04.2008 в 23:58.
Старый 22.04.2008, 00:19
teka вне форума Посмотреть профиль Отправить личное сообщение для teka Найти все сообщения от teka
  № 4  
Ответить с цитированием
teka
[+1.3 03.08.07]
 
Аватар для teka

Регистрация: Nov 2005
Адрес: moscow
Сообщений: 26
Holy shit. Оказывается, все портит собсно скин. Если без него, то все нормально. С ним - размер клипа соответствует размеру самого ассета со скином.
Вот только как это "комфортно" обходить, если видео грузится глубоко и далеко в какой-то из вложенных-вложенных... чайлд-клипов?

Старый 22.04.2008, 00:35
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 5  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
интересно, чего ты добиваешься с помощью this.width = stage.stageWidth; ?
почему нельзя по-простому:
grandSpr.scaleY = grandSpr.scaleX=stage.stageWidth / 500; // ну или как там там на самом деле надо..
при этом все скалится, скин на месте (ну исчезает, как ему и положено при skinAutoHide = true), ник4аких дополнительных ухищрений не надо..


Последний раз редактировалось silin; 22.04.2008 в 00:40.
Старый 22.04.2008, 00:57
teka вне форума Посмотреть профиль Отправить личное сообщение для teka Найти все сообщения от teka
  № 6  
Ответить с цитированием
teka
[+1.3 03.08.07]
 
Аватар для teka

Регистрация: Nov 2005
Адрес: moscow
Сообщений: 26
Гыы..сам не уверен. Если подскажешь решение -- буду признателен. Смысл же таков.
Эт фрагмент старого, давно используемого кода. У grandSpr есть grandMask. Весь клип центрируется по маске на сцене и по ней же скейлится (масштаб подгоняется так, чтобы маска стремилась по площади к площади сцены). Почему по маске? Размер grandSpr невозможно "зафиксировать" (из-за, опять же, невидимых областей).
Надеюсь, картинка поможет понять смысл.
Т.е., подытоживая, за "полезный" размер спрайта this я принимаю не реальный геометрический размер спрайта, а размер маски внутри него.
Изображения
 

Старый 22.04.2008, 01:09
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 7  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
>>за "полезный" размер спрайта this я принимаю не реальный геометрический размер спрайта, а размер маски внутри него.
так и используй размер маски для расчетов..
а this в том контексте, что ты показал, это рутовый спрайт, он-то здесь причем?

Старый 22.04.2008, 01:11
teka вне форума Посмотреть профиль Отправить личное сообщение для teka Найти все сообщения от teka
  № 8  
Ответить с цитированием
teka
[+1.3 03.08.07]
 
Аватар для teka

Регистрация: Nov 2005
Адрес: moscow
Сообщений: 26
хм...надо покумекать :-) thanx anyway :-))

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

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

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


 


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


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