2010-05-03 7 views
0

PNG 알파 채널로 FLV를 마스크하려고합니다. BitmapData (PNG에서)를 사용하고 있지만 작동하지 않습니다. 제가 빠진 것이 있습니까? 아래의 코드를 잘라 :PNG 알파 채널을 사용하여 AS3에서 FLV 비디오를 마스킹합니다.

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)이 적용됩니다.

이 문제를 해결하는 올바른 방법입니까?

+0

플래시 IDE를 사용하는 경우 타임 라인에서 테스트 할 수 있습니까? 알파 채널이 어떻게 작동하는지 보려면 png는 갈 방법이 아니며 gif가되어야합니다. 한편, 혼동을 없애기 위해 .flv 대신 기본 그래픽을 사용하여 작업하십시오. 거기에 어떤 잠재적 인 문제. –

답변

1

here 볼 수 같이

마스킹 알파 채널

마스크와 마스크 표시 모두 오브젝트가 비트 맵 캐시를 사용하는 경우 을 다음과 같이

알파 채널 마스크가 지원 :

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

즉, flv를 비트 맵으로 캐시 할 수 없다면 (99 % 확신 할 수 없다면) 운이 없다는 것을 의미합니다. 그렇다고 마스크 할 수 없다는 의미는 아니지만 알파 채널 마스킹은 효과가 없습니다.

+1

와우, 나는 또한 내가 할 수 없을 것이라고 확신했다 - 그러므로 나는 왜 여기 물었다. 하지만 FLV를 비트 맵으로 캐시 할 수 있습니다! 놀랄 만한. 내가 이걸 해줘서 고마워. 그래도 CPU/RAM을 확인해야 할 것입니다 ... –

+0

@James Roberts FLV를 비트 맵으로 캐시 할 수 있습니까? 다행히 나는 99 %를 말했다, :) –

관련 문제