Hello All,
I am new to Papervision 3d and having a strange problem. I am trying to make
a 3d Carousel which will load images from a xml file. I am successfull in
parsing the xml file but the images are not showing. I am using Scene3D
instead of MovieScene3D. I have checked Great White classes and did not find
MobieScene3D class. So I am not sure whether MovieScene3D has been removed
from GreatWhite or not.
Below is my code:
==============================================================================================================================
package
{
//========= Flash Clases ======================
import flash.display.Stage;
import flash.display.StageQuality;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.display.Sprite
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.events.IOErrorEvent;
//==============================================
// ============= Papervision3D Classes =====================
import org.papervision3d.cameras.FreeCamera3D;
import org.papervision3d.events.InteractiveScene3DEvent;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
//===========================================================
// ============= Caurina Classes =====================
import caurina.transitions.Tweener;
import caurina.transitions.properties.CurveModifiers;
//===========================================================
public class Carousel extends Sprite
{
//Flash Properties
protected var myXML:XML;
protected var xmlPath:String = "images.xml";
protected var xmlLoader:URLLoader;
protected var imagesArray:Array = new Array();
//Papervision3d properties
private var container:Sprite;
private var scene:Scene3D;
private var camera:FreeCamera3D;
private var planes:Array;
private var currentPlane:DisplayObject3D;
private var origin:DisplayObject3D;
private var viewport:Viewport3D;
private var renderer:BasicRenderEngine;
private var anglePer:Number = (Math.PI*1) / imagesArray.length;
private var radius:Number = 400;
private var angleX:Number = anglePer;
//Papervision3d constants
private static const NUM_PLANES:uint = 20;
private static const BEZIER_DISTANCE:Number = 2000;
private static const CAMERA_DISTANCE_FROM_PLANE:Number = 50;
//Constructor
public function Carousel()
{
stage.quality = StageQuality.MEDIUM;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
//Initialising the Caurina class
//CurveModifiers.init();
container = new Sprite();
container.x = stage.stageWidth * 0.5;
container.y = stage.stageHeight * 0.5;
addChild(container);
init();
init3d();
}
private function init():void
{
xmlLoader = new URLLoader();
xmlLoader.load(new URLRequest(xmlPath));
xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
xmlLoader.addEventListener(Event.COMPLETE, onCompleteHandler);
}
private function errorHandler(e:IOErrorEvent):void
{
trace("XML not loaded successfully");
}
private function onCompleteHandler(e:Event):void
{
myXML = new XML(e.target.data);
for(var i:int=0; i < myXML.img.length(); i++)
{
imagesArray.push([EMAIL PROTECTED]);
}
createPlanes();
createListeners();
}
private function init3d():void
{
viewport = new Viewport3D(stage.stageWidth, stage.stageHeight,
true, true);
addChild(viewport);
renderer = new BasicRenderEngine();
scene = new Scene3D();
currentPlane = new DisplayObject3D();
origin = new DisplayObject3D();
camera = new FreeCamera3D();
camera.zoom = 1;
camera.focus = 350;
}
private function createPlanes():void
{
planes = new Array();
for( var i:uint = 0; i < imagesArray.length ; i ++ )
{
var bfm:BitmapFileMaterial = new
BitmapFileMaterial(imagesArray[i]);
bfm.interactive = true;
bfm.oneSide = false;
bfm.smooth = true;
var p:Plane = new Plane(bfm, 162, 230, 2, 2);
p.x = Math.cos(i*anglePer) * radius;
p.z = Math.sin(i*anglePer) * radius;
p.rotationY = (-i*anglePer) * (180/Math.PI) + 270;
scene.addChild( p );
planes.push( p );
}
}
private function createListeners():void
{
/* for( var i:uint = 0; i < planes.length; i ++ )
{
planes[i].addEventListener(InteractiveScene3DEvent.OBJECT_MOVE,
onObjectMove);
planes[i].addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,
onObjectClick);
}*/
addEventListener( Event.ENTER_FRAME, onEnterFrame );
}
private function onEnterFrame(e:Event):void
{
camera.x = Math.cos(angleX) * 1000;
camera.z = Math.sin(angleX) * 1000;
renderer.renderScene(scene, camera, viewport);
}
}
}
==============================================================================================================================
Can anybody guie me where I am making the mistake. Thanks in advance for the
help.
Regards,
Simanta
_______________________________________________
osflash mailing list
[email protected]
http://osflash.org/mailman/listinfo/osflash_osflash.org