http://www.sandy1219.com/3d/test4/TestChangeSkin.html
import org.ascollada.utils.FPS;
import org.aswing.AsWingManager;
import org.aswing.BoxLayout;
import org.aswing.JButton;
import org.aswing.JFrame;
import org.papervision3d.events.FileLoadEvent;
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.parsers.DAE;
import org.papervision3d.view.BasicView;
public class TestChangeSkin extends BasicView
{
public function TestChangeSkin()
{
super(800,800,true,true)
init3D();
}
private var light:PointLight3D;
private var daeFile:DAE;
private var _png:BitmapFileMaterial ;
private var skinList:Array = [];
private function init3D():void
{
skinList['1'] = 'dae/casual04_m_25.png';
skinList['2'] = 'dae/casual06_m_25.png'
AsWingManager.initAsStandard(this);
addChild(new FPS());
light = new PointLight3D(true,true);
light.z = -10000;
light.y = 40000;
light.x = 30000;
scene.addChild(light)
loadAdeFile();
camera.focus = 100 ;
startRendering();
addButton();
}
private function loadAdeFile():void
{
daeFile = new DAE(true,'song',true);
daeFile.addEventListener(FileLoadEvent.LOAD_COMPLETE, onLoadComplete);
_png = new BitmapFileMaterial('dae/casual04_m_25.png') ;
_png.interactive = true ;
_png.doubleSided = true ;
var _mat:MaterialsList = new MaterialsList({ mat: new FlatShadeMaterial(light, 0xcc0000) , all:_png });
daeFile.load("dae/male.DAE",_mat );
scene.addChild(daeFile);
}
private function onLoadComplete(e:FileLoadEvent):void
{
daeFile.moveDown(100)
}
override protected function onRenderTick(event:Event=null):void
{
super.onRenderTick(event)
}
private function addButton():void
{
var jf:JFrame = new JFrame();
jf.getContentPane().setLayout(new BoxLayout())
jf.setSizeWH(300,100);
jf.show();
var b1:JButton = new JButton('skin1');
b1.name = '1'
b1.addActionListener(btnClick)
jf.getContentPane().append(b1)
var b2:JButton = new JButton('skin2');
b2.name = '2'
b2.addActionListener(btnClick)
jf.getContentPane().append(b2)
}
private function btnClick(e:Event):void
{
var jb:JButton = e.currentTarget as JButton;
var index:String = jb.name;
changeBitmap(skinList[index]);
}
private var ld:Loader;
private function changeBitmap(url:String):void
{
ld = new Loader();
ld.contentLoaderInfo.addEventListener(Event.COMPLETE , loadComplete)
ld.load(new URLRequest(url));
}
private function loadComplete(e:Event):void
{
_png.bitmap = Bitmap( ld.content).bitmapData;
}
}
}