![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Nov 2005
Адрес: moscow
Сообщений: 26
|
Юзаю flvplayback.swc . Проблема такая. При stage resize (и соотв. масштабировании всего на сцене) и включенном skinAutoHide перестает показываться собсно скин. Долго не мог понять в чем дело. Оказалось, что "уплывает" hit area для "органов управления". Как только для родителя возвращаю scale в 100%, все нормально.
Также установлены VideoScaleMode.MAINTAIN_ASPECT_RATIO и VideoAlign.CENTER. Игрался с registrationWidth и т.п., но безрезультатно. Может кто знает решение "правильного" позиционирования скина? P.S. Скин стандартный, SkinOverPlaySeekMute.swf . |
|
|||||
|
Регистрация: 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);
}
}
}
Последний раз редактировалось teka; 21.04.2008 в 23:58. |
|
|||||
|
Регистрация: Nov 2005
Адрес: moscow
Сообщений: 26
|
Holy shit. Оказывается, все портит собсно скин. Если без него, то все нормально. С ним - размер клипа соответствует размеру самого ассета со скином.
Вот только как это "комфортно" обходить, если видео грузится глубоко и далеко в какой-то из вложенных-вложенных... чайлд-клипов? |
|
|||||
|
интересно, чего ты добиваешься с помощью this.width = stage.stageWidth; ?
почему нельзя по-простому: grandSpr.scaleY = grandSpr.scaleX=stage.stageWidth / 500; // ну или как там там на самом деле надо.. при этом все скалится, скин на месте (ну исчезает, как ему и положено при skinAutoHide = true), ник4аких дополнительных ухищрений не надо.. Последний раз редактировалось silin; 22.04.2008 в 00:40. |
|
|||||
|
Регистрация: Nov 2005
Адрес: moscow
Сообщений: 26
|
Гыы..сам не уверен. Если подскажешь решение -- буду признателен. Смысл же таков.
Эт фрагмент старого, давно используемого кода. У grandSpr есть grandMask. Весь клип центрируется по маске на сцене и по ней же скейлится (масштаб подгоняется так, чтобы маска стремилась по площади к площади сцены). Почему по маске? Размер grandSpr невозможно "зафиксировать" (из-за, опять же, невидимых областей). Надеюсь, картинка поможет понять смысл. Т.е., подытоживая, за "полезный" размер спрайта this я принимаю не реальный геометрический размер спрайта, а размер маски внутри него. |
|
|||||
|
>>за "полезный" размер спрайта this я принимаю не реальный геометрический размер спрайта, а размер маски внутри него.
так и используй размер маски для расчетов.. а this в том контексте, что ты показал, это рутовый спрайт, он-то здесь причем? |
|
|||||
|
Регистрация: Nov 2005
Адрес: moscow
Сообщений: 26
|
хм...надо покумекать :-) thanx anyway :-))
|
![]() |
![]() |
Часовой пояс GMT +4, время: 08:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|