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();
}
}
}
運行結果: