0

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(回転している)が間違った位置にあることがわかります。ここに欠けているものはありますか?

球 飛行機

4

1 に答える 1

0

おとこ。しばらくそのサイトを見ていなかった。まだクールな PV プロジェクトの 1 つ...

どういう意味:

Papervision でレンダリングされたシーンが正しく表示されない

次のように、コンポーネントが適切な位置にあるのを見ることができると言います。しかし、私はあなたがそれと対話することはできないと思います.

私の知る限り、同様の作業を行うためにかなりの時間を費やしてきましたが、MovieMaterial (使用していると思います) は、MovieClip に存在するコンテンツのビットマップを描画し、それを設定した場合animation=true に設定すると、一連のビットマップがレンダリングされます (アニメーションと同等)。それがしていないのは、実際の MovieClip (または SWF) をプレーンに表示することです。したがって、コンポーネントが表示される場合がありますが、次のようになります。

MovieMaterial.as 137行目

// ______________________________________________________________________ CREATE BITMAP

        /**
        * 
        * @param    asset
        * @return
        */
        protected function createBitmapFromSprite( asset:DisplayObject ):BitmapData
        {
            // Set the new movie reference
            movie = asset;

            // initialize the bitmap since it's new
            initBitmap( movie );

            // Draw
            drawBitmap();

            // Call super.createBitmap to centralize the bitmap specific code.
            // Here only MovieClip specific code, all bitmap code (maxUVs, AUTO_MIP_MAP, correctBitmap) in BitmapMaterial.
            bitmap = super.createBitmap( bitmap );

            return bitmap;
        }

WhiteVoid では、ムービーが「着陸」するまで実際にムービーと対話することはありません。つまり、ビットマップ テクスチャ プレーンの上でムービーをスワップしている可能性が非常に高いです。

操作している部分は、おそらくマウスオーバーで表示される「ボタン」を保持する別の平面です。

PV1.0では本物のswfsを素材として利用できたと思いますが、2.0ではこれが変わりました。悲しいことに。うまくいけば、モグラヒルはそうするでしょう。

乾杯

于 2011-03-24T15:07:55.280 に答える