Away3D Error: Error #3669: 輸入大小錯誤。

Error: Error #3669: 輸入大小錯誤。
 at flash.display3D::Context3D/configureBackBuffer()
 at away3d.core.managers::Stage3DProxy/configureBackBuffer()[F:\GettingStartedWithAway3D\Files\away4\src\away3d\core\managers\Stage3DProxy.as:119]
 at away3d.containers::View3D/updateBackBuffer()[F:\GettingStartedWithAway3D\Files\away4\src\away3d\containers\View3D.as:460]
 at away3d.containers::View3D/render()[F:\GettingStartedWithAway3D\Files\away4\src\away3d\containers\View3D.as:486]
 at Triaxe/onEnterFrame()[F:\GettingStartedWithAway3D\Files\src\Triaxe.as:123]

  今天在編寫away3d 官網上(http://away3d.com/  ) Triaxe 例子的時候,每次渲染 view.render();  的時候都提示上邊的錯誤。官方的例子用的away3D是3.6 版本,我用的是 4.0。在網上查了半天,也沒查出個結果。最後把以下這兩行代碼註釋

//   this.stage.scaleMode = StageScaleMode.NO_SCALE;
//   this.stage.align = StageAlign.TOP;

運行成功了,問題解決。不過現在還沒明白,爲兩行代碼與 Error: Error #3669: 輸入大小錯誤 有什麼聯繫。希望有明白的人指點下。

源代碼,相比官方的例子有所改成。創建了三個sphere,並顯示座標系。

package
{
	import away3d.cameras.Camera3D;
	import away3d.containers.Scene3D;
	import away3d.containers.View3D;
	import away3d.debug.Trident;
	import away3d.entities.Mesh;
	import away3d.materials.ColorMaterial;
	import away3d.primitives.SphereGeometry;
	
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Vector3D;
	
	[SWF(width="500", height="400", frameRate="30", backgroundColor="#00AAAA")]
	public class Triaxe extends Sprite
	{
		private var view: View3D;
		private var camera: Camera3D;
		private var scene: Scene3D;
		
		private var move: Boolean = false;
		private var lastMouseX: Number;
		private var lastMouseY: Number;
		
		public function Triaxe()
		{
			//TODO: implement function
			super();
			
			this.init();
		}
		
		private function init(): void
		{	
			trace( "init" );
//			this.stage.scaleMode = StageScaleMode.NO_SCALE;
//			this.stage.align = StageAlign.TOP;
			
			this.createScene();	
		}
		
		private function createScene(): void
		{
			trace( "createScene" );
			camera = new Camera3D();
			scene = new Scene3D();

			view = new View3D( scene, camera );
			view.antiAlias = 4;
			
			addChild( view );
			
			this.createSphere();
			this.createAxis();
			
			trace( "addEventListener" );
			
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
//			this.stage.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown);
//			this.stage.addEventListener(MouseEvent.MOUSE_UP, MouseUp);
		}
		
		private function createSphere(): void
		{
			trace( "createSphere1" );
			//sphere1
			var mat1: ColorMaterial = new ColorMaterial( 0xffff00 );
			var sphereGeo1: SphereGeometry = new SphereGeometry( 10 );
			var sphere1: Mesh = new Mesh( sphereGeo1, mat1 );
			sphere1.position = new Vector3D( 100, -150, 0 );
			scene.addChild( sphere1 );
			
			
			trace( "createSphere2" );
			//sphere2
			var mat2: ColorMaterial = new ColorMaterial( 0xffff00 );
			var sphereGeo2: SphereGeometry = new SphereGeometry( 10 );
			var sphere2: Mesh = new Mesh( sphereGeo2, mat2 );
			sphere2.position = new Vector3D( 0, 200, 150 );
			scene.addChild( sphere2 );
			
			trace( "createSphere3" );
			//sphere3
			var mat3: ColorMaterial = new ColorMaterial( 0xffff00 );
			var sphereGeo3: SphereGeometry = new SphereGeometry( 10 );
			var sphere3: Mesh = new Mesh( sphereGeo3, mat3 );
			sphere3.position = new Vector3D( -150, 0, 100 );
			scene.addChild( sphere3 );
			
		}
		
		private function createAxis(): void
		{
			trace( "createAxis");
			var axis: Trident = new Trident( 180 );
			scene.addChild( axis );
		}
		
		private function MouseDown(event: MouseEvent):void
		{
			lastMouseX = stage.mouseX;
			lastMouseY = stage.mouseY;
			move = true;
		}
		
		private function MouseUp(event:MouseEvent):void
		{
			move = false;
		}
		
		/**
		 * 
		 * @param evt
		 * 
		 */		
		private function onEnterFrame( evt: Event ):void
		{	
			view.render();
		}
	}
}

 

運行結果:


發佈了17 篇原創文章 · 獲贊 9 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章