我正在尝试构建类似于Whitevoid使用的投资组合应用程序。我正在使用Flex 4和Papervision3D 2.除了一个问题外,我的一切都在工作。当我尝试在其中一个平面上加载外部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;
}
下面我发了两张照片。第一个是自己运行的应用程序的镜头。第二个是作为平面上的MovieMaterial的应用程序。您可以看到在mxml中作为spark对象创建的按钮如何保持在正确的位置,但是papervision球体(正在旋转)位于错误的位置。我在这里缺少什么吗?
答案 0 :(得分:0)
曼。我有一段时间没见过那个网站。仍然是较冷的光伏项目之一...
你是什么意思:
我无法正确看到Papervision中呈现的场景
您说您可以在适当的位置看到组件,例如:您的平面看起来像预期的文件加载?但我猜你不能与它互动。
据我所知,我花了相当多的时间尝试做类似的工作,MovieMaterial(我假设你正在使用)绘制了一个Bitmap,其中包含MovieClip中存在的任何内容,如果你将它设置为animated = 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中有所改变。可悲的是。希望Molehill会。
欢呼声