Я пытаюсь создать приложение-портфолио, подобное тому, которое используется в 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, остается в правильном положении, но сфера papervision (которая вращается) находится в неправильном месте. Что-то мне здесь не хватает?