Маскировка видео FLV в AS3 с альфа-каналом PNG - PullRequest
0 голосов
/ 03 мая 2010

Я пытаюсь замаскировать FLV альфа-каналом PNG. Я использую BitmapData (из PNG), но он не работает. Я что-то пропустил? Сократите код ниже:

var musclesLoader:Loader = new Loader();
var musclesContainer:Sprite = new Sprite();
var musclesImage:Bitmap = new Bitmap();
var musclesBitmapData:BitmapData;

var musclesVideo:Video = new Video(752, 451.2);
var connection:NetConnection = new NetConnection();
var stream:NetStream;

function loadMuscles():void {
    musclesLoader.load(new URLRequest('img/muscles.png'));
    musclesLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, musclesComplete);
}

function musclesComplete():void {
    musclesBitmapData = new BitmapData(musclesLoader.content.width, musclesLoader.content.height, true, 0x000000);
    musclesImage.bitmapData = musclesBitmapData;
    musclesImage.smoothing = true;
    musclesContainer.addChild(musclesImage);
    contentContainer.addChild(musclesContainer);
}

function loadMusclesVideo():void {
    connection.connect(null);
    stream = new NetStream(connection);
    stream.client = this;
    musclesVideo.mask = musclesImage; 
    stage.addChild(musclesVideo);
    musclesVideo.attachNetStream(stream);
    stream.bufferTime = 1;
    stream.receiveAudio(true);
    stream.receiveVideo(true);
    stream.play("vid/muscles.flv");
}

За пределами этого кода у меня есть функция, которая добавляет контейнеры на сцену и т. Д. И размещает объекты в соответствующих местах. Это вроде работает - маска применяется, но в квадрате (размер границ мышц BitmapData), а не с формой альфа-канала.

Это правильный путь?

1 Ответ

1 голос
/ 03 мая 2010

Как видите здесь :

Альфа-канал маскировки

Маскировка альфа-канала поддерживается, если и маска, и замаскированный дисплей объекты используют растровое кэширование, как показано здесь:

// maskShape is a Shape instance which includes a gradient fill. 
mySprite.cacheAsBitmap = true;
maskShape.cacheAsBitmap = true;
mySprite.mask = maskShape;

, что означает, что, если вы не можете кэшировать свой flv как растровое изображение (99% уверены, что не можете), вам не повезло. Это, конечно, не означает, что вы не можете маскировать, но только то, что маскирование альфа-канала не подойдет вам.

...