Never mind my last response... Was me being dumb lol
I re-created the project as a pure AS3 Project (no mxml) and
I get no errors for type conversion and input params on new
Twist(). And no error on addModifier(twist). Then I realised I
called the project Twist --- lol name conflict. ( self slap lol
).
I will post up articles on my site over the next few days
with examples of all the AS3DMod modifiers in use.
Thanks.
package
{
import
away3d.cameras.HoverCamera3D;
import
away3d.containers.Scene3D;
import
away3d.containers.View3D;
import
away3d.core.render.BasicRenderer;
import
away3d.core.utils.Cast;
import
away3d.debug.AwayStats;
import
away3d.materials.BitmapMaterial;
import
away3d.primitives.Plane;
import
away3d.primitives.Trident;
import
com.as3dmod.ModifierStack;
import
com.as3dmod.core.Vector3;
import
com.as3dmod.modifiers.Bend;
import
com.as3dmod.modifiers.Twist;
import
com.as3dmod.plugins.away3d.LibraryAway3d;
import
com.as3dmod.util.Phase;
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(frameRate="31",
backgroundColor="#FFFFFF")]
//[SWF(width="800",
height="600", frameRate="31"}]
//
------------------------------------------------------------------------------------------------
public
class AS3TwistTest extends Sprite
{
//
------------------------------------------------------------------------------------------------
//
Embedded asssets
/*
[Embed(source='assets/front.jpg')]
private
var page1aAsset:Class;
[Embed(source='assets/back.jpg')]
private
var page1bAsset:Class;
*/
//
------------------------------------------------------------------------------------------------
//
------------------------------------------------------------------------------------------------
//
Var defs
//
------------------------------------------------------------------------------------------------
private
var away3DContainer:Sprite;
private
var away3DStatsContainer:Sprite;
//
Var ini
private
var scene:Scene3D;
private
var camera:HoverCamera3D;
private
var view:View3D;
private
var renderer:BasicRenderer;
private
var bMove:Boolean = false;
private
var lastPanAngle:Number;
private
var lastTiltAngle:Number;
private
var lastMouseX:Number;
private
var lastMouseY:Number;
//
Primitives
private
var plane:Plane;
private
var nSegments:Number = 10;
//
Materials
private
var bmat1:BitmapMaterial;
private
var bmat2:BitmapMaterial;
//
Vars AS3DMod
private
var bend:Bend;
private
var twist:Twist;
private
var twistPhase:Phase;
private
var modStack:ModifierStack;
//
------------------------------------------------------------------------------------------------
//
------------------------------------------------------------------------------------------------
public
function AS3TwistTest()
{
//
stage
stage.align
= StageAlign.TOP_LEFT;
stage.scaleMode
= StageScaleMode.NO_SCALE;
//
Containers
away3DContainer
= new Sprite();
away3DStatsContainer
= new Sprite();
addChild(away3DContainer);
addChild(away3DStatsContainer);
//
Setup Away3D
camera
= new HoverCamera3D();
renderer
= new BasicRenderer();
scene
= new Scene3D();
view
= new View3D();
view.scene
= scene;
view.camera
= camera;
view.renderer
= renderer;
view.x
= stage.stageWidth / 2;
view.y
= stage.stageHeight / 2;
//
Setup away3d stats (appears to slow the cpu)
var
awaystats:AwayStats = new AwayStats(view);
away3DStatsContainer.addChild(awaystats);
var
tr:Trident = new Trident(500,true);
scene.addChild(tr);
//
Setup camera
camera.minTiltAngle
= -80;
camera.maxTiltAngle
= 80;
camera.panAngle
= 150;
camera.tiltAngle
= 20;
camera.zoom
= 5;
//
Add Away3D to its container UIComponent
away3DContainer.addChild(view);
//
Resize handler
this.addEventListener(Event.RESIZE,handleBrowserResize);
handleBrowserResize();
//
Enter frame handler (make things move)
stage.addEventListener(Event.ENTER_FRAME,
onEnterFrame);
stage.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);
stage.addEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);
//
Setup materials
//bmat1
= new BitmapMaterial( Cast.bitmap( new page1aAsset() ) );
//bmat2
= new BitmapMaterial( Cast.bitmap( new page1bAsset() ) );
//
generate
generateScene();
}
//
------------------------------------------------------------------------------------------------
//
------------------------------------------------------------------------------------------------
private
function generateScene():void
{
//plane
= new
Plane({segmentsW:10,segmentsH:10,width:800,height:800,material:new
WireframeMaterial()});
plane
= new Plane();
plane.segmentsW
= plane.segmentsH = nSegments;
plane.width
= 800;
plane.height
= 800;
plane.bothsides
= true;
//plane.material
= bmat1;
//plane.back
= bmat2;
scene.addChild(plane);
//
AS3DMod Start
modStack
= new ModifierStack(new LibraryAway3d(), plane);
twist
= new Twist(Math.PI/2);
twist.vector
= new Vector3(1,0,0);
twistPhase
= new Phase();
modStack.addModifier(twist);
}
//
------------------------------------------------------------------------------------------------
//
------------------------------------------------------------------------------------------------
private
function onEnterFrame(event:Event):void
{
//
AS3DMod - Animate twist and apply
twistPhase.value
+= 0.05;
twist.angle
= Math.PI / 4 * twistPhase.phasedValue;
trace("twist.angle
= " + twist.angle); // Traces anglle from -0.7 to +0.7
this.modStack.apply();
//
Camera movement
if
(bMove) {
camera.panAngle
= 0.3 * (stage.mouseX - lastMouseX) + lastPanAngle;
camera.tiltAngle
= 0.3 * (stage.mouseY - lastMouseY) + lastTiltAngle;
}
//
Hover camera
camera.hover();
//
Render
view.render();
}
//
------------------------------------------------------------------------------------------------
//
------------------------------------------------------------------------------------------------
private
function mouseDownHandler(event:MouseEvent):void
{
lastPanAngle
= camera.panAngle;
lastTiltAngle
= camera.tiltAngle;
lastMouseX
= stage.mouseX;
lastMouseY
= stage.mouseY;
bMove
= true;
stage.addEventListener(Event.MOUSE_LEAVE,
onStageMouseLeave);
}
//
------------------------------------------------------------------------------------------------
//
------------------------------------------------------------------------------------------------
private
function mouseUpHandler(event:MouseEvent):void
{
bMove
= false;
stage.removeEventListener(Event.MOUSE_LEAVE,
onStageMouseLeave);
}
//
------------------------------------------------------------------------------------------------
//
------------------------------------------------------------------------------------------------
private
function onStageMouseLeave(event:Event):void
{
bMove
= false;
stage.removeEventListener(Event.MOUSE_LEAVE,
onStageMouseLeave);
}
//
------------------------------------------------------------------------------------------------
//
------------------------------------------------------------------------------------------------
//
Browser resize handler (simply adjust view3d center x:0 y:0 at
browser 1/2 width and height to keep things in the middle
private
function handleBrowserResize(e:Event=null):void
{
this.view.x
= stage.stageWidth/2;
this.view.y
= stage.stageHeight/2;
}
//
------------------------------------------------------------------------------------------------
}
}