只需要将上一例中以下代码部分
var material:WireframeMaterial = new WireframeMaterial(0x000000);
改成
var material:BitmapFileMaterial = new BitmapFileMaterial();
material.texture = "http://www.auciferjay.cn/upfile/PV3DFileLoad.jpg";
即可使用。当然考虑到图片加载问题。建议使用FileLoadEvent.LOAD_COMPLETE事件来侦听。
完整代码
package {
import flash.display.Sprite;
import flash.events.Event;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.events.FileLoadEvent;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.objects.Plane;
import org.papervision3d.scenes.MovieScene3D;
[SWF(width='300',height='300',backgroundColor='0xFFFFFF',frameRate='30')]
public class main extends Sprite
{
private var _container:Sprite;
private var _scene:MovieScene3D;
private var _camera:Camera3D;
private var material:BitmapFileMaterial;
private var _plane:Plane;
public function main()
{
// 创建3D舞台的容器
_container = new Sprite();
_container.x = 150;
_container.y = 150;
addChild( _container );
// 创建3D舞台
_scene = new MovieScene3D( _container );
// 创建摄像头
_camera = new Camera3D();
_camera.z = -500;
_camera.zoom = 5;
// 创建图片
material= new BitmapFileMaterial();
material.addEventListener( FileLoadEvent.LOAD_COMPLETE , loadComFun );
material.texture = "http://www.auciferjay.cn/upfile/PV3DFileLoad.jpg";
}
private function loadComFun( event:FileLoadEvent ):void
{
trace("Complete");
// 创建一个 128 * 128 的平面
_plane = new Plane( material, 200, 200, 2, 2 );
// 将平面对象加入到舞台
_scene.addChild( _plane );
// 绘制3D舞台
_scene.renderCamera( _camera );
this.addEventListener( Event.ENTER_FRAME, enterFrameFun );
}
private function enterFrameFun( event:Event ):void
{
_camera.x = -( _container.mouseX * 3)/2;
_camera.y = ( _container.mouseY * 3)/2;
_scene.renderCamera( _camera );
}
}
}
相似应用
加入Bitmap内部文件使用
BitmapAssetMaterial( name ) name为库中文件的指定类名
加入内部影片文件使用
MovieAssetMaterial( name, transparent, animated ) name为库中文件的指定类名,transparent是否背景透明,animated是否是动画
加入Bitmap外部文件使用
BitmapFileMaterial
texture 指定文件路径
加入Bitmap色块使用
BitmapColorMaterial( color) color为16进制数
加入色块使用
ColorMaterial( color) color为16进制数
加入互动色块使用
InteractiveColorMaterial( color) color为16进制数
加入线条使用
BitmapWireframeMaterial( color,alpha ) color为16进制数,alpha为0~1的正数
还有很多类似的类可以使用,以后慢慢用来~~~~~