flash 3d flash3d 研究所 pv3d 共享资源  | 经典范例  | 视频教程  | 友情链接  | 联系我们
登陆 | 注册  flash 3d 研究所
讨论区





最近更新:
● payday loan阁下在教程区里 回复“《pv3d, sandy, away3d...”(05:56:23)
● bad credit payday loan阁下在教程区里 回复“《超简易papervision3D基础 ...”(05:56:13)
● payday loan阁下在教程区里 回复“《超简易papervision3D基础 ...”(05:56:12)
浏览主题:MovieScene3D与Scene3D区别

MovieScene3D与Scene3D区别
cy3502398 (2009-01-14 11:36:20)

MovieScene3D与Scene3D区别是什么?能否给个实例!谢谢!!


flash 3d 研究所 DDM君
(2009-01-14 12:03:37)
MovieScene3D等于Scene3D里面每个物体.container的效果。

MovieScene3D直接可以给每个单个物体加sprite可以加的方法,弊端是分散的,没法一起加方法。

Scene3D是个整体的,弊端是加sprite方法的时候要用.container

总体来说没什么大不了的区别,呵呵。

flash 3d 研究所 cy3502398
(2009-01-14 12:38:27)
container是它的方法还是新建的一个容器对象?
var container:Sprite = new Sprite();
是上面那个container容器吗?

flash 3d 研究所 cy3502398
(2009-01-14 12:40:40)
import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.*;
import org.papervision3d.materials.*;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import flash.display.Sprite;
import flash.events.MouseEvent;
import caurina.transitions.*;
var center_x:Number = stage.stageWidth * 0.5 - 200;
var center_y:Number = stage.stageHeight * 0.5 + 200;
//var center_z:Number=512;
var container:Sprite = new Sprite();//第一个container
container.x = center_x;
container.y = center_y;
addChild(container);

var scene:MovieScene3D = new MovieScene3D(container);
var cam:Camera3D = new Camera3D();
cam.zoom = 8;
tn_title.text = "";
tn_desc.text = "";
tn_url.text = "";

var p_dict:Dictionary=new Dictionary();
var pc:Plane = new Plane();
pc.visible = false;
cam.target = pc;

var angle1:Number = 0;
var angle2:Number = 0;
var pic_loader:Loader = new Loader();
var degree1:Number;
var degree2:Number;
var r:Number = 512;
var camera_distance:Number = r * 2.5;
var xp:Number;
var yp:Number;
var zp:Number;
var total_in_a_ring:Number = 10;//在一圈圆中有几张图片
var total_ring:Number = 6;//总共有几圈

var filename_list = new Array();
var url_list = new Array();
var url_target_list:Array = new Array();
var title_list = new Array();
var description_list = new Array();
var folder:String = "thumbnails/";

var i:Number;
var j:Number = 0;
var k:Number = 0;
var total:Number;
var flashmo_xml:XML = new XML();
var loader:URLLoader = new URLLoader();
loader.load(new URLRequest("thumbnail_list_4.xml"));
loader.addEventListener(Event.COMPLETE, create_thumbnail);

