![]() |
DDM君 (2009-01-14 12:03:37) |
MovieScene3D等于Scene3D里面每个物体.container的效果。 MovieScene3D直接可以给每个单个物体加sprite可以加的方法,弊端是分散的,没法一起加方法。 Scene3D是个整体的,弊端是加sprite方法的时候要用.container 总体来说没什么大不了的区别,呵呵。 |
![]() |
cy3502398 (2009-01-14 12:38:27) |
container是它的方法还是新建的一个容器对象? var container:Sprite = new Sprite(); 是上面那个container容器吗? |
![]() |
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); } |
![]() |
cy3502398 (2009-01-14 12:41:44) |
上面我标注的两个container指同一个吗? |
![]() |
cy3502398 (2009-01-14 12:46:34) |
将上面这句 var scene:MovieScene3D = new MovieScene3D(container); 改为 var scene:Scene3D = new Scene3D(container);后只出现一张图片,而保留上面的将会正确显示! 而如果像DDM君所说的那样MovieScene3D代表分散的,而Scene3D代表整体的,情况应该会相反啊! |
![]() |
DDM君 (2009-01-14 14:25:16) |
两种声明都不需要参数,直接 var scene:Scene3D = new Scene3D; 就可以了 每个物体用 scene.addChild(物体); 欢迎看看我们的教程范例。 http://www.flab3d.com/tutorials_01_pv3dbasic.php |
![]() |
fur3 (2009-01-14 14:53:10) |
cube.container 完全等同于 layer1=viewport.getChildLayer(cube); |
|
|