xWouterx
%Europe/Berlin %655 %2008, 16:44
Ik weet niet of hier iemand al enige ervaring heeft met Five3D
maar ik heb een vraag omtrend het resizen van Sprite3D objecten, want bij het setten van de height en width wordt er elke keer een error gethrowed.
Dit is men code:
package {
import five3D.display.Scene3D;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.MouseEvent;
import model.Cube3D;
public class Five3DBars2 extends Sprite
{
private var scene:Scene3D;
private var cube:Cube3D;
public function Five3DBars2()
{
initStage();
initScene();
initCube();
}
private function initStage():void{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
}
private function initScene():void{
scene = new Scene3D();
scene.x = stage.stageWidth / 2;
scene.y = stage.stageHeight / 2;
this.addChild(scene);
}
private function initCube():void{
cube = new Cube3D(60);
cube.addEventListener(MouseEvent.CLICK, turnCube);
scene.addChild(cube);
}
private function turnCube(mE:MouseEvent):void{
cube.turnMe();
}
}
}
package model
{
import five3D.display.Sprite3D;
import flash.events.Event;
public class Cube3D extends Sprite3D
{
private var faces:Array;
public function Cube3D(size:Number, colors:Array = null)
{
super();
if ( !colors ) colors = [ 0xFF0000, 0xFF0000, 0xFF0000, 0xFF0000, 0xFF0000, 0xFF0000 ];
createCube( size, colors );
}
private function createCube( size:Number, colors:Array ): void
{
faces = new Array();
var xP:Array = new Array( 0, size / 2, 0, -size / 2, 0, 0 );
var yP:Array = new Array( 0, 0, 0, 0, -size / 2, size / 2 );
var zP:Array = new Array( -size / 2, 0, size / 2, 0, 0, 0 );
var xR:Array = new Array( 0, 0, 0, 0, -90, 90 );
var yR:Array = new Array( 0, -90, 180, 90, 0, 0 );
var zR:Array = new Array( 0, 0, 0, 0, 0, 0 );
for ( var i:int = 0; i < 6; i++ )
{
var face:Sprite3D = new Sprite3D();
face.graphics3D.lineStyle( 1, 0x000000, 1 );
face.graphics3D.beginFill( colors[ i ] );
face.graphics3D.drawRect( -size / 2, -size / 2, size, size );
face.graphics3D.endFill();
face.singleSided = true;
face.x = xP[ i ];
face.y = yP[ i ];
face.z = zP[ i ];
face.rotationX = xR[ i ];
face.rotationY = yR[ i ];
face.rotationZ = zR[ i ];
faces[i] = face;
addChild(face);
}
}
public function turnMe():void{
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(e:Event):void{
this.rotationX++;
this.rotationY++;
this.width++;
}
}
}
Ik zou dus graag die Cube3D kunnen resizen
maar ik heb een vraag omtrend het resizen van Sprite3D objecten, want bij het setten van de height en width wordt er elke keer een error gethrowed.
Dit is men code:
package {
import five3D.display.Scene3D;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.MouseEvent;
import model.Cube3D;
public class Five3DBars2 extends Sprite
{
private var scene:Scene3D;
private var cube:Cube3D;
public function Five3DBars2()
{
initStage();
initScene();
initCube();
}
private function initStage():void{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
}
private function initScene():void{
scene = new Scene3D();
scene.x = stage.stageWidth / 2;
scene.y = stage.stageHeight / 2;
this.addChild(scene);
}
private function initCube():void{
cube = new Cube3D(60);
cube.addEventListener(MouseEvent.CLICK, turnCube);
scene.addChild(cube);
}
private function turnCube(mE:MouseEvent):void{
cube.turnMe();
}
}
}
package model
{
import five3D.display.Sprite3D;
import flash.events.Event;
public class Cube3D extends Sprite3D
{
private var faces:Array;
public function Cube3D(size:Number, colors:Array = null)
{
super();
if ( !colors ) colors = [ 0xFF0000, 0xFF0000, 0xFF0000, 0xFF0000, 0xFF0000, 0xFF0000 ];
createCube( size, colors );
}
private function createCube( size:Number, colors:Array ): void
{
faces = new Array();
var xP:Array = new Array( 0, size / 2, 0, -size / 2, 0, 0 );
var yP:Array = new Array( 0, 0, 0, 0, -size / 2, size / 2 );
var zP:Array = new Array( -size / 2, 0, size / 2, 0, 0, 0 );
var xR:Array = new Array( 0, 0, 0, 0, -90, 90 );
var yR:Array = new Array( 0, -90, 180, 90, 0, 0 );
var zR:Array = new Array( 0, 0, 0, 0, 0, 0 );
for ( var i:int = 0; i < 6; i++ )
{
var face:Sprite3D = new Sprite3D();
face.graphics3D.lineStyle( 1, 0x000000, 1 );
face.graphics3D.beginFill( colors[ i ] );
face.graphics3D.drawRect( -size / 2, -size / 2, size, size );
face.graphics3D.endFill();
face.singleSided = true;
face.x = xP[ i ];
face.y = yP[ i ];
face.z = zP[ i ];
face.rotationX = xR[ i ];
face.rotationY = yR[ i ];
face.rotationZ = zR[ i ];
faces[i] = face;
addChild(face);
}
}
public function turnMe():void{
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(e:Event):void{
this.rotationX++;
this.rotationY++;
this.width++;
}
}
}
Ik zou dus graag die Cube3D kunnen resizen