function create_thumbnail(e:Event):void {
     //var circle_mc:MovieClip = new MovieClip();
     //circle_mc.graphics.beginFill(0x004466, 100);
     //circle_mc.graphics.drawCircle(200, 200, 200);
     //circle_mc.graphics.endFill();

     //var mm:MovieMaterial;
     //mm = new MovieMaterial(circle_mc, true);
     //mm.smooth = true;
     //mm.doubleSided = true;
     //var p1 = new Plane(mm, 200, 200, 2, 2);
     //p1.y = r;
     //p1.rotationX = -90;
     //scene.addChild(p1);

     var ball:Ball = new Ball();
     //ball.gotoAndStop(1);
     addChild(ball);
     ball.x=700;
     ball.y=500;
     var mm:MovieMaterial;
     mm = new MovieMaterial(ball, true);
     mm.smooth = true;
     mm.doubleSided = true;
     var p1 = new Plane(mm, 200, 200, 2, 2);
     p1.y = r;
     p1.rotationX = -90;
     scene.addChild(p1);

     //var p2 = new Plane(mm, 200, 200, 2, 2);
     //p2.y = -r;
     //p2.rotationX = 90;
     //scene.addChild(p2);

     flashmo_xml = XML(e.target.data);
     total = flashmo_xml.thumbnail.length();

     for (i = 1; i <= total_ring; i++) {
           degree1 = i * 180 / (total_ring + 1) * Math.PI / 180;
           //trace("degree1========================================="+degree1)
           for (var j:uint = 0; j < total_in_a_ring; j++) {
                 url_list.push( flashmo_xml.thumbnail[k].@url.toString() );
                 url_target_list.push( flashmo_xml.thumbnail[k].@target.toString() );
                 title_list.push( flashmo_xml.thumbnail[k].@title.toString() );
                 description_list.push( flashmo_xml.thumbnail[k].@description.toString() );
                 filename_list.push(flashmo_xml.thumbnail[k].@filename.toString());
                 var bfm:BitmapFileMaterial = new BitmapFileMaterial(
                 folder + flashmo_xml.thumbnail[k].@filename.toString());
                 bfm.doubleSided = true;
                 bfm.smooth = true;
                 var p:Plane = new Plane(bfm, 120, 90, 2, 2);// W & H reduced from original 140x105
                 scene.addChild(p);
                 var p_container:Sprite = p.container;//第二个container
                 p_container.name = "flashmo_" + k;
                 p_dict[p_container] = p;
                 p_container.buttonMode = true;
                 p_container.addEventListener( MouseEvent.ROLL_OVER, p_rollover );
                 p_container.addEventListener( MouseEvent.ROLL_OUT, p_rollout );
                 p_container.addEventListener( MouseEvent.CLICK, p_click );
                 degree2 = j * Math.PI * 2 / total_in_a_ring;
                 trace("degree2============================"+degree2);
                 //xp = r * Math.sin(degree1) * Math.cos(degree2);
                 //xp=r*Math.cos(degree2);
                 xp=800-Math.random()*1600;
                 //zp = r * Math.sin(degree1) * Math.sin(degree2);
                 zp=600-Math.random()*1200;
                 //yp = r * Math.cos(degree1);
                 yp=384-Math.random()*768;
                 p.x = xp;
                 p.y = yp;
                 p.z = zp;
                 //p.rotationX = i * 180 / (total_ring + 1) - 90;
                 //p.rotationY = - j * 360 / total_in_a_ring + 270;
                 //p.rotationY=45-Math.random()*90;
                 p.rotationY=90;
                 k++;
           }
     }
}

function p_rollover(me:MouseEvent) {
     var sp:Sprite = me.target as Sprite;
     var tw1:Tween = new Tween(sp, 'scaleX', Strong.easeOut, 1, 1.11, 0.5, true);
     var tw2:Tween = new Tween(sp, 'scaleY', Strong.easeOut, 1, 1.11, 0.5, true);
     var s_no:Number = parseInt(sp.name.slice(8,10));
     tn_title.text = title_list[s_no];
     tn_desc.text = description_list[s_no];
     tn_url.text = url_list[s_no];
}
function p_rollout(me:MouseEvent) {
     var sp:Sprite = me.target as Sprite;
     var tw1:Tween = new Tween(sp, 'scaleX', Strong.easeOut, 1.11, 1, 0.5, true);
     var tw2:Tween = new Tween(sp, 'scaleY', Strong.easeOut, 1.11, 1, 0.5, true);
     tn_title.text = "";
     tn_desc.text = "";
     tn_url.text = "";
}
function p_click(me:MouseEvent) {
     //var sp:Sprite = me.target as Sprite;
     //var s_no:Number = parseInt(sp.name.slice(8,10));
     //navigateToURL(new URLRequest(url_list[s_no]), url_target_list[s_no]);
     //var tw3:Tween = new Tween(sp, 'scaleX', Strong.easeOut, 1, 6, 0.5, true);
     //var tw4:Tween = new Tween(sp, 'scaleY', Strong.easeOut, 1, 6, 0.5, true);
     var sp:Sprite = me.target as Sprite;
     var s_no:Number = parseInt(sp.name.slice(8,10));

     ////tn_title.text = title_list[s_no];
     ///tn_desc.text = description_list[s_no];
     //tn_url.text = url_list[s_no];
     //tn_url_target.text = url_target_list[s_no];
     //tn_title.visible = tn_desc.visible = tn_url.visible = false;

     pic_loader.contentLoaderInfo.addEventListener(Event.OPEN, on_open);
     pic_loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, on_progress);
     pic_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, on_pic_loaded);
     pic_loader.load(new URLRequest(folder + filename_list[s_no]));
     pic_loader.alpha = 0;

     //url_button.visible = false;
     //url_button.addEventListener(MouseEvent.CLICK, goto_URL);
     //Tweener.addTween( container, { x: 1500, time: 0.6, transition:"easeInExpo" } );

}

