for question 2 above here's code I've pieced together if it helps:
package
{
import flash.display.*;
import flash.events.*;
import fl.controls.Button;
import away3d.loaders.Obj;
import away3d.events.LoaderEvent;
import away3d.loaders.Object3DLoader;
import away3d.core.base.*;
import away3d.core.render.*;
import away3d.cameras.*;
import away3d.containers.*;
import away3d.core.utils.*;
import away3d.lights.*;
import away3d.materials.*;
[SWF(backgroundColor="#888888", frameRate="30", quality="LOW",
width="500", height="400")]
public class Test65 extends Sprite
{
private var scene:Scene3D;
private var camera:HoverCamera3D
private var view:View3D;
private var light:DirectionalLight3D;
private var navigate:Boolean = false;
private var lastMouseX:Number;
private var lastMouseY:Number;
private var lastzoom:Number;
private var lastMouseYzoom:Number;
private var lastRotationX:Number;
private var lastRotationY:Number;
private var move:Boolean = false;
private var lastPanAngle:Number;
private var lastTiltAngle:Number;
private var cZoom:Number=6;
public var obj1:Object3DLoader;
private var obj2:Object3DLoader;
private var obj3:Object3DLoader;
private var objtoload:Number;
private var textBut:Button;
public function Test65()
{
init();
}
private function init():void
{
initEngine();
initObjects();
initLights();
initButton();
initListeners();
}
private function initEngine():void
{
scene = new Scene3D();
camera = new HoverCamera3D({zoom:cZoom, focus:200,
distance:1500});
camera.targetpanangle = camera.panangle = -180;
camera.targettiltangle = camera.tiltangle = 15;
camera.yfactor = 0.8;
view = new View3D({scene:scene, camera:camera});
view.x = 300;
view.y = 200;
addChild( view );
}
private function initButton():void
{
textBut=new Button();
textBut.label="Change Obj";
textBut.toggle=true;
textBut.move(20,10);
addChild(textBut);
}
private function initObjects():void
{
var material:BitmapFileMaterial = new
BitmapFileMaterial("assett/
teapot_1.jpg");
var material2:BitmapFileMaterial = new
BitmapFileMaterial("assett/
teapot_2.jpg");
var material3:BitmapFileMaterial = new
BitmapFileMaterial("assett/
teapot_3.jpg");
obj1 = Obj.load("assett/teapot_1.obj", {
material:material } );
obj2 = Obj.load("assett/teapot_2.obj",
{material:material2 } );
obj3 = Obj.load("assett/teapot_3.obj",
{material:material3 } );
//obj1.addOnSuccess(onLoaderSuccess);
scene.addChild(obj1)
}
private function initLights():void
{
light = new DirectionalLight3D({x:1, y:1, z:-1,
ambient:0.0});
scene.addChild(light);
}
private function initListeners():void
{
textBut.addEventListener( MouseEvent.MOUSE_DOWN,
txtButMouseDown );
stage.addEventListener( MouseEvent.MOUSE_DOWN,
onMouseDown );
stage.addEventListener( MouseEvent.MOUSE_UP, onMouseUp
);
addEventListener( Event.ENTER_FRAME, onEnterFrame );
}
private function onMouseDown(e:MouseEvent):void
{
lastzoom = cZoom;
lastMouseYzoom = stage.mouseY;
lastPanAngle = camera.targetpanangle;
lastMouseX = stage.mouseX;
move = true;
}
private function txtButMouseDown(event:MouseEvent):void
{
if(objtoload = 3){objtoload=0}
objtoload+=1;
if (objtoload=2) {
scene.removeChild(obj1);scene.removeChild
(obj3);scene.addChild(obj2); }
if (objtoload=3) {
scene.removeChild(obj1);scene.removeChild
(obj2);scene.addChild(obj3); }
if (objtoload=1) {
scene.removeChild(obj2);scene.removeChild
(obj3);scene.addChild(obj1); }
}
private function onMouseUp(e:MouseEvent):void
{
move = false;
}
private function onEnterFrame( e:Event ):void
{
var cameraSpeed:Number = 0.8;
if (move)
{
camera.targetpanangle =
cameraSpeed*(stage.mouseX - lastMouseX) +
lastPanAngle;
cZoom = 0.03*cameraSpeed*(stage.mouseY -
lastMouseYzoom) +
lastzoom;
if(cZoom > 8)
{
cZoom = 7.9;
}
if(cZoom < 1)
{
cZoom = 1.1;
}
camera.zoom=cZoom;
camera.hover();
scene.updateTime();
view.render();
}
}
private function onResize(event:Event):void
{
view.x = stage.stageWidth / 2;
view.y = stage.stageHeight / 2;
}
}
}
>
> 2. If I then read in another obj file (which I verified can be read in
> and texture file is ok) how do I switch back and forth displaying one
> or the other?
>
> I've tried:
>
> if (objtoload=2) { scene.addChild(obj2);scene.removeChild(obj1); }
>
> via a button handler but I get the original obj and then a cube of
> some sort with a texture of text saying "Loading Geometry ..." over
> top of original obj ...
>
> using Flash CS4 (demo), away3D 3.3.3, btw
>
> Thanks