0

最新の AIRSDK3.8 がついに StageVideo に対応したので、iOS のデスクトップ アプリケーションに StageVideo を組み込みたい。

ただし、「視差」効果を作成するには、何らかの方法でトゥイーンしてマスクできる必要もあります。

表示リストに表示されなくなったので、これが可能かどうかは誰にもわかりませんか?

4

1 に答える 1

0

マスキング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」コールバックを提供しています。

于 2013-08-29T23:51:25.217 に答える