addEventListener(Event.ENTER_FRAME, render);
function on_open(e:Event):void {
     tn_title.text = "Loading... 0%";
}
function on_progress(e:ProgressEvent):void {
     var percent:Number = Math.round(e.bytesLoaded / e.bytesTotal * 100);
     tn_title.text = "Loading... " + percent + "%";
}
function on_pic_loaded(e:Event):void {
     tn_title.text = "";
     tn_title.visible = tn_desc.visible = tn_url.visible = true;
     //url_button.visible = true;

     addChildAt(pic_loader, 1);
     pic_loader.x = center_x-200;
     pic_loader.y = center_y-400;
     pic_loader.addEventListener(MouseEvent.CLICK, remove_pic);
     pic_loader.addEventListener(MouseEvent.MOUSE_DOWN,drag_pic);
     //setChildIndex(DisplayObject(e.target),numChildren-1);
     Tweener.addTween( pic_loader, { alpha: 1, time: 1 } );
}
function remove_pic(e:Event):void {
     Tweener.addTween( pic_loader, { alpha: 0, time: 1, onComplete:function() { removeChild(this); } } );
     Tweener.addTween( container, { x: center_x, time: 1, delay: 1, transition:"easeOutExpo"} );

     //tn_title.text = "";
     //tn_desc.text = "";
     //tn_url.text = "";
     //url_button.visible = false;
}
function drag_pic(e:MouseEvent) {
     //var sp:Sprite = me.target as Sprite;
     //var tw1:Tween = new Tween(sp, 'scaleX', Strong.easeOut, 1.11, 1, 0.5, true);
     //var tw2:Tween = new Tween(sp, 'scaleY', Strong.easeOut, 1.11, 1, 0.5, true);
     //var sp:Sprite = e.target as Sprite;
     //this.addEventListener(Event.ENTER_FRAME,pic_move);
     //var mb:S
     //this.startDrag();
     //tn_title.text = "";
     //tn_desc.text = "";
     //tn_url.text = "";
     var sp:Sprite=e.target as Sprite;
     trace(sp);
     this.startDrag();
     
}
function pic_move(e:Event) {
     this.x=(center_x-this.x)*0.5;
}
function render(e:Event):void {
     var dist:Number = ((stage.mouseY) - center_y) * -0.25;
     var distx:Number=((stage.mouseY)-center_y)*-0.00015;
     var dist2:Number = ((stage.mouseX) - center_x) * 0.00015;
     var dist3:Number=stage.mouseX-center_x;
     var angle_total:Number;
     angle1 += dist2;
     angle2 += distx;
     //ball.gotoAndStop(mycurrentframe);
     //angle_total=Math.sqrt(angle1*angle1+angle2*angle2);
     cam.x = Math.cos(angle1) * camera_distance;
     cam.z = Math.sin(angle1) * camera_distance;
     //cam.x = Math.cos(angle_total) * camera_distance;
     //cam.z = Math.sin(angle_total) * camera_distance;
     cam.y += dist;
     //cam.y=100
     //cam.y=Math.cos(angle_total) * camera_distance;
     //cam.y = Math.cos(angle1) * camera_distance;
     //if (cam.y < -camera_distance) {
     //cam.y = -camera_distance;
     //}
     //if (cam.y > camera_distance) {
     //cam.y = camera_distance;
     //}

     //cam.zoom = Math.abs(cam.y * 0.0012) * Math.abs(cam.y * 0.0012) + 7.5;
     scene.renderCamera(cam);
}

flash 3d 研究所 cy3502398
(2009-01-14 12:41:44)
上面我标注的两个container指同一个吗?

flash 3d 研究所 cy3502398
(2009-01-14 12:46:34)
将上面这句
var scene:MovieScene3D = new MovieScene3D(container);
改为
var scene:Scene3D = new Scene3D(container);后只出现一张图片,而保留上面的将会正确显示!
而如果像DDM君所说的那样MovieScene3D代表分散的,而Scene3D代表整体的,情况应该会相反啊!

flash 3d 研究所 DDM君
(2009-01-14 14:25:16)
两种声明都不需要参数,直接
var scene:Scene3D = new Scene3D;
就可以了
每个物体用
scene.addChild(物体);

欢迎看看我们的教程范例。
http://www.flab3d.com/tutorials_01_pv3dbasic.php


flash 3d 研究所 fur3
(2009-01-14 14:53:10)
cube.container
完全等同于
layer1=viewport.getChildLayer(cube);

评论人:
邮   箱: (填入邮箱,博客地址均可)

内   容: (广告和垃圾内容可能会被删除,望理解)
链接地址

验证码:(为防止机器人骚扰,请麻烦输入验证码^_^)
  

(目前需登陆方可发表)


不想添加了