StageVideo是否可以屏蔽和补间?

时间:2013-08-29 16:58:13

标签: actionscript-3 air

由于最新的AIRSDK3.8最终支持StageVideo,因此想要将StageVideo用于iOS桌面应用程序。

然而,我还需要能够以某种方式补间并掩盖它以创建一个视差'效果。

是否有人知道这是否可行,因为它不在显示列表中?

1 个答案:

答案 0 :(得分:0)

屏蔽StageVideo非常容易。您所要做的就是在其上显示一个对象。由于StageVideo呈现在舞台下方,因此DisplayList中的所有内容都呈现在它上面。因此,在屏蔽/使背景透明后,只需通过舞台上的DisplayObject覆盖视频占据的区域,然后就可以使用蒙版。

可以进行补间。它很脏,但它是可能的。请参阅去年我写的关于补间StageWebView的{​​{3}}(显示方式大致相同,只是在显示列表上而不是在显示列表下)。它还应该包括我使用的测试应用程序。

该帖子中的代码,以防我的博客发生故障(不太可能,因为WebHostingHub希望在设置到期前两个月自动续订我的帐户...)

import flash.net.*;

private var swv:StageWebView;
private var startX:Number;
private var finalX:int;
private var repeatCount:int;

private function addedToStage():void{
this.startX = -600;
this.finalX = 120;
this.repeatCount = 100;
this.swv = new StageWebView();
this.swv.stage = this.stage;
this.swv.viewPort = new Rectangle( startX, 50, 600, stage.stageHeight - 50 );
this.swv.loadURL( 'http://flexsupreme.com' );
this.swv.addEventListener(Event.COMPLETE,this.loadComplete);
}

private function loadComplete(e:Event = null):void{
var t:Timer = new Timer( 1000 / stage.frameRate, this.repeatCount );
t.addEventListener( TimerEvent.TIMER, this.slide );
t.start();
}

private function slide(e:TimerEvent = null):void{
var change:int = Math.round ( ( this.finalX - this.startX ) / this.repeatCount );
if ( this.swv != null ) {
this.swv.viewPort = new Rectangle( this.swv.viewPort.x + change, 50, 600, stage.stageHeight - 50);
}
}

如果需要,您还可以使用像Greensock这样的Tween库。你只需补间视口。我不记得你是否需要重新设置视口以应用更改(可能这样做),但Greensock在其to()方法中提供了一个“onUpdate”回调,您可以使用它来执行此操作。 / p>