Whitevoidで使用されているものと同様のポートフォリオアプリケーションを構築しようとしています。Flex4とPapervision3D2を使用しています。1つの問題を除いてすべてが機能しています。平面の1つにマテリアルとして外部SWFをロードしようとすると、ネイティブのFlexまたはFlashコンポーネントが正しい位置に表示されますが、papervisionオブジェクトが正しくレンダリングされていません。ネストされたswfにビューポートが設定されていないようです。以下にswfをロードするためのコードを投稿しました。
private function loadMovie(path:String=""):void
{
loader = new Loader();
request = new URLRequest(path);
loader.contentLoaderInfo.addEventListener(Event.INIT, addMaterial);
loader.load(request);
}
private function addMaterial(e:Event):void
{
movie = new MovieClip();
movie.addChild(e.target.content);
var width:Number = 0;
var height:Number = 0;
width = loader.contentLoaderInfo.width;
height = loader.contentLoaderInfo.height;
//calculate the aspect ratio of the swf
var matAR:Number = width/height;
if (matAR > aspectRatio)
{
plane.scaleY = aspectRatio / matAR;
}
else if (matAR < aspectRatio)
{
plane.scaleX = matAR / aspectRatio;
}
var mat:MovieMaterial = new MovieMaterial(movie, false, true, false, new Rectangle(0, 0, width, height));
mat.interactive = true;
mat.smooth = true;
plane.material = mat;
}
以下に2枚の写真を掲載しました。1つ目は、単独で実行されているアプリケーションのショットです。2つ目は、平面上のMovieMaterialとしてのアプリケーションです。mxmlでsparkオブジェクトとして作成されたボタンが正しい位置にとどまっているのに、papervision sphere(回転している)が間違った位置にあることがわかります。ここに欠けているものはありますか?