forked from: forked from: [PV3D]外部画像をLoaderを利用して読み込んだ場合の実装方法

by JohnBrookes forked from forked from: [PV3D]外部画像をLoaderを利用して読み込んだ場合の実装方法 (diff: 75)
just playing JB :)
doh! have to wait for material to load before setting UV
♥0 | Line 48 | Modified 2009-11-06 03:09:10 | MIT License | (replaced)
play

ActionScript3 source code

/**
 * Copyright JohnBrookes ( http://wonderfl.net/user/JohnBrookes )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/kTLy
 */

      // forked from a24's forked from: [PV3D]外部画像をLoaderを利用して読み込んだ場合の実装方法
      // forked from clockmaker's [PV3D]外部画像をLoaderを利用して読み込んだ場合の実装方法
      //just playing JB :)
	  // doh! have to wait for material to load before setting UV
      package {
          import flash.display.*;
          import flash.events.*;
          import flash.net.*;
          import flash.system.*;
		  import org.papervision3d.events.FileLoadEvent;
          import org.papervision3d.materials.*;
          import org.papervision3d.objects.primitives.*;
          import org.papervision3d.view.*;
          import org.papervision3d.objects.DisplayObject3D;
          
          public class Main2 extends BasicView {
			  private var material:BitmapFileMaterial;
              public function Main2():void {
                 opaqueBackground = 0x0; // 背景を黒くする
                  
                  // クロスドメイン対策
                   Security.loadPolicyFile("http://assets.wonderfl.net/crossdomain.xml");
                   
                   // 画像ファイルのパス
                   const url:String = "http://assets.wonderfl.net/images/related_images/7/7a/7a1e/7a1e6ef276b0d7da95e79499fbfae10ceee8e9b6";
                   
                   // マテリアル(テクスチャ)をBitmapFileMaterialとして作成
                   material = new BitmapFileMaterial(url);
				   material.addEventListener(FileLoadEvent.LOAD_COMPLETE, imgLoaded);
                  
              }
			  
			  private function imgLoaded(e:FileLoadEvent):void 
			  {
				  material.doubleSided = true; // 両面にテクスチャを貼る
                 // material.precise = true; // テクスチャの歪み防止
                  material.tiled = true;
              material.maxU = 0.5; 
			 
                  
                  // 平面を作成
                  var pivot:DisplayObject3D = new DisplayObject3D();
                        
                        var plane:Plane = new Plane(material, 300, 600, 2);
                    plane.x = 150;
                   plane.rotationY = 180;
                        
                        var plane2:Plane = new Plane(material, 300, 600, 2);
                        plane2.x = -150;
                        
                  var plane3:Plane = new Plane(material, 300, 600, 2);
                        plane3.z = -150;
                        plane3.rotationY = -90;
                        
                  var plane4:Plane = new Plane(material, 300, 600, 2);
                        plane4.z = 150;
                        plane4.rotationY = 90;
                  
                  // 画面を表示
                 scene.addChild(pivot);
                 pivot.addChild(plane);
                 pivot.addChild(plane2);
            pivot.addChild(plane3);
            pivot.addChild(plane4);
                  
                  // レンダリング開始
                  startRendering();
                  
                  // ついでに回転でもさせておく
                  addEventListener(Event.ENTER_FRAME, function():void {
                      pivot.yaw(1);
                  });
			  }
          }
      }