最新の AIRSDK3.8 がついに StageVideo に対応したので、iOS のデスクトップ アプリケーションに StageVideo を組み込みたい。
ただし、「視差」効果を作成するには、何らかの方法でトゥイーンしてマスクできる必要もあります。
表示リストに表示されなくなったので、これが可能かどうかは誰にもわかりませんか?
最新の AIRSDK3.8 がついに StageVideo に対応したので、iOS のデスクトップ アプリケーションに StageVideo を組み込みたい。
ただし、「視差」効果を作成するには、何らかの方法でトゥイーンしてマスクできる必要もあります。
表示リストに表示されなくなったので、これが可能かどうかは誰にもわかりませんか?
マスキングStageVideo
は意外と簡単。その上にオブジェクトを表示するだけです。StageVideo はステージの下にレンダリングされるため、DisplayList 内のすべてがその上にレンダリングされます。したがって、背景をマスク/透明にした後、ビデオが占める領域上のステージ上の DisplayObject を介してマスクを作成します。
トゥイーンが可能です。汚いですが、可能です。昨年トゥイーンについて書いたこのブログ記事を参照してくださいStageWebView
(これは、表示リストの下ではなく、表示リストの上にほぼ同じように表示されます)。私が使用したテストアプリも含まれているはずです。
ブログがダウンした場合に備えて、その投稿のコード (WebHostingHub は有効期限が切れる 2 か月前にアカウントを自動更新するのが好きなので、可能性は低いです...)
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」コールバックを提供しています。