由于最新的AIRSDK3.8最终支持StageVideo,因此想要将StageVideo用于iOS桌面应用程序。
然而,我还需要能够以某种方式补间并掩盖它以创建一个视差'效果。
是否有人知道这是否可行,因为它不在显示列表中?
答案 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>