Code as promised.
Main.as
package
{
import assets.LoadingIcon;
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
import loaders.BranchLoader;
import loaders.TextLoader;
import utils.Away3DUtils;
import away3d.containers.View3D;
import away3d.core.clip.FrustumClipping;
import away3d.cameras.lenses.PerspectiveLens;
import away3d.cameras.Camera3D;
import flash.geom.Vector3D;
[SWF(width="800", height="600", frameRate="60",
backgroundColor="#000000", quality="high")]
public class Main extends Sprite
{
private var m_fsm:StateMachine = null;
private var m_loadingIcon:LoadingIcon = null;
private var m_view:View3D = null;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
initAway3D();
this.m_fsm = new StateMachine();
this.m_loadingIcon = new LoadingIcon();
this.m_fsm.state = StateMachine.INITED;
addEventListener(Event.ENTER_FRAME, render);
load();
}
private function initAway3D() : void
{
this.m_view = new View3D( { x:400, y:300 } );
m_view.camera = new Camera3D( { distance:0 } );
m_view.camera.lens = new PerspectiveLens();
m_view.camera.position = new Vector3D(0, 0, -5);
m_view.clipping = new FrustumClipping();
m_view.clipping.minZ = 0.1;
m_view.clipping.maxZ = 1000.0;
Away3DUtils.setFov(m_view.camera, 80);
this.addChild(m_view);
}
private function load() : void
{
this.m_fsm.state = StateMachine.LOADING;
this.m_view.scene.addChild(m_loadingIcon);
var bl:BranchLoader = new BranchLoader(Config.APP_ROOT
+ "/assets/
mainbranch.xml");
bl.load();
}
private function render(e:Event):void
{
switch (this.m_fsm.state)
{
case StateMachine.LOADING:
{
this.m_loadingIcon.animate();
m_view.render();
}
break;
}
}
}
}
LoadingIcon.as
package assets
{
import away3d.materials.MovieMaterial;
import away3d.primitives.Sphere;
public class LoadingIcon extends Sphere
{
public function LoadingIcon()
{
this.radius = 2.0;
this.bothsides = true;
//this.segmentsH = 20;
//this.segmentsW = 20;
var m:MovieMaterial = new MovieMaterial(new
LoadingIconMaterial());
this.material = m;
}
public function animate() : void
{
//this.rotationX += 0.25;
this.rotationY += 2.0;
}
}
}
LoadingIconMaterial.as
package assets
{
import flash.display.Graphics;
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
public class LoadingIconMaterial extends Sprite
{
private var m_width:Number = 256;
private var m_height:Number = 128;
public function LoadingIconMaterial()
{
var tf:TextField = new TextField();
tf.text = "Loading...Please Wait";
this.addChild(tf);
tf.x = 0;
tf.y = m_height / 2.0 - (tf.textHeight / 2.0);
tf.height = tf.textHeight + 5.0;
tf.width = m_width;
tf.selectable = false;
var format:TextFormat = new TextFormat();
format.color = 0x00FF00;
format.align = TextFormatAlign.CENTER;
tf.setTextFormat(format);
var g:Graphics = this.graphics;
g.beginFill(0xFFFFFF, 0.20);
g.drawRect(0, 0, m_width, m_height);
g.endFill();
this.scaleX = 10;
this.scaleY = 10;
}
}
}
On 21 joulu, 14:38, xcx <[email protected]> wrote:
> I'll post some code here later on (I have no access to it right now).
>
> Increasing faces doesn't work. It only get worse since there is more
> faces to flicker :). To me it seems that there is something fishy
> about rendering order.
>
> On 21 joulu, 14:29, sapphiriotic <[email protected]> wrote:
>
> > hmm.. try increasing number of faces in a sphere? (if that's what i
> > suppose it is)
>
> > On Dec 21, 3:02 pm, Darcey Lloyd <[email protected]> wrote:
>
> > > Not much to go on there, maybe if you show us your code people will / be
> > > able to help more.
>
> > > On 21 December 2010 11:15, xcx <[email protected]> wrote:
>
> > > > And it says Loading but it doesn't really try to load anything :), but
> > > > you should see some flickering on sphere.